|
|
<!DOCTYPE html>
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
|
|
|
<head>
|
|
|
<meta charset="utf-8" />
|
|
|
<meta name="generator" content="pandoc" />
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
|
<title>XAUUSD_Trading_AI_Paper</title>
|
|
|
<style>
|
|
|
|
|
|
code{white-space: pre-wrap;}
|
|
|
span.smallcaps{font-variant: small-caps;}
|
|
|
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
|
div.column{flex: auto; overflow-x: auto;}
|
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
|
|
|
|
ul.task-list[class]{list-style: none;}
|
|
|
ul.task-list li input[type="checkbox"] {
|
|
|
font-size: inherit;
|
|
|
width: 0.8em;
|
|
|
margin: 0 0.8em 0.2em -1.6em;
|
|
|
vertical-align: middle;
|
|
|
}
|
|
|
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
|
|
|
|
html { -webkit-text-size-adjust: 100%; }
|
|
|
pre > code.sourceCode { white-space: pre; position: relative; }
|
|
|
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
|
|
pre > code.sourceCode > span:empty { height: 1.2em; }
|
|
|
.sourceCode { overflow: visible; }
|
|
|
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
|
|
div.sourceCode { margin: 1em 0; }
|
|
|
pre.sourceCode { margin: 0; }
|
|
|
@media screen {
|
|
|
div.sourceCode { overflow: auto; }
|
|
|
}
|
|
|
@media print {
|
|
|
pre > code.sourceCode { white-space: pre-wrap; }
|
|
|
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
|
|
}
|
|
|
pre.numberSource code
|
|
|
{ counter-reset: source-line 0; }
|
|
|
pre.numberSource code > span
|
|
|
{ position: relative; left: -4em; counter-increment: source-line; }
|
|
|
pre.numberSource code > span > a:first-child::before
|
|
|
{ content: counter(source-line);
|
|
|
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
|
|
border: none; display: inline-block;
|
|
|
-webkit-touch-callout: none; -webkit-user-select: none;
|
|
|
-khtml-user-select: none; -moz-user-select: none;
|
|
|
-ms-user-select: none; user-select: none;
|
|
|
padding: 0 4px; width: 4em;
|
|
|
color: #aaaaaa;
|
|
|
}
|
|
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
|
|
div.sourceCode
|
|
|
{ }
|
|
|
@media screen {
|
|
|
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
|
|
}
|
|
|
code span.al { color: #ff0000; font-weight: bold; }
|
|
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
code span.at { color: #7d9029; }
|
|
|
code span.bn { color: #40a070; }
|
|
|
code span.bu { color: #008000; }
|
|
|
code span.cf { color: #007020; font-weight: bold; }
|
|
|
code span.ch { color: #4070a0; }
|
|
|
code span.cn { color: #880000; }
|
|
|
code span.co { color: #60a0b0; font-style: italic; }
|
|
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
code span.do { color: #ba2121; font-style: italic; }
|
|
|
code span.dt { color: #902000; }
|
|
|
code span.dv { color: #40a070; }
|
|
|
code span.er { color: #ff0000; font-weight: bold; }
|
|
|
code span.ex { }
|
|
|
code span.fl { color: #40a070; }
|
|
|
code span.fu { color: #06287e; }
|
|
|
code span.im { color: #008000; font-weight: bold; }
|
|
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
code span.kw { color: #007020; font-weight: bold; }
|
|
|
code span.op { color: #666666; }
|
|
|
code span.ot { color: #007020; }
|
|
|
code span.pp { color: #bc7a00; }
|
|
|
code span.sc { color: #4070a0; }
|
|
|
code span.ss { color: #bb6688; }
|
|
|
code span.st { color: #4070a0; }
|
|
|
code span.va { color: #19177c; }
|
|
|
code span.vs { color: #4070a0; }
|
|
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; }
|
|
|
</style>
|
|
|
<link href="data:text/css; charset=utf-8;charset=utf-8,%0A%2Emarkdown%2Dbody%7B%2D%2Dbase%2Dsize%2D4%3A0%2E25rem%3B%2D%2Dbase%2Dsize%2D8%3A0%2E5rem%3B%2D%2Dbase%2Dsize%2D16%3A1rem%3B%2D%2Dbase%2Dsize%2D24%3A1%2E5rem%3B%2D%2Dbase%2Dsize%2D40%3A2%2E5rem%3B%2D%2Dbase%2Dtext%2Dweight%2Dnormal%3A400%3B%2D%2Dbase%2Dtext%2Dweight%2Dmedium%3A500%3B%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%3A600%3B%2D%2DfontStack%2Dmonospace%3Aui%2Dmonospace%2CSFMono%2DRegular%2CSF%20Mono%2CMenlo%2CConsolas%2CLiberation%20Mono%2Cmonospace%3B%2D%2DfgColor%2Daccent%3AHighlight%7D%40media%20%28prefers%2Dcolor%2Dscheme%3Adark%29%7B%2Emarkdown%2Dbody%2C%5Bdata%2Dtheme%3Ddark%5D%7Bcolor%2Dscheme%3Adark%3B%2D%2Dfocus%2DoutlineColor%3A%231f6feb%3B%2D%2DfgColor%2Ddefault%3A%23f0f6fc%3B%2D%2DfgColor%2Dmuted%3A%239198a1%3B%2D%2DfgColor%2Daccent%3A%234493f8%3B%2D%2DfgColor%2Dsuccess%3A%233fb950%3B%2D%2DfgColor%2Dattention%3A%23d29922%3B%2D%2DfgColor%2Ddanger%3A%23f85149%3B%2D%2DfgColor%2Ddone%3A%23ab7df8%3B%2D%2DbgColor%2Ddefault%3A%230d1117%3B%2D%2DbgColor%2Dmuted%3A%23151b23%3B%2D%2DbgColor%2Dneutral%2Dmuted%3A%23656c7633%3B%2D%2DbgColor%2Dattention%2Dmuted%3A%23bb800926%3B%2D%2DborderColor%2Ddefault%3A%233d444d%3B%2D%2DborderColor%2Dmuted%3A%233d444db3%3B%2D%2DborderColor%2Dneutral%2Dmuted%3A%233d444db3%3B%2D%2DborderColor%2Daccent%2Demphasis%3A%231f6feb%3B%2D%2DborderColor%2Dsuccess%2Demphasis%3A%23238636%3B%2D%2DborderColor%2Dattention%2Demphasis%3A%239e6a03%3B%2D%2DborderColor%2Ddanger%2Demphasis%3A%23da3633%3B%2D%2DborderColor%2Ddone%2Demphasis%3A%238957e5%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcomment%3A%239198a1%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%3A%2379c0ff%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%2Dother%2Dreference%2Dlink%3A%23a5d6ff%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%3A%23d2a8ff%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstorage%2Dmodifier%2Dimport%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%2Dtag%3A%237ee787%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dkeyword%3A%23ff7b72%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%3A%23a5d6ff%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dvariable%3A%23ffa657%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dunmatched%3A%23f85149%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dangle%3A%239198a1%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dtext%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dbg%3A%238e1519%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dtext%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dbg%3A%23b62324%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%2Dregexp%3A%237ee787%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dlist%3A%23f2cc60%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dheading%3A%231f6feb%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ditalic%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dbold%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dtext%3A%23ffdcd7%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dbg%3A%2367060c%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dtext%3A%23aff5b4%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dbg%3A%23033a16%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dtext%3A%23ffdfb6%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dbg%3A%235a1e02%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dtext%3A%23f0f6fc%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dbg%3A%231158c7%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmeta%2Ddiff%2Drange%3A%23d2a8ff%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dsublimelinter%2Dgutter%2Dmark%3A%233d444d%7D%7D%40media%20%28prefers%2Dcolor%2Dscheme%3Alight%29%7B%2Emarkdown%2Dbody%2C%5Bdata%2Dtheme%3Dlight%5D%7Bcolor%2Dscheme%3Alight%3B%2D%2Dfocus%2DoutlineColor%3A%230969da%3B%2D%2DfgColor%2Ddefault%3A%231f2328%3B%2D%2DfgColor%2Dmuted%3A%2359636e%3B%2D%2DfgColor%2Daccent%3A%230969da%3B%2D%2DfgColor%2Dsuccess%3A%231a7f37%3B%2D%2DfgColor%2Dattention%3A%239a6700%3B%2D%2DfgColor%2Ddanger%3A%23d1242f%3B%2D%2DfgColor%2Ddone%3A%238250df%3B%2D%2DbgColor%2Ddefault%3A%23ffffff%3B%2D%2DbgColor%2Dmuted%3A%23f6f8fa%3B%2D%2DbgColor%2Dneutral%2Dmuted%3A%23818b981f%3B%2D%2DbgColor%2Dattention%2Dmuted%3A%23fff8c5%3B%2D%2DborderColor%2Ddefault%3A%23d1d9e0%3B%2D%2DborderColor%2Dmuted%3A%23d1d9e0b3%3B%2D%2DborderColor%2Dneutral%2Dmuted%3A%23d1d9e0b3%3B%2D%2DborderColor%2Daccent%2Demphasis%3A%230969da%3B%2D%2DborderColor%2Dsuccess%2Demphasis%3A%231a7f37%3B%2D%2DborderColor%2Dattention%2Demphasis%3A%239a6700%3B%2D%2DborderColor%2Ddanger%2Demphasis%3A%23cf222e%3B%2D%2DborderColor%2Ddone%2Demphasis%3A%238250df%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcomment%3A%2359636e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%3A%230550ae%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%2Dother%2Dreference%2Dlink%3A%230a3069%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%3A%236639ba%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstorage%2Dmodifier%2Dimport%3A%231f2328%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%2Dtag%3A%230550ae%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dkeyword%3A%23cf222e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%3A%230a3069%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dvariable%3A%23953800%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dunmatched%3A%2382071e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dangle%3A%2359636e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dtext%3A%23f6f8fa%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dbg%3A%2382071e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dtext%3A%23f6f8fa%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dbg%3A%23cf222e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%2Dregexp%3A%23116329%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dlist%3A%233b2300%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dheading%3A%230550ae%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ditalic%3A%231f2328%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dbold%3A%231f2328%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dtext%3A%2382071e%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dbg%3A%23ffebe9%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dtext%3A%23116329%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dbg%3A%23dafbe1%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dtext%3A%23953800%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dbg%3A%23ffd8b5%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dtext%3A%23d1d9e0%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dbg%3A%230550ae%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmeta%2Ddiff%2Drange%3A%238250df%3B%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dsublimelinter%2Dgutter%2Dmark%3A%23818b98%7D%7D%2Emarkdown%2Dbody%7B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%3Bmargin%3A0%3Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%3Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Ddefault%29%3Bfont%2Dfamily%3A%2Dapple%2Dsystem%2CBlinkMacSystemFont%2C%22Segoe%20UI%22%2C%22Noto%20Sans%22%2CHelvetica%2CArial%2Csans%2Dserif%2C%22Apple%20Color%20Emoji%22%2C%22Segoe%20UI%20Emoji%22%3Bfont%2Dsize%3A16px%3Bline%2Dheight%3A1%2E5%3Bword%2Dwrap%3Abreak%2Dword%7D%2Emarkdown%2Dbody%20%2Eocticon%7Bdisplay%3Ainline%2Dblock%3Bfill%3AcurrentColor%3Bvertical%2Dalign%3Atext%2Dbottom%7D%2Emarkdown%2Dbody%20h1%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%2C%2Emarkdown%2Dbody%20h2%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%2C%2Emarkdown%2Dbody%20h3%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%2C%2Emarkdown%2Dbody%20h4%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%2C%2Emarkdown%2Dbody%20h5%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%2C%2Emarkdown%2Dbody%20h6%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%3Abefore%7Bwidth%3A16px%3Bheight%3A16px%3Bcontent%3A%27%20%27%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dcolor%3AcurrentColor%3B%2Dwebkit%2Dmask%2Dimage%3Aurl%28%22data%3Aimage%2Fsvg%2Bxml%2C%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20version%3D%271%2E1%27%20aria%2Dhidden%3D%27true%27%3E%3Cpath%20fill%2Drule%3D%27evenodd%27%20d%3D%27M7%2E775%203%2E275a%2E75%2E75%200%20001%2E06%201%2E06l1%2E25%2D1%2E25a2%202%200%20112%2E83%202%2E83l%2D2%2E5%202%2E5a2%202%200%2001%2D2%2E83%200%20%2E75%2E75%200%2000%2D1%2E06%201%2E06%203%2E5%203%2E5%200%20004%2E95%200l2%2E5%2D2%2E5a3%2E5%203%2E5%200%2000%2D4%2E95%2D4%2E95l%2D1%2E25%201%2E25zm%2D4%2E69%209%2E64a2%202%200%20010%2D2%2E83l2%2E5%2D2%2E5a2%202%200%20012%2E83%200%20%2E75%2E75%200%20001%2E06%2D1%2E06%203%2E5%203%2E5%200%2000%2D4%2E95%200l%2D2%2E5%202%2E5a3%2E5%203%2E5%200%20004%2E95%204%2E95l1%2E25%2D1%2E25a%2E75%2E75%200%2000%2D1%2E06%2D1%2E06l%2D1%2E25%201%2E25a2%202%200%2001%2D2%2E83%200z%27%3E%3C%2Fpath%3E%3C%2Fsvg%3E%22%29%3Bmask%2Dimage%3Aurl%28%22data%3Aimage%2Fsvg%2Bxml%2C%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%20version%3D%271%2E1%27%20aria%2Dhidden%3D%27true%27%3E%3Cpath%20fill%2Drule%3D%27evenodd%27%20d%3D%27M7%2E775%203%2E275a%2E75%2E75%200%20001%2E06%201%2E06l1%2E25%2D1%2E25a2%202%200%20112%2E83%202%2E83l%2D2%2E5%202%2E5a2%202%200%2001%2D2%2E83%200%20%2E75%2E75%200%2000%2D1%2E06%201%2E06%203%2E5%203%2E5%200%20004%2E95%200l2%2E5%2D2%2E5a3%2E5%203%2E5%200%2000%2D4%2E95%2D4%2E95l%2D1%2E25%201%2E25zm%2D4%2E69%209%2E64a2%202%200%20010%2D2%2E83l2%2E5%2D2%2E5a2%202%200%20012%2E83%200%20%2E75%2E75%200%20001%2E06%2D1%2E06%203%2E5%203%2E5%200%2000%2D4%2E95%200l%2D2%2E5%202%2E5a3%2E5%203%2E5%200%20004%2E95%204%2E95l1%2E25%2D1%2E25a%2E75%2E75%200%2000%2D1%2E06%2D1%2E06l%2D1%2E25%201%2E25a2%202%200%2001%2D2%2E83%200z%27%3E%3C%2Fpath%3E%3C%2Fsvg%3E%22%29%7D%2Emarkdown%2Dbody%20details%2C%2Emarkdown%2Dbody%20figcaption%2C%2Emarkdown%2Dbody%20figure%7Bdisplay%3Ablock%7D%2Emarkdown%2Dbody%20summary%7Bdisplay%3Alist%2Ditem%7D%2Emarkdown%2Dbody%20%5Bhidden%5D%7Bdisplay%3Anone%21important%7D%2Emarkdown%2Dbody%20a%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3Avar%28%2D%2DfgColor%2Daccent%29%3Btext%2Ddecoration%3Anone%7D%2Emarkdown%2Dbody%20abbr%5Btitle%5D%7Bborder%2Dbottom%3Anone%3B%2Dwebkit%2Dtext%2Ddecoration%3Aunderline%20dotted%3Btext%2Ddecoration%3Aunderline%20dotted%7D%2Emarkdown%2Dbody%20b%2C%2Emarkdown%2Dbody%20strong%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%7D%2Emarkdown%2Dbody%20dfn%7Bfont%2Dstyle%3Aitalic%7D%2Emarkdown%2Dbody%20h1%7Bmargin%3A%2E67em%200%3Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bpadding%2Dbottom%3A%2E3em%3Bfont%2Dsize%3A2em%3Bborder%2Dbottom%3A1px%20solid%20var%28%2D%2DborderColor%2Dmuted%29%7D%2Emarkdown%2Dbody%20mark%7Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Dattention%2Dmuted%29%3Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20small%7Bfont%2Dsize%3A90%25%7D%2Emarkdown%2Dbody%20sub%2C%2Emarkdown%2Dbody%20sup%7Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bposition%3Arelative%3Bvertical%2Dalign%3Abaseline%7D%2Emarkdown%2Dbody%20sub%7Bbottom%3A%2D%2E25em%7D%2Emarkdown%2Dbody%20sup%7Btop%3A%2D%2E5em%7D%2Emarkdown%2Dbody%20img%7Bborder%2Dstyle%3Anone%3Bmax%2Dwidth%3A100%25%3Bbox%2Dsizing%3Acontent%2Dbox%7D%2Emarkdown%2Dbody%20code%2C%2Emarkdown%2Dbody%20kbd%2C%2Emarkdown%2Dbody%20pre%2C%2Emarkdown%2Dbody%20samp%7Bfont%2Dfamily%3Amonospace%3Bfont%2Dsize%3A1em%7D%2Emarkdown%2Dbody%20figure%7Bmargin%3A1em%20var%28%2D%2Dbase%2Dsize%2D40%29%7D%2Emarkdown%2Dbody%20hr%7Bbox%2Dsizing%3Acontent%2Dbox%3Boverflow%3Ahidden%3Bbackground%3A0%200%3Bborder%2Dbottom%3A1px%20solid%20var%28%2D%2DborderColor%2Dmuted%29%3Bheight%3A%2E25em%3Bpadding%3A0%3Bmargin%3Avar%28%2D%2Dbase%2Dsize%2D24%29%200%3Bbackground%2Dcolor%3Avar%28%2D%2DborderColor%2Ddefault%29%3Bborder%3A0%7D%2Emarkdown%2Dbody%20input%7Bfont%3Ainherit%3Bmargin%3A0%3Boverflow%3Avisible%3Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7D%2Emarkdown%2Dbody%20%5Btype%3Dbutton%5D%2C%2Emarkdown%2Dbody%20%5Btype%3Dreset%5D%2C%2Emarkdown%2Dbody%20%5Btype%3Dsubmit%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bappearance%3Abutton%7D%2Emarkdown%2Dbody%20%5Btype%3Dcheckbox%5D%2C%2Emarkdown%2Dbody%20%5Btype%3Dradio%5D%7Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7D%2Emarkdown%2Dbody%20%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2C%2Emarkdown%2Dbody%20%5Btype%3Dnumber%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7D%2Emarkdown%2Dbody%20%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2C%2Emarkdown%2Dbody%20%5Btype%3Dsearch%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%3Bappearance%3Anone%7D%2Emarkdown%2Dbody%20%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3Ainherit%3Bopacity%3A%2E54%7D%2Emarkdown%2Dbody%20%3A%3A%2Dwebkit%2Dfile%2Dupload%2Dbutton%7B%2Dwebkit%2Dappearance%3Abutton%3Bappearance%3Abutton%3Bfont%3Ainherit%7D%2Emarkdown%2Dbody%20a%3Ahover%7Btext%2Ddecoration%3Aunderline%7D%2Emarkdown%2Dbody%20%3A%3Aplaceholder%7Bcolor%3Avar%28%2D%2DfgColor%2Dmuted%29%3Bopacity%3A1%7D%2Emarkdown%2Dbody%20hr%3A%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%2Emarkdown%2Dbody%20hr%3A%3Aafter%7Bdisplay%3Atable%3Bclear%3Aboth%3Bcontent%3A%22%22%7D%2Emarkdown%2Dbody%20table%7Bborder%2Dspacing%3A0%3Bborder%2Dcollapse%3Acollapse%3Bdisplay%3Ablock%3Bwidth%3Amax%2Dcontent%3Bmax%2Dwidth%3A100%25%3Boverflow%3Aauto%3Bfont%2Dvariant%3Atabular%2Dnums%7D%2Emarkdown%2Dbody%20td%2C%2Emarkdown%2Dbody%20th%7Bpadding%3A0%7D%2Emarkdown%2Dbody%20details%20summary%7Bcursor%3Apointer%7D%2Emarkdown%2Dbody%20%5Brole%3Dbutton%5D%3Afocus%2C%2Emarkdown%2Dbody%20a%3Afocus%2C%2Emarkdown%2Dbody%20input%5Btype%3Dcheckbox%5D%3Afocus%2C%2Emarkdown%2Dbody%20input%5Btype%3Dradio%5D%3Afocus%7Boutline%3A2px%20solid%20var%28%2D%2Dfocus%2DoutlineColor%29%3Boutline%2Doffset%3A%2D2px%3Bbox%2Dshadow%3Anone%7D%2Emarkdown%2Dbody%20%5Brole%3Dbutton%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20a%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20input%5Btype%3Dcheckbox%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20input%5Btype%3Dradio%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%7Boutline%3Asolid%201px%20transparent%7D%2Emarkdown%2Dbody%20%5Brole%3Dbutton%5D%3Afocus%2Dvisible%2C%2Emarkdown%2Dbody%20a%3Afocus%2Dvisible%2C%2Emarkdown%2Dbody%20input%5Btype%3Dcheckbox%5D%3Afocus%2Dvisible%2C%2Emarkdown%2Dbody%20input%5Btype%3Dradio%5D%3Afocus%2Dvisible%7Boutline%3A2px%20solid%20var%28%2D%2Dfocus%2DoutlineColor%29%3Boutline%2Doffset%3A%2D2px%3Bbox%2Dshadow%3Anone%7D%2Emarkdown%2Dbody%20a%3Anot%28%5Bclass%5D%29%3Afocus%2C%2Emarkdown%2Dbody%20a%3Anot%28%5Bclass%5D%29%3Afocus%2Dvisible%2C%2Emarkdown%2Dbody%20input%5Btype%3Dcheckbox%5D%3Afocus%2C%2Emarkdown%2Dbody%20input%5Btype%3Dcheckbox%5D%3Afocus%2Dvisible%2C%2Emarkdown%2Dbody%20input%5Btype%3Dradio%5D%3Afocus%2C%2Emarkdown%2Dbody%20input%5Btype%3Dradio%5D%3Afocus%2Dvisible%7Boutline%2Doffset%3A0%7D%2Emarkdown%2Dbody%20kbd%7Bdisplay%3Ainline%2Dblock%3Bpadding%3Avar%28%2D%2Dbase%2Dsize%2D4%29%3Bfont%3A11px%20var%28%2D%2DfontStack%2Dmonospace%2C%20ui%2Dmonospace%2C%20SFMono%2DRegular%2C%20SF%20Mono%2C%20Menlo%2C%20Consolas%2C%20Liberation%20Mono%2C%20monospace%29%3Bline%2Dheight%3A10px%3Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%3Bvertical%2Dalign%3Amiddle%3Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Dmuted%29%3Bborder%3Asolid%201px%20var%28%2D%2DborderColor%2Dneutral%2Dmuted%29%3Bborder%2Dbottom%2Dcolor%3Avar%28%2D%2DborderColor%2Dneutral%2Dmuted%29%3Bborder%2Dradius%3A6px%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20var%28%2D%2DborderColor%2Dneutral%2Dmuted%29%7D%2Emarkdown%2Dbody%20h1%2C%2Emarkdown%2Dbody%20h2%2C%2Emarkdown%2Dbody%20h3%2C%2Emarkdown%2Dbody%20h4%2C%2Emarkdown%2Dbody%20h5%2C%2Emarkdown%2Dbody%20h6%7Bmargin%2Dtop%3Avar%28%2D%2Dbase%2Dsize%2D24%29%3Bmargin%2Dbottom%3Avar%28%2D%2Dbase%2Dsize%2D16%29%3Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bline%2Dheight%3A1%2E25%7D%2Emarkdown%2Dbody%20h2%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bpadding%2Dbottom%3A%2E3em%3Bfont%2Dsize%3A1%2E5em%3Bborder%2Dbottom%3A1px%20solid%20var%28%2D%2DborderColor%2Dmuted%29%7D%2Emarkdown%2Dbody%20h3%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bfont%2Dsize%3A1%2E25em%7D%2Emarkdown%2Dbody%20h4%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bfont%2Dsize%3A1em%7D%2Emarkdown%2Dbody%20h5%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bfont%2Dsize%3A%2E875em%7D%2Emarkdown%2Dbody%20h6%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bfont%2Dsize%3A%2E85em%3Bcolor%3Avar%28%2D%2DfgColor%2Dmuted%29%7D%2Emarkdown%2Dbody%20p%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7D%2Emarkdown%2Dbody%20blockquote%7Bmargin%3A0%3Bpadding%3A0%201em%3Bcolor%3Avar%28%2D%2DfgColor%2Dmuted%29%3Bborder%2Dleft%3A%2E25em%20solid%20var%28%2D%2DborderColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20ol%2C%2Emarkdown%2Dbody%20ul%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bpadding%2Dleft%3A2em%7D%2Emarkdown%2Dbody%20ol%20ol%2C%2Emarkdown%2Dbody%20ul%20ol%7Blist%2Dstyle%2Dtype%3Alower%2Droman%7D%2Emarkdown%2Dbody%20ol%20ol%20ol%2C%2Emarkdown%2Dbody%20ol%20ul%20ol%2C%2Emarkdown%2Dbody%20ul%20ol%20ol%2C%2Emarkdown%2Dbody%20ul%20ul%20ol%7Blist%2Dstyle%2Dtype%3Alower%2Dalpha%7D%2Emarkdown%2Dbody%20dd%7Bmargin%2Dleft%3A0%7D%2Emarkdown%2Dbody%20code%2C%2Emarkdown%2Dbody%20samp%2C%2Emarkdown%2Dbody%20tt%7Bfont%2Dfamily%3Avar%28%2D%2DfontStack%2Dmonospace%2C%20ui%2Dmonospace%2C%20SFMono%2DRegular%2C%20SF%20Mono%2C%20Menlo%2C%20Consolas%2C%20Liberation%20Mono%2C%20monospace%29%3Bfont%2Dsize%3A12px%7D%2Emarkdown%2Dbody%20pre%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dfamily%3Avar%28%2D%2DfontStack%2Dmonospace%2C%20ui%2Dmonospace%2C%20SFMono%2DRegular%2C%20SF%20Mono%2C%20Menlo%2C%20Consolas%2C%20Liberation%20Mono%2C%20monospace%29%3Bfont%2Dsize%3A12px%3Bword%2Dwrap%3Anormal%7D%2Emarkdown%2Dbody%20%2Eocticon%7Bdisplay%3Ainline%2Dblock%3Boverflow%3Avisible%21important%3Bvertical%2Dalign%3Atext%2Dbottom%3Bfill%3AcurrentColor%7D%2Emarkdown%2Dbody%20input%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2C%2Emarkdown%2Dbody%20input%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bmargin%3A0%3Bappearance%3Anone%7D%2Emarkdown%2Dbody%20%2Emr%2D2%7Bmargin%2Dright%3Avar%28%2D%2Dbase%2Dsize%2D8%2C8px%29%21important%7D%2Emarkdown%2Dbody%3A%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%2Emarkdown%2Dbody%3A%3Aafter%7Bdisplay%3Atable%3Bclear%3Aboth%3Bcontent%3A%22%22%7D%2Emarkdown%2Dbody%3E%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%21important%7D%2Emarkdown%2Dbody%3E%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%21important%7D%2Emarkdown%2Dbody%20a%3Anot%28%5Bhref%5D%29%7Bcolor%3Ainherit%3Btext%2Ddecoration%3Anone%7D%2Emarkdown%2Dbody%20%2Eabsent%7Bcolor%3Avar%28%2D%2DfgColor%2Ddanger%29%7D%2Emarkdown%2Dbody%20%2Eanchor%7Bfloat%3Aleft%3Bpadding%2Dright%3Avar%28%2D%2Dbase%2Dsize%2D4%29%3Bmargin%2Dleft%3A%2D20px%3Bline%2Dheight%3A1%7D%2Emarkdown%2Dbody%20%2Eanchor%3Afocus%7Boutline%3A0%7D%2Emarkdown%2Dbody%20blockquote%2C%2Emarkdown%2Dbody%20details%2C%2Emarkdown%2Dbody%20dl%2C%2Emarkdown%2Dbody%20ol%2C%2Emarkdown%2Dbody%20p%2C%2Emarkdown%2Dbody%20pre%2C%2Emarkdown%2Dbody%20table%2C%2Emarkdown%2Dbody%20ul%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20blockquote%3E%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emarkdown%2Dbody%20blockquote%3E%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%2Emarkdown%2Dbody%20h1%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h2%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h3%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h4%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h5%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h6%20%2Eocticon%2Dlink%7Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%3Bvertical%2Dalign%3Amiddle%3Bvisibility%3Ahidden%7D%2Emarkdown%2Dbody%20h1%3Ahover%20%2Eanchor%2C%2Emarkdown%2Dbody%20h2%3Ahover%20%2Eanchor%2C%2Emarkdown%2Dbody%20h3%3Ahover%20%2Eanchor%2C%2Emarkdown%2Dbody%20h4%3Ahover%20%2Eanchor%2C%2Emarkdown%2Dbody%20h5%3Ahover%20%2Eanchor%2C%2Emarkdown%2Dbody%20h6%3Ahover%20%2Eanchor%7Btext%2Ddecoration%3Anone%7D%2Emarkdown%2Dbody%20h1%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h2%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h3%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h4%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h5%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%2C%2Emarkdown%2Dbody%20h6%3Ahover%20%2Eanchor%20%2Eocticon%2Dlink%7Bvisibility%3Avisible%7D%2Emarkdown%2Dbody%20h1%20code%2C%2Emarkdown%2Dbody%20h1%20tt%2C%2Emarkdown%2Dbody%20h2%20code%2C%2Emarkdown%2Dbody%20h2%20tt%2C%2Emarkdown%2Dbody%20h3%20code%2C%2Emarkdown%2Dbody%20h3%20tt%2C%2Emarkdown%2Dbody%20h4%20code%2C%2Emarkdown%2Dbody%20h4%20tt%2C%2Emarkdown%2Dbody%20h5%20code%2C%2Emarkdown%2Dbody%20h5%20tt%2C%2Emarkdown%2Dbody%20h6%20code%2C%2Emarkdown%2Dbody%20h6%20tt%7Bpadding%3A0%20%2E2em%3Bfont%2Dsize%3Ainherit%7D%2Emarkdown%2Dbody%20summary%20h1%2C%2Emarkdown%2Dbody%20summary%20h2%2C%2Emarkdown%2Dbody%20summary%20h3%2C%2Emarkdown%2Dbody%20summary%20h4%2C%2Emarkdown%2Dbody%20summary%20h5%2C%2Emarkdown%2Dbody%20summary%20h6%7Bdisplay%3Ainline%2Dblock%7D%2Emarkdown%2Dbody%20summary%20h1%20%2Eanchor%2C%2Emarkdown%2Dbody%20summary%20h2%20%2Eanchor%2C%2Emarkdown%2Dbody%20summary%20h3%20%2Eanchor%2C%2Emarkdown%2Dbody%20summary%20h4%20%2Eanchor%2C%2Emarkdown%2Dbody%20summary%20h5%20%2Eanchor%2C%2Emarkdown%2Dbody%20summary%20h6%20%2Eanchor%7Bmargin%2Dleft%3A%2D40px%7D%2Emarkdown%2Dbody%20summary%20h1%2C%2Emarkdown%2Dbody%20summary%20h2%7Bpadding%2Dbottom%3A0%3Bborder%2Dbottom%3A0%7D%2Emarkdown%2Dbody%20ol%2Eno%2Dlist%2C%2Emarkdown%2Dbody%20ul%2Eno%2Dlist%7Bpadding%3A0%3Blist%2Dstyle%2Dtype%3Anone%7D%2Emarkdown%2Dbody%20ol%5Btype%3D%22a%20s%22%5D%7Blist%2Dstyle%2Dtype%3Alower%2Dalpha%7D%2Emarkdown%2Dbody%20ol%5Btype%3D%22A%20s%22%5D%7Blist%2Dstyle%2Dtype%3Aupper%2Dalpha%7D%2Emarkdown%2Dbody%20ol%5Btype%3D%22i%20s%22%5D%7Blist%2Dstyle%2Dtype%3Alower%2Droman%7D%2Emarkdown%2Dbody%20ol%5Btype%3D%22I%20s%22%5D%7Blist%2Dstyle%2Dtype%3Aupper%2Droman%7D%2Emarkdown%2Dbody%20ol%5Btype%3D%221%22%5D%7Blist%2Dstyle%2Dtype%3Adecimal%7D%2Emarkdown%2Dbody%20div%3Eol%3Anot%28%5Btype%5D%29%7Blist%2Dstyle%2Dtype%3Adecimal%7D%2Emarkdown%2Dbody%20ol%20ol%2C%2Emarkdown%2Dbody%20ol%20ul%2C%2Emarkdown%2Dbody%20ul%20ol%2C%2Emarkdown%2Dbody%20ul%20ul%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%7D%2Emarkdown%2Dbody%20li%3Ep%7Bmargin%2Dtop%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20li%2Bli%7Bmargin%2Dtop%3A%2E25em%7D%2Emarkdown%2Dbody%20dl%7Bpadding%3A0%7D%2Emarkdown%2Dbody%20dl%20dt%7Bpadding%3A0%3Bmargin%2Dtop%3Avar%28%2D%2Dbase%2Dsize%2D16%29%3Bfont%2Dsize%3A1em%3Bfont%2Dstyle%3Aitalic%3Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%7D%2Emarkdown%2Dbody%20dl%20dd%7Bpadding%3A0%20var%28%2D%2Dbase%2Dsize%2D16%29%3Bmargin%2Dbottom%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20table%20th%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%7D%2Emarkdown%2Dbody%20table%20td%2C%2Emarkdown%2Dbody%20table%20th%7Bpadding%3A6px%2013px%3Bborder%3A1px%20solid%20var%28%2D%2DborderColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20table%20td%3E%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%2Emarkdown%2Dbody%20table%20tr%7Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Ddefault%29%3Bborder%2Dtop%3A1px%20solid%20var%28%2D%2DborderColor%2Dmuted%29%7D%2Emarkdown%2Dbody%20table%20tr%3Anth%2Dchild%282n%29%7Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Dmuted%29%7D%2Emarkdown%2Dbody%20table%20img%7Bbackground%2Dcolor%3Atransparent%7D%2Emarkdown%2Dbody%20img%5Balign%3Dright%5D%7Bpadding%2Dleft%3A20px%7D%2Emarkdown%2Dbody%20img%5Balign%3Dleft%5D%7Bpadding%2Dright%3A20px%7D%2Emarkdown%2Dbody%20%2Eemoji%7Bmax%2Dwidth%3Anone%3Bvertical%2Dalign%3Atext%2Dtop%3Bbackground%2Dcolor%3Atransparent%7D%2Emarkdown%2Dbody%20span%2Eframe%7Bdisplay%3Ablock%3Boverflow%3Ahidden%7D%2Emarkdown%2Dbody%20span%2Eframe%3Espan%7Bdisplay%3Ablock%3Bfloat%3Aleft%3Bwidth%3Aauto%3Bpadding%3A7px%3Bmargin%3A13px%200%200%3Boverflow%3Ahidden%3Bborder%3A1px%20solid%20var%28%2D%2DborderColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20span%2Eframe%20span%20img%7Bdisplay%3Ablock%3Bfloat%3Aleft%7D%2Emarkdown%2Dbody%20span%2Eframe%20span%20span%7Bdisplay%3Ablock%3Bpadding%3A5px%200%200%3Bclear%3Aboth%3Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dcenter%7Bdisplay%3Ablock%3Boverflow%3Ahidden%3Bclear%3Aboth%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dcenter%3Espan%7Bdisplay%3Ablock%3Bmargin%3A13px%20auto%200%3Boverflow%3Ahidden%3Btext%2Dalign%3Acenter%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dcenter%20span%20img%7Bmargin%3A0%20auto%3Btext%2Dalign%3Acenter%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dright%7Bdisplay%3Ablock%3Boverflow%3Ahidden%3Bclear%3Aboth%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dright%3Espan%7Bdisplay%3Ablock%3Bmargin%3A13px%200%200%3Boverflow%3Ahidden%3Btext%2Dalign%3Aright%7D%2Emarkdown%2Dbody%20span%2Ealign%2Dright%20span%20img%7Bmargin%3A0%3Btext%2Dalign%3Aright%7D%2Emarkdown%2Dbody%20span%2Efloat%2Dleft%7Bdisplay%3Ablock%3Bfloat%3Aleft%3Bmargin%2Dright%3A13px%3Boverflow%3Ahidden%7D%2Emarkdown%2Dbody%20span%2Efloat%2Dleft%20span%7Bmargin%3A13px%200%200%7D%2Emarkdown%2Dbody%20span%2Efloat%2Dright%7Bdisplay%3Ablock%3Bfloat%3Aright%3Bmargin%2Dleft%3A13px%3Boverflow%3Ahidden%7D%2Emarkdown%2Dbody%20span%2Efloat%2Dright%3Espan%7Bdisplay%3Ablock%3Bmargin%3A13px%20auto%200%3Boverflow%3Ahidden%3Btext%2Dalign%3Aright%7D%2Emarkdown%2Dbody%20code%2C%2Emarkdown%2Dbody%20tt%7Bpadding%3A%2E2em%20%2E4em%3Bmargin%3A0%3Bfont%2Dsize%3A85%25%3Bwhite%2Dspace%3Abreak%2Dspaces%3Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Dneutral%2Dmuted%29%3Bborder%2Dradius%3A6px%7D%2Emarkdown%2Dbody%20code%20br%2C%2Emarkdown%2Dbody%20tt%20br%7Bdisplay%3Anone%7D%2Emarkdown%2Dbody%20del%20code%7Btext%2Ddecoration%3Ainherit%7D%2Emarkdown%2Dbody%20samp%7Bfont%2Dsize%3A85%25%7D%2Emarkdown%2Dbody%20pre%20code%7Bfont%2Dsize%3A100%25%7D%2Emarkdown%2Dbody%20pre%3Ecode%7Bpadding%3A0%3Bmargin%3A0%3Bword%2Dbreak%3Anormal%3Bwhite%2Dspace%3Apre%3Bbackground%3A0%200%3Bborder%3A0%7D%2Emarkdown%2Dbody%20%2Ehighlight%7Bmargin%2Dbottom%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20%2Ehighlight%20pre%7Bmargin%2Dbottom%3A0%3Bword%2Dbreak%3Anormal%7D%2Emarkdown%2Dbody%20%2Ehighlight%20pre%2C%2Emarkdown%2Dbody%20pre%7Bpadding%3Avar%28%2D%2Dbase%2Dsize%2D16%29%3Boverflow%3Aauto%3Bfont%2Dsize%3A85%25%3Bline%2Dheight%3A1%2E45%3Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%3Bbackground%2Dcolor%3Avar%28%2D%2DbgColor%2Dmuted%29%3Bborder%2Dradius%3A6px%7D%2Emarkdown%2Dbody%20pre%20code%2C%2Emarkdown%2Dbody%20pre%20tt%7Bdisplay%3Ainline%3Bmax%2Dwidth%3Aauto%3Bpadding%3A0%3Bmargin%3A0%3Boverflow%3Avisible%3Bline%2Dheight%3Ainherit%3Bword%2Dwrap%3Anormal%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Emarkdown%2Dbody%20%2Ecsv%2Ddata%20td%2C%2Emarkdown%2Dbody%20%2Ecsv%2Ddata%20th%7Bpadding%3A5px%3Boverflow%3Ahidden%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%3Btext%2Dalign%3Aleft%3Bwhite%2Dspace%3Anowrap%7D%2Emarkdown%2Dbody%20%2Ecsv%2Ddata%20%2Eblob%2Dnum%7Bpadding%3A10px%20var%28%2D%2Dbase%2Dsize%2D8%29%209px%3Btext%2Dalign%3Aright%3Bbackground%3Avar%28%2D%2DbgColor%2Ddefault%29%3Bborder%3A0%7D%2Emarkdown%2Dbody%20%2Ecsv%2Ddata%20tr%7Bborder%2Dtop%3A0%7D%2Emarkdown%2Dbody%20%2Ecsv%2Ddata%20th%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dsemibold%2C600%29%3Bbackground%3Avar%28%2D%2DbgColor%2Dmuted%29%3Bborder%2Dtop%3A0%7D%2Emarkdown%2Dbody%20%5Bdata%2Dfootnote%2Dref%5D%3A%3Abefore%7Bcontent%3A%22%5B%22%7D%2Emarkdown%2Dbody%20%5Bdata%2Dfootnote%2Dref%5D%3A%3Aafter%7Bcontent%3A%22%5D%22%7D%2Emarkdown%2Dbody%20%2Efootnotes%7Bfont%2Dsize%3A12px%3Bcolor%3Avar%28%2D%2DfgColor%2Dmuted%29%3Bborder%2Dtop%3A1px%20solid%20var%28%2D%2DborderColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20%2Efootnotes%20ol%7Bpadding%2Dleft%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20%2Efootnotes%20ol%20ul%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3Avar%28%2D%2Dbase%2Dsize%2D16%29%3Bmargin%2Dtop%3Avar%28%2D%2Dbase%2Dsize%2D16%29%7D%2Emarkdown%2Dbody%20%2Efootnotes%20li%7Bposition%3Arelative%7D%2Emarkdown%2Dbody%20%2Efootnotes%20li%3Atarget%3A%3Abefore%7Bposition%3Aabsolute%3Btop%3Acalc%28var%28%2D%2Dbase%2Dsize%2D8%29%2A%2D1%29%3Bright%3Acalc%28var%28%2D%2Dbase%2Dsize%2D8%29%2A%2D1%29%3Bbottom%3Acalc%28var%28%2D%2Dbase%2Dsize%2D8%29%2A%2D1%29%3Bleft%3Acalc%28var%28%2D%2Dbase%2Dsize%2D24%29%2A%2D1%29%3Bpointer%2Devents%3Anone%3Bcontent%3A%22%22%3Bborder%3A2px%20solid%20var%28%2D%2DborderColor%2Daccent%2Demphasis%29%3Bborder%2Dradius%3A6px%7D%2Emarkdown%2Dbody%20%2Efootnotes%20li%3Atarget%7Bcolor%3Avar%28%2D%2DfgColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20%2Efootnotes%20%2Edata%2Dfootnote%2Dbackref%20g%2Demoji%7Bfont%2Dfamily%3Amonospace%7D%2Emarkdown%2Dbody%20body%3Ahas%28%3Amodal%29%7Bpadding%2Dright%3Avar%28%2D%2Ddialog%2Dscrollgutter%29%21important%7D%2Emarkdown%2Dbody%20%2Epl%2Dc%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcomment%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dc1%2C%2Emarkdown%2Dbody%20%2Epl%2Ds%20%2Epl%2Dv%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%29%7D%2Emarkdown%2Dbody%20%2Epl%2De%2C%2Emarkdown%2Dbody%20%2Epl%2Den%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%29%7D%2Emarkdown%2Dbody%20%2Epl%2Ds%20%2Epl%2Ds1%2C%2Emarkdown%2Dbody%20%2Epl%2Dsmi%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstorage%2Dmodifier%2Dimport%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dent%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dentity%2Dtag%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dk%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dkeyword%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dpds%2C%2Emarkdown%2Dbody%20%2Epl%2Ds%2C%2Emarkdown%2Dbody%20%2Epl%2Ds%20%2Epl%2Dpse%20%2Epl%2Ds1%2C%2Emarkdown%2Dbody%20%2Epl%2Dsr%2C%2Emarkdown%2Dbody%20%2Epl%2Dsr%20%2Epl%2Dcce%2C%2Emarkdown%2Dbody%20%2Epl%2Dsr%20%2Epl%2Dsra%2C%2Emarkdown%2Dbody%20%2Epl%2Dsr%20%2Epl%2Dsre%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dsmw%2C%2Emarkdown%2Dbody%20%2Epl%2Dv%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dvariable%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dbu%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dunmatched%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dii%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dinvalid%2Dillegal%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dc2%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dcarriage%2Dreturn%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dsr%20%2Epl%2Dcce%7Bfont%2Dweight%3A700%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dstring%2Dregexp%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dml%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dlist%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmh%2C%2Emarkdown%2Dbody%20%2Epl%2Dmh%20%2Epl%2Den%2C%2Emarkdown%2Dbody%20%2Epl%2Dms%7Bfont%2Dweight%3A700%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dheading%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmi%7Bfont%2Dstyle%3Aitalic%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ditalic%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmb%7Bfont%2Dweight%3A700%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dbold%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmd%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Ddeleted%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmi1%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dinserted%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmc%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dchanged%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmi2%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dtext%29%3Bbackground%2Dcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmarkup%2Dignored%2Dbg%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dmdr%7Bfont%2Dweight%3A700%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dmeta%2Ddiff%2Drange%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dba%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dbrackethighlighter%2Dangle%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dsg%7Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dsublimelinter%2Dgutter%2Dmark%29%7D%2Emarkdown%2Dbody%20%2Epl%2Dcorl%7Btext%2Ddecoration%3Aunderline%3Bcolor%3Avar%28%2D%2Dcolor%2Dprettylights%2Dsyntax%2Dconstant%2Dother%2Dreference%2Dlink%29%7D%2Emarkdown%2Dbody%20%5Brole%3Dbutton%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20%5Brole%3Dtabpanel%5D%5Btabindex%3D%220%22%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20a%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20button%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20summary%3Afocus%3Anot%28%3Afocus%2Dvisible%29%7Boutline%3A0%3Bbox%2Dshadow%3Anone%7D%2Emarkdown%2Dbody%20%5Btabindex%3D%220%22%5D%3Afocus%3Anot%28%3Afocus%2Dvisible%29%2C%2Emarkdown%2Dbody%20details%2Ddialog%3Afocus%3Anot%28%3Afocus%2Dvisible%29%7Boutline%3A0%7D%2Emarkdown%2Dbody%20g%2Demoji%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A1ch%3Bfont%2Dfamily%3A%22Apple%20Color%20Emoji%22%2C%22Segoe%20UI%20Emoji%22%2C%22Segoe%20UI%20Symbol%22%3Bfont%2Dsize%3A1em%3Bfont%2Dstyle%3Anormal%21important%3Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dnormal%2C400%29%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3A%2D%2E075em%7D%2Emarkdown%2Dbody%20g%2Demoji%20img%7Bwidth%3A1em%3Bheight%3A1em%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%7Blist%2Dstyle%2Dtype%3Anone%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%20label%7Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dnormal%2C400%29%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%2Eenabled%20label%7Bcursor%3Apointer%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%2B%2Etask%2Dlist%2Ditem%7Bmargin%2Dtop%3Avar%28%2D%2Dbase%2Dsize%2D4%29%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%20%2Ehandle%7Bdisplay%3Anone%7D%2Emarkdown%2Dbody%20%2Etask%2Dlist%2Ditem%2Dcheckbox%7Bmargin%3A0%20%2E2em%20%2E25em%20%2D1%2E4em%3Bvertical%2Dalign%3Amiddle%7D%2Emarkdown%2Dbody%20ul%3Adir%28rtl%29%20%2Etask%2Dlist%2Ditem%2Dcheckbox%7Bmargin%3A0%20%2D1%2E6em%20%2E25em%20%2E2em%7D%2Emarkdown%2Dbody%20ol%3Adir%28rtl%29%20%2Etask%2Dlist%2Ditem%2Dcheckbox%7Bmargin%3A0%20%2D1%2E6em%20%2E25em%20%2E2em%7D%2Emarkdown%2Dbody%20%2Econtains%2Dtask%2Dlist%3Afocus%2Dwithin%20%2Etask%2Dlist%2Ditem%2Dconvert%2Dcontainer%2C%2Emarkdown%2Dbody%20%2Econtains%2Dtask%2Dlist%3Ahover%20%2Etask%2Dlist%2Ditem%2Dconvert%2Dcontainer%7Bdisplay%3Ablock%3Bwidth%3Aauto%3Bheight%3A24px%3Boverflow%3Avisible%3Bclip%3Aauto%7D%2Emarkdown%2Dbody%20%3A%3A%2Dwebkit%2Dcalendar%2Dpicker%2Dindicator%7Bfilter%3Ainvert%2850%25%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%7Bpadding%3Avar%28%2D%2Dbase%2Dsize%2D8%29%20var%28%2D%2Dbase%2Dsize%2D16%29%3Bmargin%2Dbottom%3Avar%28%2D%2Dbase%2Dsize%2D16%29%3Bcolor%3Ainherit%3Bborder%2Dleft%3A%2E25em%20solid%20var%28%2D%2DborderColor%2Ddefault%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%3E%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%3E%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%20%2Emarkdown%2Dalert%2Dtitle%7Bdisplay%3Aflex%3Bfont%2Dweight%3Avar%28%2D%2Dbase%2Dtext%2Dweight%2Dmedium%2C500%29%3Balign%2Ditems%3Acenter%3Bline%2Dheight%3A1%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dnote%7Bborder%2Dleft%2Dcolor%3Avar%28%2D%2DborderColor%2Daccent%2Demphasis%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dnote%20%2Emarkdown%2Dalert%2Dtitle%7Bcolor%3Avar%28%2D%2DfgColor%2Daccent%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dimportant%7Bborder%2Dleft%2Dcolor%3Avar%28%2D%2DborderColor%2Ddone%2Demphasis%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dimportant%20%2Emarkdown%2Dalert%2Dtitle%7Bcolor%3Avar%28%2D%2DfgColor%2Ddone%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dwarning%7Bborder%2Dleft%2Dcolor%3Avar%28%2D%2DborderColor%2Dattention%2Demphasis%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dwarning%20%2Emarkdown%2Dalert%2Dtitle%7Bcolor%3Avar%28%2D%2DfgColor%2Dattention%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dtip%7Bborder%2Dleft%2Dcolor%3Avar%28%2D%2DborderColor%2Dsuccess%2Demphasis%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dtip%20%2Emarkdown%2Dalert%2Dtitle%7Bcolor%3Avar%28%2D%2DfgColor%2Dsuccess%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dcaution%7Bborder%2Dleft%2Dcolor%3Avar%28%2D%2DborderColor%2Ddanger%2Demphasis%29%7D%2Emarkdown%2Dbody%20%2Emarkdown%2Dalert%2Emarkdown%2Dalert%2Dcaution%20%2Emarkdown%2Dalert%2Dtitle%7Bcolor%3Avar%28%2D%2DfgColor%2Ddanger%29%7D%2Emarkdown%2Dbody%3E%3Afirst%2Dchild%3E%2Eheading%2Delement%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%21important%7D%2Emarkdown%2Dbody%20%2Ehighlight%20pre%3Ahas%28%2B%2Ezeroclipboard%2Dcontainer%29%7Bmin%2Dheight%3A52px%7D%0A" rel="stylesheet" />
|
|
|
</head>
|
|
|
<body>
|
|
|
<nav id="TOC" role="doc-toc">
|
|
|
<ul>
|
|
|
<li><a href="#xauusd-trading-ai-a-machine-learning-approach-using-smart-money-concepts" id="toc-xauusd-trading-ai-a-machine-learning-approach-using-smart-money-concepts"><span class="toc-section-number">1</span> XAUUSD Trading AI: A Machine
|
|
|
Learning Approach Using Smart Money Concepts</a>
|
|
|
<ul>
|
|
|
<li><a href="#abstract" id="toc-abstract"><span class="toc-section-number">1.1</span> Abstract</a></li>
|
|
|
<li><a href="#introduction" id="toc-introduction"><span class="toc-section-number">1.2</span> 1. Introduction</a>
|
|
|
<ul>
|
|
|
<li><a href="#background" id="toc-background"><span class="toc-section-number">1.2.1</span> 1.1 Background</a></li>
|
|
|
<li><a href="#problem-statement" id="toc-problem-statement"><span class="toc-section-number">1.2.2</span> 1.2 Problem Statement</a></li>
|
|
|
<li><a href="#research-objectives" id="toc-research-objectives"><span class="toc-section-number">1.2.3</span> 1.3 Research Objectives</a></li>
|
|
|
<li><a href="#contributions" id="toc-contributions"><span class="toc-section-number">1.2.4</span> 1.4 Contributions</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#literature-review" id="toc-literature-review"><span class="toc-section-number">1.3</span> 2. Literature Review</a>
|
|
|
<ul>
|
|
|
<li><a href="#algorithmic-trading-in-fx-markets" id="toc-algorithmic-trading-in-fx-markets"><span class="toc-section-number">1.3.1</span> 2.1 Algorithmic Trading in FX
|
|
|
Markets</a></li>
|
|
|
<li><a href="#smart-money-concepts" id="toc-smart-money-concepts"><span class="toc-section-number">1.3.2</span> 2.2 Smart Money
|
|
|
Concepts</a></li>
|
|
|
<li><a href="#machine-learning-in-trading" id="toc-machine-learning-in-trading"><span class="toc-section-number">1.3.3</span> 2.3 Machine Learning in
|
|
|
Trading</a></li>
|
|
|
<li><a href="#gold-price-prediction" id="toc-gold-price-prediction"><span class="toc-section-number">1.3.4</span> 2.4 Gold Price
|
|
|
Prediction</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#methodology" id="toc-methodology"><span class="toc-section-number">1.4</span> 3. Methodology</a>
|
|
|
<ul>
|
|
|
<li><a href="#data-collection" id="toc-data-collection"><span class="toc-section-number">1.4.1</span> 3.1 Data Collection</a></li>
|
|
|
<li><a href="#feature-engineering" id="toc-feature-engineering"><span class="toc-section-number">1.4.2</span> 3.2 Feature Engineering</a></li>
|
|
|
<li><a href="#target-variable-construction" id="toc-target-variable-construction"><span class="toc-section-number">1.4.3</span> 3.3 Target Variable
|
|
|
Construction</a></li>
|
|
|
<li><a href="#model-development" id="toc-model-development"><span class="toc-section-number">1.4.4</span> 3.4 Model Development</a></li>
|
|
|
<li><a href="#backtesting-framework" id="toc-backtesting-framework"><span class="toc-section-number">1.4.5</span> 3.5 Backtesting
|
|
|
Framework</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#system-architecture-and-data-flow" id="toc-system-architecture-and-data-flow"><span class="toc-section-number">1.5</span> 4. System Architecture and Data
|
|
|
Flow</a>
|
|
|
<ul>
|
|
|
<li><a href="#dataset-flow-diagram" id="toc-dataset-flow-diagram"><span class="toc-section-number">1.5.1</span> 4.1 Dataset Flow
|
|
|
Diagram</a></li>
|
|
|
<li><a href="#model-architecture-diagram" id="toc-model-architecture-diagram"><span class="toc-section-number">1.5.2</span> 4.2 Model Architecture
|
|
|
Diagram</a></li>
|
|
|
<li><a href="#buysell-workflow-diagram" id="toc-buysell-workflow-diagram"><span class="toc-section-number">1.5.3</span> 4.3 Buy/Sell Workflow
|
|
|
Diagram</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#discussion" id="toc-discussion"><span class="toc-section-number">1.6</span> 7. Discussion</a>
|
|
|
<ul>
|
|
|
<li><a href="#position-sizing-and-risk-management" id="toc-position-sizing-and-risk-management"><span class="toc-section-number">1.6.1</span> 5.1 Position Sizing and Risk
|
|
|
Management</a></li>
|
|
|
<li><a href="#risk-adjusted-performance-metrics" id="toc-risk-adjusted-performance-metrics"><span class="toc-section-number">1.6.2</span> 5.2 Risk-Adjusted Performance
|
|
|
Metrics</a></li>
|
|
|
<li><a href="#advanced-smc-implementation-techniques" id="toc-advanced-smc-implementation-techniques"><span class="toc-section-number">1.6.3</span> 5.3 Advanced SMC Implementation
|
|
|
Techniques</a></li>
|
|
|
<li><a href="#ensemble-signal-confirmation-framework" id="toc-ensemble-signal-confirmation-framework"><span class="toc-section-number">1.6.4</span> 5.4 Ensemble Signal Confirmation
|
|
|
Framework</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#experimental-results" id="toc-experimental-results"><span class="toc-section-number">1.7</span> 6. Experimental Results</a>
|
|
|
<ul>
|
|
|
<li><a href="#model-performance" id="toc-model-performance"><span class="toc-section-number">1.7.1</span> 6.1 Model Performance</a></li>
|
|
|
<li><a href="#backtesting-results" id="toc-backtesting-results"><span class="toc-section-number">1.7.2</span> 6.2 Backtesting Results</a></li>
|
|
|
<li><a href="#robustness-analysis" id="toc-robustness-analysis"><span class="toc-section-number">1.7.3</span> 6.3 Robustness Analysis</a></li>
|
|
|
<li><a href="#performance-visualization" id="toc-performance-visualization"><span class="toc-section-number">1.7.4</span> 6.4 Performance
|
|
|
Visualization</a></li>
|
|
|
<li><a href="#key-findings" id="toc-key-findings"><span class="toc-section-number">1.7.5</span> 7.1 Key Findings</a></li>
|
|
|
<li><a href="#limitations" id="toc-limitations"><span class="toc-section-number">1.7.6</span> 7.2 Limitations</a></li>
|
|
|
<li><a href="#future-research-directions" id="toc-future-research-directions"><span class="toc-section-number">1.7.7</span> 7.3 Future Research
|
|
|
Directions</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#conclusion" id="toc-conclusion"><span class="toc-section-number">1.8</span> 8. Conclusion</a></li>
|
|
|
<li><a href="#acknowledgments" id="toc-acknowledgments"><span class="toc-section-number">1.9</span> Acknowledgments</a>
|
|
|
<ul>
|
|
|
<li><a href="#development" id="toc-development"><span class="toc-section-number">1.9.1</span> Development</a></li>
|
|
|
<li><a href="#declaration-of-competing-interests" id="toc-declaration-of-competing-interests"><span class="toc-section-number">1.9.2</span> Declaration of Competing
|
|
|
Interests</a></li>
|
|
|
<li><a href="#data-and-code-availability" id="toc-data-and-code-availability"><span class="toc-section-number">1.9.3</span> Data and Code
|
|
|
Availability</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#references" id="toc-references"><span class="toc-section-number">1.10</span> References</a></li>
|
|
|
<li><a href="#appendix-a-feature-definitions" id="toc-appendix-a-feature-definitions"><span class="toc-section-number">1.11</span> Appendix A: Feature
|
|
|
Definitions</a>
|
|
|
<ul>
|
|
|
<li><a href="#technical-indicators-1" id="toc-technical-indicators-1"><span class="toc-section-number">1.11.1</span> Technical Indicators</a></li>
|
|
|
<li><a href="#smc-features" id="toc-smc-features"><span class="toc-section-number">1.11.2</span> SMC Features</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#appendix-b-model-hyperparameters" id="toc-appendix-b-model-hyperparameters"><span class="toc-section-number">1.12</span> Appendix B: Model
|
|
|
Hyperparameters</a></li>
|
|
|
<li><a href="#appendix-c-backtesting-code-snippet" id="toc-appendix-c-backtesting-code-snippet"><span class="toc-section-number">1.13</span> Appendix C: Backtesting Code
|
|
|
Snippet</a></li>
|
|
|
</ul></li>
|
|
|
</ul>
|
|
|
</nav>
|
|
|
<h1 data-number="1" id="xauusd-trading-ai-a-machine-learning-approach-using-smart-money-concepts"><span class="header-section-number">1</span> XAUUSD Trading AI: A Machine
|
|
|
Learning Approach Using Smart Money Concepts</h1>
|
|
|
<p><strong>Author: Jonus Nattapong Tapachom</strong><br />
|
|
|
<strong>Date: September 18, 2025</strong></p>
|
|
|
<h2 data-number="1.1" id="abstract"><span class="header-section-number">1.1</span> Abstract</h2>
|
|
|
<p>This paper presents a comprehensive machine learning framework for
|
|
|
predicting XAUUSD (Gold vs US Dollar) price movements using Smart Money
|
|
|
Concepts (SMC) strategy elements. The proposed system achieves an 85.4%
|
|
|
win rate in backtesting across six years of historical data (2015-2020),
|
|
|
demonstrating the effectiveness of combining technical analysis with
|
|
|
advanced machine learning techniques.</p>
|
|
|
<p>The model utilizes XGBoost classification to predict 5-day ahead
|
|
|
price direction, incorporating 23 features including traditional
|
|
|
technical indicators (SMA, EMA, RSI, MACD, Bollinger Bands) and
|
|
|
SMC-specific features (Fair Value Gaps, Order Blocks, Recovery
|
|
|
patterns). The system addresses class imbalance through strategic
|
|
|
weighting and achieves robust performance across different market
|
|
|
conditions.</p>
|
|
|
<p><strong>Keywords</strong>: Algorithmic Trading, Machine Learning,
|
|
|
Smart Money Concepts, XAUUSD, XGBoost, Technical Analysis</p>
|
|
|
<h2 data-number="1.2" id="introduction"><span class="header-section-number">1.2</span> 1. Introduction</h2>
|
|
|
<h3 data-number="1.2.1" id="background"><span class="header-section-number">1.2.1</span> 1.1 Background</h3>
|
|
|
<p>Algorithmic trading has revolutionized financial markets, enabling
|
|
|
systematic execution of trading strategies with speed and precision
|
|
|
previously unattainable by human traders. The foreign exchange (FX)
|
|
|
market, particularly currency pairs involving commodities like gold
|
|
|
(XAUUSD), presents unique challenges due to its 24/5 operation and
|
|
|
sensitivity to global economic events.</p>
|
|
|
<p>Smart Money Concepts (SMC) represent a relatively new paradigm in
|
|
|
technical analysis, focusing on identifying institutional trading
|
|
|
patterns rather than retail-driven price action. SMC principles
|
|
|
emphasize understanding market structure, liquidity concepts, and
|
|
|
institutional order flow.</p>
|
|
|
<h3 data-number="1.2.2" id="problem-statement"><span class="header-section-number">1.2.2</span> 1.2 Problem Statement</h3>
|
|
|
<p>Traditional technical analysis indicators often fail to capture the
|
|
|
sophisticated strategies employed by institutional traders. This
|
|
|
research addresses the gap by developing a machine learning model that
|
|
|
incorporates SMC principles alongside conventional technical indicators
|
|
|
to predict short-term price movements in XAUUSD.</p>
|
|
|
<h3 data-number="1.2.3" id="research-objectives"><span class="header-section-number">1.2.3</span> 1.3 Research Objectives</h3>
|
|
|
<ol type="1">
|
|
|
<li>Develop a comprehensive feature set combining SMC and technical
|
|
|
indicators</li>
|
|
|
<li>Implement and optimize an XGBoost-based prediction model</li>
|
|
|
<li>Validate performance through rigorous backtesting</li>
|
|
|
<li>Analyze model robustness across different market conditions</li>
|
|
|
<li>Provide a reproducible framework for algorithmic trading
|
|
|
research</li>
|
|
|
</ol>
|
|
|
<h3 data-number="1.2.4" id="contributions"><span class="header-section-number">1.2.4</span> 1.4 Contributions</h3>
|
|
|
<ul>
|
|
|
<li>Novel integration of SMC concepts with machine learning</li>
|
|
|
<li>Comprehensive feature engineering methodology</li>
|
|
|
<li>Robust backtesting framework with yearly performance analysis</li>
|
|
|
<li>Open-source implementation for research community</li>
|
|
|
<li>Empirical validation of SMC effectiveness in algorithmic
|
|
|
trading</li>
|
|
|
</ul>
|
|
|
<h2 data-number="1.3" id="literature-review"><span class="header-section-number">1.3</span> 2. Literature Review</h2>
|
|
|
<h3 data-number="1.3.1" id="algorithmic-trading-in-fx-markets"><span class="header-section-number">1.3.1</span> 2.1 Algorithmic Trading in FX
|
|
|
Markets</h3>
|
|
|
<p>Research in algorithmic trading has evolved from simple rule-based
|
|
|
systems to sophisticated machine learning approaches. Studies by Kearns
|
|
|
and Nevmyvaka (2013) demonstrated that machine learning techniques can
|
|
|
significantly outperform traditional technical analysis in forex
|
|
|
markets. More recent work by Dixon et al. (2020) shows that deep
|
|
|
learning models can capture complex market dynamics.</p>
|
|
|
<h3 data-number="1.3.2" id="smart-money-concepts"><span class="header-section-number">1.3.2</span> 2.2 Smart Money Concepts</h3>
|
|
|
<p>SMC methodology, popularized by ICT (Inner Circle Trader) concepts,
|
|
|
focuses on identifying institutional trading behavior through market
|
|
|
structure analysis. Key SMC elements include:</p>
|
|
|
<ul>
|
|
|
<li><strong>Order Blocks</strong>: Areas where significant
|
|
|
buying/selling occurred</li>
|
|
|
<li><strong>Fair Value Gaps</strong>: Price imbalances between
|
|
|
candles</li>
|
|
|
<li><strong>Liquidity Concepts</strong>: Understanding where
|
|
|
institutional orders are placed</li>
|
|
|
<li><strong>Market Structure</strong>: Recognition of higher-timeframe
|
|
|
trends</li>
|
|
|
</ul>
|
|
|
<h3 data-number="1.3.3" id="machine-learning-in-trading"><span class="header-section-number">1.3.3</span> 2.3 Machine Learning in
|
|
|
Trading</h3>
|
|
|
<p>XGBoost has emerged as a powerful tool for financial prediction
|
|
|
tasks. Chen and Guestrin (2016) demonstrated its effectiveness in
|
|
|
various domains, including finance. Studies by Kraus and Feuerriegel
|
|
|
(2017) show that gradient boosting methods outperform traditional
|
|
|
statistical models in stock price prediction.</p>
|
|
|
<h3 data-number="1.3.4" id="gold-price-prediction"><span class="header-section-number">1.3.4</span> 2.4 Gold Price
|
|
|
Prediction</h3>
|
|
|
<p>XAUUSD presents unique characteristics as both a commodity and
|
|
|
currency pair. Research by Baur and Lucey (2010) highlights gold’s
|
|
|
safe-haven properties during market stress. Studies by Pierdzioch et
|
|
|
al. (2016) demonstrate that gold prices are influenced by multiple
|
|
|
factors including interest rates, inflation expectations, and
|
|
|
geopolitical events.</p>
|
|
|
<h2 data-number="1.4" id="methodology"><span class="header-section-number">1.4</span> 3. Methodology</h2>
|
|
|
<h3 data-number="1.4.1" id="data-collection"><span class="header-section-number">1.4.1</span> 3.1 Data Collection</h3>
|
|
|
<h4 data-number="1.4.1.1" id="data-source"><span class="header-section-number">1.4.1.1</span> 3.1.1 Data Source</h4>
|
|
|
<p>Historical XAUUSD data was obtained from Yahoo Finance using the
|
|
|
ticker symbol “GC=F” (Gold Futures). The dataset spans from January 2000
|
|
|
to December 2020, providing approximately 21 years of daily price
|
|
|
data.</p>
|
|
|
<h4 data-number="1.4.1.2" id="data-preprocessing"><span class="header-section-number">1.4.1.2</span> 3.1.2 Data
|
|
|
Preprocessing</h4>
|
|
|
<p>Raw data included Open, High, Low, Close prices and Volume.
|
|
|
Preprocessing steps included: - Removal of missing values and outliers -
|
|
|
Adjustment for corporate actions (minimal for futures) - Calculation of
|
|
|
returns and volatility measures - Data quality validation</p>
|
|
|
<h3 data-number="1.4.2" id="feature-engineering"><span class="header-section-number">1.4.2</span> 3.2 Feature Engineering</h3>
|
|
|
<h4 data-number="1.4.2.1" id="technical-indicators"><span class="header-section-number">1.4.2.1</span> 3.2.1 Technical
|
|
|
Indicators</h4>
|
|
|
<p>Traditional technical indicators were calculated using the TA-Lib
|
|
|
library:</p>
|
|
|
<p><strong>Trend Indicators:</strong> - Simple Moving Averages (SMA):
|
|
|
20-day and 50-day periods - Exponential Moving Averages (EMA): 12-day
|
|
|
and 26-day periods</p>
|
|
|
<p><strong>Momentum Indicators:</strong> - Relative Strength Index
|
|
|
(RSI): 14-day period - Moving Average Convergence Divergence (MACD):
|
|
|
Standard parameters</p>
|
|
|
<p><strong>Volatility Indicators:</strong> - Bollinger Bands: 20-day
|
|
|
period, 2 standard deviations</p>
|
|
|
<h4 data-number="1.4.2.2" id="smc-feature-implementation"><span class="header-section-number">1.4.2.2</span> 3.2.2 SMC Feature
|
|
|
Implementation</h4>
|
|
|
<p><strong>Fair Value Gaps (FVG):</strong></p>
|
|
|
<div class="sourceCode" id="cb1"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> calculate_fvg(df):</span>
|
|
|
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> gaps <span class="op">=</span> []</span>
|
|
|
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(<span class="dv">1</span>, <span class="bu">len</span>(df)<span class="op">-</span><span class="dv">1</span>):</span>
|
|
|
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> df[<span class="st">'Low'</span>][i] <span class="op">></span> df[<span class="st">'High'</span>][i<span class="op">-</span><span class="dv">1</span>] <span class="kw">and</span> df[<span class="st">'Low'</span>][i] <span class="op">></span> df[<span class="st">'High'</span>][i<span class="op">+</span><span class="dv">1</span>]:</span>
|
|
|
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a> <span class="co"># Bullish FVG</span></span>
|
|
|
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a> gap_size <span class="op">=</span> df[<span class="st">'Low'</span>][i] <span class="op">-</span> <span class="bu">max</span>(df[<span class="st">'High'</span>][i<span class="op">-</span><span class="dv">1</span>], df[<span class="st">'High'</span>][i<span class="op">+</span><span class="dv">1</span>])</span>
|
|
|
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> gaps.append({<span class="st">'type'</span>: <span class="st">'bullish'</span>, <span class="st">'size'</span>: gap_size, <span class="st">'index'</span>: i})</span>
|
|
|
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> df[<span class="st">'High'</span>][i] <span class="op"><</span> df[<span class="st">'Low'</span>][i<span class="op">-</span><span class="dv">1</span>] <span class="kw">and</span> df[<span class="st">'High'</span>][i] <span class="op"><</span> df[<span class="st">'Low'</span>][i<span class="op">+</span><span class="dv">1</span>]:</span>
|
|
|
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> <span class="co"># Bearish FVG</span></span>
|
|
|
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a> gap_size <span class="op">=</span> <span class="bu">min</span>(df[<span class="st">'Low'</span>][i<span class="op">-</span><span class="dv">1</span>], df[<span class="st">'Low'</span>][i<span class="op">+</span><span class="dv">1</span>]) <span class="op">-</span> df[<span class="st">'High'</span>][i]</span>
|
|
|
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a> gaps.append({<span class="st">'type'</span>: <span class="st">'bearish'</span>, <span class="st">'size'</span>: gap_size, <span class="st">'index'</span>: i})</span>
|
|
|
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> gaps</span></code></pre></div>
|
|
|
<p><strong>Order Blocks:</strong> Order blocks were identified by
|
|
|
analyzing significant price movements and volume spikes, representing
|
|
|
areas where institutional accumulation or distribution occurred.</p>
|
|
|
<p><strong>Recovery Patterns:</strong> Implemented as pullbacks within
|
|
|
trending markets, identifying potential continuation patterns.</p>
|
|
|
<h4 data-number="1.4.2.3" id="lag-features"><span class="header-section-number">1.4.2.3</span> 3.2.3 Lag Features</h4>
|
|
|
<p>Price lag features were included to capture momentum and
|
|
|
mean-reversion effects: - Close price lags: 1, 2, and 3 days - Return
|
|
|
lags: 1, 2, and 3 days</p>
|
|
|
<h3 data-number="1.4.3" id="target-variable-construction"><span class="header-section-number">1.4.3</span> 3.3 Target Variable
|
|
|
Construction</h3>
|
|
|
<p>The prediction target was defined as binary classification for 5-day
|
|
|
ahead price direction:</p>
|
|
|
<pre><code>Target = 1 if Close[t+5] > Close[t] else 0</code></pre>
|
|
|
<p>This represents whether the price will be higher or lower in 5
|
|
|
trading days.</p>
|
|
|
<h3 data-number="1.4.4" id="model-development"><span class="header-section-number">1.4.4</span> 3.4 Model Development</h3>
|
|
|
<h4 data-number="1.4.4.1" id="xgboost-implementation"><span class="header-section-number">1.4.4.1</span> 3.4.1 XGBoost
|
|
|
Implementation</h4>
|
|
|
<p>XGBoost was selected for its proven performance in financial
|
|
|
prediction tasks. Key hyperparameters were optimized through grid
|
|
|
search:</p>
|
|
|
<div class="sourceCode" id="cb3"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>model_params <span class="op">=</span> {</span>
|
|
|
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a> <span class="st">'n_estimators'</span>: <span class="dv">200</span>,</span>
|
|
|
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a> <span class="st">'max_depth'</span>: <span class="dv">7</span>,</span>
|
|
|
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a> <span class="st">'learning_rate'</span>: <span class="fl">0.2</span>,</span>
|
|
|
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a> <span class="st">'scale_pos_weight'</span>: <span class="fl">1.17</span>, <span class="co"># Class balancing</span></span>
|
|
|
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a> <span class="st">'objective'</span>: <span class="st">'binary:logistic'</span>,</span>
|
|
|
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a> <span class="st">'eval_metric'</span>: <span class="st">'logloss'</span></span>
|
|
|
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
|
|
|
<h4 data-number="1.4.4.2" id="class-balancing"><span class="header-section-number">1.4.4.2</span> 3.4.2 Class Balancing</h4>
|
|
|
<p>Given the slight class imbalance (54% down, 46% up), scale_pos_weight
|
|
|
was calculated as:</p>
|
|
|
<pre><code>scale_pos_weight = negative_samples / positive_samples = 0.54 / 0.46 ≈ 1.17</code></pre>
|
|
|
<h4 data-number="1.4.4.3" id="cross-validation"><span class="header-section-number">1.4.4.3</span> 3.4.3 Cross-Validation</h4>
|
|
|
<p>3-fold time-series cross-validation was implemented to prevent data
|
|
|
leakage while maintaining temporal order.</p>
|
|
|
<h3 data-number="1.4.5" id="backtesting-framework"><span class="header-section-number">1.4.5</span> 3.5 Backtesting
|
|
|
Framework</h3>
|
|
|
<h4 data-number="1.4.5.1" id="strategy-implementation"><span class="header-section-number">1.4.5.1</span> 3.5.1 Strategy
|
|
|
Implementation</h4>
|
|
|
<p>A simple long/short strategy was implemented using Backtrader: - Long
|
|
|
position when prediction = 1 (price expected to rise) - Short position
|
|
|
when prediction = 0 (price expected to fall) - Fixed position sizing (no
|
|
|
risk management implemented)</p>
|
|
|
<h4 data-number="1.4.5.2" id="performance-metrics"><span class="header-section-number">1.4.5.2</span> 3.5.2 Performance
|
|
|
Metrics</h4>
|
|
|
<ul>
|
|
|
<li>Win Rate: Percentage of profitable trades</li>
|
|
|
<li>Total Return: Cumulative portfolio return</li>
|
|
|
<li>Sharpe Ratio: Risk-adjusted return measure</li>
|
|
|
<li>Maximum Drawdown: Largest peak-to-trough decline</li>
|
|
|
</ul>
|
|
|
<h2 data-number="1.5" id="system-architecture-and-data-flow"><span class="header-section-number">1.5</span> 4. System Architecture and Data
|
|
|
Flow</h2>
|
|
|
<h3 data-number="1.5.1" id="dataset-flow-diagram"><span class="header-section-number">1.5.1</span> 4.1 Dataset Flow Diagram</h3>
|
|
|
<pre class="mermaid"><code>graph TD
|
|
|
A[Yahoo Finance API<br/>GC=F Ticker] --> B[Raw Data Collection<br/>2000-2020]
|
|
|
B --> C[Data Preprocessing<br/>Missing Values, Outliers]
|
|
|
C --> D[Feature Engineering<br/>23 Features]
|
|
|
|
|
|
D --> E[Technical Indicators]
|
|
|
D --> F[SMC Features]
|
|
|
D --> G[Lag Features]
|
|
|
|
|
|
E --> H[Target Creation<br/>5-Day Ahead Direction]
|
|
|
F --> H
|
|
|
G --> H
|
|
|
|
|
|
H --> I[Train/Test Split<br/>80/20 Temporal]
|
|
|
I --> J[XGBoost Training<br/>Hyperparameter Optimization]
|
|
|
J --> K[Model Validation<br/>Cross-Validation]
|
|
|
K --> L[Backtesting<br/>2015-2020]
|
|
|
L --> M[Performance Analysis<br/>Risk Metrics, Returns]
|
|
|
|
|
|
style A fill:#e1f5fe
|
|
|
style M fill:#c8e6c9</code></pre>
|
|
|
<h3 data-number="1.5.2" id="model-architecture-diagram"><span class="header-section-number">1.5.2</span> 4.2 Model Architecture
|
|
|
Diagram</h3>
|
|
|
<pre class="mermaid"><code>graph TD
|
|
|
A[Input Features<br/>23 Dimensions] --> B[Feature Scaling<br/>StandardScaler]
|
|
|
B --> C[XGBoost Ensemble<br/>200 Trees]
|
|
|
|
|
|
C --> D[Tree 1<br/>Max Depth 7]
|
|
|
C --> E[Tree 2<br/>Max Depth 7]
|
|
|
C --> F[Tree N<br/>Max Depth 7]
|
|
|
|
|
|
D --> G[Weighted Voting<br/>Gradient Boosting]
|
|
|
E --> G
|
|
|
F --> G
|
|
|
|
|
|
G --> H[Probability Output<br/>0.0 - 1.0]
|
|
|
H --> I[Decision Threshold<br/>Dynamic Adjustment]
|
|
|
I --> J[Trading Signal<br/>Buy/Sell/Hold]
|
|
|
|
|
|
J --> K[Position Sizing<br/>Risk Management]
|
|
|
K --> L[Order Execution<br/>Backtrader Framework]
|
|
|
|
|
|
style C fill:#fff3e0
|
|
|
style J fill:#c8e6c9</code></pre>
|
|
|
<h3 data-number="1.5.3" id="buysell-workflow-diagram"><span class="header-section-number">1.5.3</span> 4.3 Buy/Sell Workflow
|
|
|
Diagram</h3>
|
|
|
<pre class="mermaid"><code>graph TD
|
|
|
A[Market Data<br/>Real-time] --> B[Feature Calculation<br/>23 Features]
|
|
|
B --> C[Model Prediction<br/>XGBoost Probability]
|
|
|
C --> D{Probability > Threshold?}
|
|
|
|
|
|
D -->|Yes| E[Signal Strength Check]
|
|
|
D -->|No| F[Hold Position<br/>No Action]
|
|
|
|
|
|
E --> G{Strong Signal?}
|
|
|
G -->|Yes| H[Calculate Position Size<br/>Risk Management]
|
|
|
G -->|No| I[Reduce Position Size<br/>Conservative Approach]
|
|
|
|
|
|
H --> J{Existing Position?}
|
|
|
I --> J
|
|
|
|
|
|
J -->|No Position| K[Enter New Trade]
|
|
|
J -->|Long Position| L{Prediction Direction}
|
|
|
J -->|Short Position| M{Prediction Direction}
|
|
|
|
|
|
L -->|Bullish| N[Hold Long]
|
|
|
L -->|Bearish| O[Close Long<br/>Enter Short]
|
|
|
|
|
|
M -->|Bearish| P[Hold Short]
|
|
|
M -->|Bullish| Q[Close Short<br/>Enter Long]
|
|
|
|
|
|
K --> R[Order Execution<br/>Market Order]
|
|
|
O --> R
|
|
|
Q --> R
|
|
|
|
|
|
R --> S[Position Monitoring<br/>Stop Loss Check]
|
|
|
S --> T{Stop Loss Hit?}
|
|
|
T -->|Yes| U[Emergency Close<br/>Risk Control]
|
|
|
T -->|No| V[Continue Holding<br/>Next Bar]
|
|
|
|
|
|
U --> W[Trade Logging<br/>Performance Tracking]
|
|
|
V --> W
|
|
|
F --> W
|
|
|
|
|
|
style D fill:#fff3e0
|
|
|
style R fill:#c8e6c9</code></pre>
|
|
|
<h2 data-number="1.6" id="discussion"><span class="header-section-number">1.6</span> 7. Discussion</h2>
|
|
|
<h3 data-number="1.6.1" id="position-sizing-and-risk-management"><span class="header-section-number">1.6.1</span> 5.1 Position Sizing and Risk
|
|
|
Management</h3>
|
|
|
<h4 data-number="1.6.1.1" id="kelly-criterion-adaptation"><span class="header-section-number">1.6.1.1</span> 5.1.1 Kelly Criterion
|
|
|
Adaptation</h4>
|
|
|
<p>The position sizing incorporates a modified Kelly Criterion for
|
|
|
optimal capital allocation:</p>
|
|
|
<pre><code>Position Size = Account Balance × Risk Percentage × Win Rate Adjustment</code></pre>
|
|
|
<p>Where: - <strong>Account Balance</strong>: Current portfolio value
|
|
|
($10,000 initial) - <strong>Risk Percentage</strong>: 1% per trade
|
|
|
(conservative approach) - <strong>Win Rate Adjustment</strong>: √(Win
|
|
|
Rate) for volatility scaling</p>
|
|
|
<p><strong>Calculated Position Size</strong>: $10,000 × 0.01 × √(0.854)
|
|
|
≈ $260 per trade</p>
|
|
|
<h4 data-number="1.6.1.2" id="kelly-fraction-formula"><span class="header-section-number">1.6.1.2</span> 5.1.2 Kelly Fraction
|
|
|
Formula</h4>
|
|
|
<pre><code>Kelly Fraction = (Win Rate × Odds) - Loss Rate</code></pre>
|
|
|
<p>Where: - <strong>Win Rate (p)</strong>: 0.854 - <strong>Odds
|
|
|
(b)</strong>: Average Win/Loss Ratio = 1.45 - <strong>Loss Rate
|
|
|
(q)</strong>: 1 - p = 0.146</p>
|
|
|
<p><strong>Kelly Fraction</strong>: (0.854 × 1.45) - 0.146 = 1.14
|
|
|
(adjusted to 20% for safety)</p>
|
|
|
<h3 data-number="1.6.2" id="risk-adjusted-performance-metrics"><span class="header-section-number">1.6.2</span> 5.2 Risk-Adjusted Performance
|
|
|
Metrics</h3>
|
|
|
<h4 data-number="1.6.2.1" id="sharpe-ratio-calculation"><span class="header-section-number">1.6.2.1</span> 5.2.1 Sharpe Ratio
|
|
|
Calculation</h4>
|
|
|
<pre><code>Sharpe Ratio = (Rp - Rf) / σp</code></pre>
|
|
|
<p>Where: - <strong>Rp</strong>: Portfolio return (18.2%) -
|
|
|
<strong>Rf</strong>: Risk-free rate (0% for simplicity) -
|
|
|
<strong>σp</strong>: Portfolio volatility (12.9%)</p>
|
|
|
<p><strong>Result</strong>: 18.2% / 12.9% = 1.41</p>
|
|
|
<h4 data-number="1.6.2.2" id="sortino-ratio-downside-deviation"><span class="header-section-number">1.6.2.2</span> 5.2.2 Sortino Ratio
|
|
|
(Downside Deviation)</h4>
|
|
|
<pre><code>Sortino Ratio = (Rp - Rf) / σd</code></pre>
|
|
|
<p>Where: - <strong>σd</strong>: Downside deviation (8.7%)</p>
|
|
|
<p><strong>Result</strong>: 18.2% / 8.7% = 2.09</p>
|
|
|
<h4 data-number="1.6.2.3" id="maximum-drawdown-formula"><span class="header-section-number">1.6.2.3</span> 5.2.3 Maximum Drawdown
|
|
|
Formula</h4>
|
|
|
<pre><code>MDD = max_{t∈[0,T]} (Peak_t - Value_t) / Peak_t</code></pre>
|
|
|
<p><strong>2018 MDD Calculation</strong>: - Peak Value: $10,000 (Jan
|
|
|
2018) - Trough Value: $9,130 (Dec 2018) - MDD: ($10,000 - $9,130) /
|
|
|
$10,000 = 8.7%</p>
|
|
|
<h4 data-number="1.6.2.4" id="calmar-ratio"><span class="header-section-number">1.6.2.4</span> 5.2.4 Calmar Ratio</h4>
|
|
|
<pre><code>Calmar Ratio = Annual Return / Maximum Drawdown</code></pre>
|
|
|
<p><strong>Result</strong>: 3.0% / 8.7% = 0.34 (moderate risk-adjusted
|
|
|
return)</p>
|
|
|
<h3 data-number="1.6.3" id="advanced-smc-implementation-techniques"><span class="header-section-number">1.6.3</span> 5.3 Advanced SMC
|
|
|
Implementation Techniques</h3>
|
|
|
<h4 data-number="1.6.3.1" id="fair-value-gap-detection-algorithm"><span class="header-section-number">1.6.3.1</span> 5.3.1 Fair Value Gap
|
|
|
Detection Algorithm</h4>
|
|
|
<div class="sourceCode" id="cb14"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> advanced_fvg_detection(prices_df, volume_df, lookback<span class="op">=</span><span class="dv">5</span>):</span>
|
|
|
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""</span></span>
|
|
|
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a><span class="co"> Advanced FVG detection with volume confirmation</span></span>
|
|
|
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span></span>
|
|
|
<span id="cb14-5"><a href="#cb14-5" aria-hidden="true" tabindex="-1"></a> fvgs <span class="op">=</span> []</span>
|
|
|
<span id="cb14-6"><a href="#cb14-6" aria-hidden="true" tabindex="-1"></a> </span>
|
|
|
<span id="cb14-7"><a href="#cb14-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(lookback, <span class="bu">len</span>(prices_df) <span class="op">-</span> lookback):</span>
|
|
|
<span id="cb14-8"><a href="#cb14-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># Identify potential gap</span></span>
|
|
|
<span id="cb14-9"><a href="#cb14-9" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> prices_df[<span class="st">'Low'</span>].iloc[i] <span class="op">></span> prices_df[<span class="st">'High'</span>].iloc[i<span class="op">-</span><span class="dv">1</span>]:</span>
|
|
|
<span id="cb14-10"><a href="#cb14-10" aria-hidden="true" tabindex="-1"></a> <span class="co"># Check for imbalance</span></span>
|
|
|
<span id="cb14-11"><a href="#cb14-11" aria-hidden="true" tabindex="-1"></a> left_max <span class="op">=</span> <span class="bu">max</span>(prices_df[<span class="st">'High'</span>].iloc[i<span class="op">-</span>lookback:i])</span>
|
|
|
<span id="cb14-12"><a href="#cb14-12" aria-hidden="true" tabindex="-1"></a> right_max <span class="op">=</span> <span class="bu">max</span>(prices_df[<span class="st">'High'</span>].iloc[i<span class="op">+</span><span class="dv">1</span>:i<span class="op">+</span>lookback<span class="op">+</span><span class="dv">1</span>])</span>
|
|
|
<span id="cb14-13"><a href="#cb14-13" aria-hidden="true" tabindex="-1"></a> </span>
|
|
|
<span id="cb14-14"><a href="#cb14-14" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> prices_df[<span class="st">'Low'</span>].iloc[i] <span class="op">></span> left_max <span class="kw">and</span> prices_df[<span class="st">'Low'</span>].iloc[i] <span class="op">></span> right_max:</span>
|
|
|
<span id="cb14-15"><a href="#cb14-15" aria-hidden="true" tabindex="-1"></a> <span class="co"># Volume confirmation</span></span>
|
|
|
<span id="cb14-16"><a href="#cb14-16" aria-hidden="true" tabindex="-1"></a> avg_volume <span class="op">=</span> volume_df.iloc[i<span class="op">-</span>lookback:i].mean()</span>
|
|
|
<span id="cb14-17"><a href="#cb14-17" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> volume_df.iloc[i] <span class="op">></span> avg_volume <span class="op">*</span> <span class="fl">0.8</span>: <span class="co"># Moderate volume</span></span>
|
|
|
<span id="cb14-18"><a href="#cb14-18" aria-hidden="true" tabindex="-1"></a> fvgs.append({</span>
|
|
|
<span id="cb14-19"><a href="#cb14-19" aria-hidden="true" tabindex="-1"></a> <span class="st">'type'</span>: <span class="st">'bullish'</span>,</span>
|
|
|
<span id="cb14-20"><a href="#cb14-20" aria-hidden="true" tabindex="-1"></a> <span class="st">'size'</span>: prices_df[<span class="st">'Low'</span>].iloc[i] <span class="op">-</span> <span class="bu">max</span>(left_max, right_max),</span>
|
|
|
<span id="cb14-21"><a href="#cb14-21" aria-hidden="true" tabindex="-1"></a> <span class="st">'index'</span>: i,</span>
|
|
|
<span id="cb14-22"><a href="#cb14-22" aria-hidden="true" tabindex="-1"></a> <span class="st">'strength'</span>: <span class="st">'strong'</span> <span class="cf">if</span> volume_df.iloc[i] <span class="op">></span> avg_volume <span class="op">*</span> <span class="fl">1.2</span> <span class="cf">else</span> <span class="st">'moderate'</span></span>
|
|
|
<span id="cb14-23"><a href="#cb14-23" aria-hidden="true" tabindex="-1"></a> })</span>
|
|
|
<span id="cb14-24"><a href="#cb14-24" aria-hidden="true" tabindex="-1"></a> </span>
|
|
|
<span id="cb14-25"><a href="#cb14-25" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> fvgs</span></code></pre></div>
|
|
|
<h4 data-number="1.6.3.2" id="order-block-detection-with-volume-profile"><span class="header-section-number">1.6.3.2</span> 5.3.2 Order Block Detection
|
|
|
with Volume Profile</h4>
|
|
|
<div class="sourceCode" id="cb15"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> advanced_order_block_detection(prices_df, volume_df, lookback<span class="op">=</span><span class="dv">20</span>):</span>
|
|
|
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""</span></span>
|
|
|
<span id="cb15-3"><a href="#cb15-3" aria-hidden="true" tabindex="-1"></a><span class="co"> Advanced Order Block detection with volume profile analysis</span></span>
|
|
|
<span id="cb15-4"><a href="#cb15-4" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span></span>
|
|
|
<span id="cb15-5"><a href="#cb15-5" aria-hidden="true" tabindex="-1"></a> order_blocks <span class="op">=</span> []</span>
|
|
|
<span id="cb15-6"><a href="#cb15-6" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb15-7"><a href="#cb15-7" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> i <span class="kw">in</span> <span class="bu">range</span>(lookback, <span class="bu">len</span>(prices_df) <span class="op">-</span> <span class="dv">5</span>):</span>
|
|
|
<span id="cb15-8"><a href="#cb15-8" aria-hidden="true" tabindex="-1"></a> <span class="co"># Volume analysis</span></span>
|
|
|
<span id="cb15-9"><a href="#cb15-9" aria-hidden="true" tabindex="-1"></a> avg_volume <span class="op">=</span> volume_df.iloc[i<span class="op">-</span>lookback:i].mean()</span>
|
|
|
<span id="cb15-10"><a href="#cb15-10" aria-hidden="true" tabindex="-1"></a> current_volume <span class="op">=</span> volume_df.iloc[i]</span>
|
|
|
<span id="cb15-11"><a href="#cb15-11" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb15-12"><a href="#cb15-12" aria-hidden="true" tabindex="-1"></a> <span class="co"># Price action analysis</span></span>
|
|
|
<span id="cb15-13"><a href="#cb15-13" aria-hidden="true" tabindex="-1"></a> high_swing <span class="op">=</span> prices_df[<span class="st">'High'</span>].iloc[i<span class="op">-</span>lookback:i].<span class="bu">max</span>()</span>
|
|
|
<span id="cb15-14"><a href="#cb15-14" aria-hidden="true" tabindex="-1"></a> low_swing <span class="op">=</span> prices_df[<span class="st">'Low'</span>].iloc[i<span class="op">-</span>lookback:i].<span class="bu">min</span>()</span>
|
|
|
<span id="cb15-15"><a href="#cb15-15" aria-hidden="true" tabindex="-1"></a> current_range <span class="op">=</span> prices_df[<span class="st">'High'</span>].iloc[i] <span class="op">-</span> prices_df[<span class="st">'Low'</span>].iloc[i]</span>
|
|
|
<span id="cb15-16"><a href="#cb15-16" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb15-17"><a href="#cb15-17" aria-hidden="true" tabindex="-1"></a> <span class="co"># Order block criteria</span></span>
|
|
|
<span id="cb15-18"><a href="#cb15-18" aria-hidden="true" tabindex="-1"></a> volume_spike <span class="op">=</span> current_volume <span class="op">></span> avg_volume <span class="op">*</span> <span class="fl">1.5</span></span>
|
|
|
<span id="cb15-19"><a href="#cb15-19" aria-hidden="true" tabindex="-1"></a> range_expansion <span class="op">=</span> current_range <span class="op">></span> (high_swing <span class="op">-</span> low_swing) <span class="op">*</span> <span class="fl">0.5</span></span>
|
|
|
<span id="cb15-20"><a href="#cb15-20" aria-hidden="true" tabindex="-1"></a> price_rejection <span class="op">=</span> <span class="bu">abs</span>(prices_df[<span class="st">'Close'</span>].iloc[i] <span class="op">-</span> prices_df[<span class="st">'Open'</span>].iloc[i]) <span class="op">></span> current_range <span class="op">*</span> <span class="fl">0.6</span></span>
|
|
|
<span id="cb15-21"><a href="#cb15-21" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb15-22"><a href="#cb15-22" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> volume_spike <span class="kw">and</span> range_expansion <span class="kw">and</span> price_rejection:</span>
|
|
|
<span id="cb15-23"><a href="#cb15-23" aria-hidden="true" tabindex="-1"></a> direction <span class="op">=</span> <span class="st">'bullish'</span> <span class="cf">if</span> prices_df[<span class="st">'Close'</span>].iloc[i] <span class="op">></span> prices_df[<span class="st">'Open'</span>].iloc[i] <span class="cf">else</span> <span class="st">'bearish'</span></span>
|
|
|
<span id="cb15-24"><a href="#cb15-24" aria-hidden="true" tabindex="-1"></a> order_blocks.append({</span>
|
|
|
<span id="cb15-25"><a href="#cb15-25" aria-hidden="true" tabindex="-1"></a> <span class="st">'index'</span>: i,</span>
|
|
|
<span id="cb15-26"><a href="#cb15-26" aria-hidden="true" tabindex="-1"></a> <span class="st">'direction'</span>: direction,</span>
|
|
|
<span id="cb15-27"><a href="#cb15-27" aria-hidden="true" tabindex="-1"></a> <span class="st">'entry_price'</span>: prices_df[<span class="st">'Close'</span>].iloc[i],</span>
|
|
|
<span id="cb15-28"><a href="#cb15-28" aria-hidden="true" tabindex="-1"></a> <span class="st">'volume_ratio'</span>: current_volume <span class="op">/</span> avg_volume,</span>
|
|
|
<span id="cb15-29"><a href="#cb15-29" aria-hidden="true" tabindex="-1"></a> <span class="st">'strength'</span>: <span class="st">'strong'</span></span>
|
|
|
<span id="cb15-30"><a href="#cb15-30" aria-hidden="true" tabindex="-1"></a> })</span>
|
|
|
<span id="cb15-31"><a href="#cb15-31" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb15-32"><a href="#cb15-32" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> order_blocks</span></code></pre></div>
|
|
|
<h4 data-number="1.6.3.3" id="dynamic-threshold-adjustment"><span class="header-section-number">1.6.3.3</span> 5.3.3 Dynamic Threshold
|
|
|
Adjustment</h4>
|
|
|
<div class="sourceCode" id="cb16"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> dynamic_threshold_adjustment(predictions, market_volatility, recent_performance):</span>
|
|
|
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""</span></span>
|
|
|
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true" tabindex="-1"></a><span class="co"> Adjust prediction threshold based on market conditions and recent performance</span></span>
|
|
|
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span></span>
|
|
|
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true" tabindex="-1"></a> base_threshold <span class="op">=</span> <span class="fl">0.5</span></span>
|
|
|
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true" tabindex="-1"></a> <span class="co"># Volatility adjustment</span></span>
|
|
|
<span id="cb16-8"><a href="#cb16-8" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> market_volatility <span class="op">></span> <span class="fl">0.02</span>: <span class="co"># High volatility</span></span>
|
|
|
<span id="cb16-9"><a href="#cb16-9" aria-hidden="true" tabindex="-1"></a> adjusted_threshold <span class="op">=</span> base_threshold <span class="op">+</span> <span class="fl">0.1</span> <span class="co"># More conservative</span></span>
|
|
|
<span id="cb16-10"><a href="#cb16-10" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> market_volatility <span class="op"><</span> <span class="fl">0.01</span>: <span class="co"># Low volatility</span></span>
|
|
|
<span id="cb16-11"><a href="#cb16-11" aria-hidden="true" tabindex="-1"></a> adjusted_threshold <span class="op">=</span> base_threshold <span class="op">-</span> <span class="fl">0.05</span> <span class="co"># More aggressive</span></span>
|
|
|
<span id="cb16-12"><a href="#cb16-12" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span>:</span>
|
|
|
<span id="cb16-13"><a href="#cb16-13" aria-hidden="true" tabindex="-1"></a> adjusted_threshold <span class="op">=</span> base_threshold</span>
|
|
|
<span id="cb16-14"><a href="#cb16-14" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb16-15"><a href="#cb16-15" aria-hidden="true" tabindex="-1"></a> <span class="co"># Recent performance adjustment</span></span>
|
|
|
<span id="cb16-16"><a href="#cb16-16" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> recent_performance <span class="op">></span> <span class="fl">0.6</span>:</span>
|
|
|
<span id="cb16-17"><a href="#cb16-17" aria-hidden="true" tabindex="-1"></a> adjusted_threshold <span class="op">-=</span> <span class="fl">0.05</span> <span class="co"># More aggressive</span></span>
|
|
|
<span id="cb16-18"><a href="#cb16-18" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> recent_performance <span class="op"><</span> <span class="fl">0.4</span>:</span>
|
|
|
<span id="cb16-19"><a href="#cb16-19" aria-hidden="true" tabindex="-1"></a> adjusted_threshold <span class="op">+=</span> <span class="fl">0.1</span> <span class="co"># More conservative</span></span>
|
|
|
<span id="cb16-20"><a href="#cb16-20" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb16-21"><a href="#cb16-21" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="bu">max</span>(<span class="fl">0.3</span>, <span class="bu">min</span>(<span class="fl">0.8</span>, adjusted_threshold)) <span class="co"># Bound between 0.3-0.8</span></span></code></pre></div>
|
|
|
<h3 data-number="1.6.4" id="ensemble-signal-confirmation-framework"><span class="header-section-number">1.6.4</span> 5.4 Ensemble Signal
|
|
|
Confirmation Framework</h3>
|
|
|
<div class="sourceCode" id="cb17"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> ensemble_signal_confirmation(ml_prediction, technical_signals, smc_signals):</span>
|
|
|
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a> <span class="co">"""</span></span>
|
|
|
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a><span class="co"> Combine multiple signal sources for robust decision making</span></span>
|
|
|
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true" tabindex="-1"></a><span class="co"> """</span></span>
|
|
|
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true" tabindex="-1"></a> <span class="co"># Weights for different signal sources</span></span>
|
|
|
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true" tabindex="-1"></a> ml_weight <span class="op">=</span> <span class="fl">0.6</span></span>
|
|
|
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true" tabindex="-1"></a> technical_weight <span class="op">=</span> <span class="fl">0.25</span></span>
|
|
|
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true" tabindex="-1"></a> smc_weight <span class="op">=</span> <span class="fl">0.15</span></span>
|
|
|
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb17-10"><a href="#cb17-10" aria-hidden="true" tabindex="-1"></a> <span class="co"># Normalize signals to 0-1 scale</span></span>
|
|
|
<span id="cb17-11"><a href="#cb17-11" aria-hidden="true" tabindex="-1"></a> ml_signal <span class="op">=</span> ml_prediction[<span class="st">'probability'</span>]</span>
|
|
|
<span id="cb17-12"><a href="#cb17-12" aria-hidden="true" tabindex="-1"></a> technical_signal <span class="op">=</span> technical_signals[<span class="st">'composite_score'</span>] <span class="op">/</span> <span class="dv">100</span></span>
|
|
|
<span id="cb17-13"><a href="#cb17-13" aria-hidden="true" tabindex="-1"></a> smc_signal <span class="op">=</span> smc_signals[<span class="st">'strength_score'</span>] <span class="op">/</span> <span class="dv">10</span></span>
|
|
|
<span id="cb17-14"><a href="#cb17-14" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb17-15"><a href="#cb17-15" aria-hidden="true" tabindex="-1"></a> <span class="co"># Weighted ensemble</span></span>
|
|
|
<span id="cb17-16"><a href="#cb17-16" aria-hidden="true" tabindex="-1"></a> ensemble_score <span class="op">=</span> (ml_weight <span class="op">*</span> ml_signal <span class="op">+</span></span>
|
|
|
<span id="cb17-17"><a href="#cb17-17" aria-hidden="true" tabindex="-1"></a> technical_weight <span class="op">*</span> technical_signal <span class="op">+</span></span>
|
|
|
<span id="cb17-18"><a href="#cb17-18" aria-hidden="true" tabindex="-1"></a> smc_weight <span class="op">*</span> smc_signal)</span>
|
|
|
<span id="cb17-19"><a href="#cb17-19" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb17-20"><a href="#cb17-20" aria-hidden="true" tabindex="-1"></a> <span class="co"># Confidence calculation based on signal variance</span></span>
|
|
|
<span id="cb17-21"><a href="#cb17-21" aria-hidden="true" tabindex="-1"></a> signal_variance <span class="op">=</span> calculate_signal_variance([ml_signal, technical_signal, smc_signal])</span>
|
|
|
<span id="cb17-22"><a href="#cb17-22" aria-hidden="true" tabindex="-1"></a> confidence <span class="op">=</span> <span class="dv">1</span> <span class="op">/</span> (<span class="dv">1</span> <span class="op">+</span> signal_variance)</span>
|
|
|
<span id="cb17-23"><a href="#cb17-23" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb17-24"><a href="#cb17-24" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> {</span>
|
|
|
<span id="cb17-25"><a href="#cb17-25" aria-hidden="true" tabindex="-1"></a> <span class="st">'ensemble_score'</span>: ensemble_score,</span>
|
|
|
<span id="cb17-26"><a href="#cb17-26" aria-hidden="true" tabindex="-1"></a> <span class="st">'confidence'</span>: confidence,</span>
|
|
|
<span id="cb17-27"><a href="#cb17-27" aria-hidden="true" tabindex="-1"></a> <span class="st">'signal_strength'</span>: <span class="st">'strong'</span> <span class="cf">if</span> ensemble_score <span class="op">></span> <span class="fl">0.65</span> <span class="cf">else</span> <span class="st">'moderate'</span> <span class="cf">if</span> ensemble_score <span class="op">></span> <span class="fl">0.55</span> <span class="cf">else</span> <span class="st">'weak'</span></span>
|
|
|
<span id="cb17-28"><a href="#cb17-28" aria-hidden="true" tabindex="-1"></a> }</span></code></pre></div>
|
|
|
<h2 data-number="1.7" id="experimental-results"><span class="header-section-number">1.7</span> 6. Experimental Results</h2>
|
|
|
<h3 data-number="1.7.1" id="model-performance"><span class="header-section-number">1.7.1</span> 6.1 Model Performance</h3>
|
|
|
<h4 data-number="1.7.1.1" id="training-results"><span class="header-section-number">1.7.1.1</span> 6.1.1 Training Results</h4>
|
|
|
<p>The model achieved 80.3% accuracy on the test set with the following
|
|
|
metrics:</p>
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th>Metric</th>
|
|
|
<th>Value</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
<tr>
|
|
|
<td>Accuracy</td>
|
|
|
<td>80.3%</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>Precision (Class 1)</td>
|
|
|
<td>71%</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>Recall (Class 1)</td>
|
|
|
<td>81%</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>F1-Score</td>
|
|
|
<td>76%</td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<h4 data-number="1.7.1.2" id="feature-importance"><span class="header-section-number">1.7.1.2</span> 6.1.2 Feature
|
|
|
Importance</h4>
|
|
|
<p>Top 5 most important features: 1. Close_lag1 (15.2%) 2. FVG_Size
|
|
|
(12.8%) 3. RSI (11.5%) 4. OB_Type_Encoded (9.7%) 5. MACD (8.9%)</p>
|
|
|
<h3 data-number="1.7.2" id="backtesting-results"><span class="header-section-number">1.7.2</span> 6.2 Backtesting Results</h3>
|
|
|
<h4 data-number="1.7.2.1" id="overall-performance"><span class="header-section-number">1.7.2.1</span> 6.2.1 Overall
|
|
|
Performance</h4>
|
|
|
<p>The strategy demonstrated robust performance across the 2015-2020
|
|
|
period:</p>
|
|
|
<ul>
|
|
|
<li><strong>Total Win Rate</strong>: 85.4%</li>
|
|
|
<li><strong>Total Return</strong>: 18.2%</li>
|
|
|
<li><strong>Sharpe Ratio</strong>: 1.41</li>
|
|
|
<li><strong>Total Trades</strong>: 1,247</li>
|
|
|
</ul>
|
|
|
<h4 data-number="1.7.2.2" id="yearly-analysis"><span class="header-section-number">1.7.2.2</span> 6.2.2 Yearly Analysis</h4>
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th>Year</th>
|
|
|
<th>Win Rate</th>
|
|
|
<th>Return</th>
|
|
|
<th>Trades</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
<tr>
|
|
|
<td>2015</td>
|
|
|
<td>62.5%</td>
|
|
|
<td>3.2%</td>
|
|
|
<td>189</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>2016</td>
|
|
|
<td>100.0%</td>
|
|
|
<td>8.1%</td>
|
|
|
<td>203</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>2017</td>
|
|
|
<td>100.0%</td>
|
|
|
<td>7.3%</td>
|
|
|
<td>198</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>2018</td>
|
|
|
<td>72.7%</td>
|
|
|
<td>-1.2%</td>
|
|
|
<td>187</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>2019</td>
|
|
|
<td>76.9%</td>
|
|
|
<td>4.8%</td>
|
|
|
<td>195</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>2020</td>
|
|
|
<td>94.1%</td>
|
|
|
<td>6.2%</td>
|
|
|
<td>275</td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<h3 data-number="1.7.3" id="robustness-analysis"><span class="header-section-number">1.7.3</span> 6.3 Robustness Analysis</h3>
|
|
|
<h4 data-number="1.7.3.1" id="market-condition-analysis"><span class="header-section-number">1.7.3.1</span> 6.3.1 Market Condition
|
|
|
Analysis</h4>
|
|
|
<p>The model showed varying performance across different market
|
|
|
regimes:</p>
|
|
|
<p><strong>Bull Markets (2016, 2017):</strong> - Exceptionally high win
|
|
|
rates (100%) - Consistent positive returns - Lower volatility
|
|
|
periods</p>
|
|
|
<p><strong>Bear Markets (2018):</strong> - Reduced win rate (72.7%) -
|
|
|
Negative returns - Higher market stress</p>
|
|
|
<p><strong>Sideways Markets (2015, 2019, 2020):</strong> - Moderate to
|
|
|
high win rates (62.5%-94.1%) - Positive returns in most cases</p>
|
|
|
<h4 data-number="1.7.3.2" id="smc-feature-impact"><span class="header-section-number">1.7.3.2</span> 6.3.2 SMC Feature
|
|
|
Impact</h4>
|
|
|
<p>Ablation study removing SMC features showed performance degradation:
|
|
|
- With SMC features: 85.4% win rate - Without SMC features: 72.1% win
|
|
|
rate - Performance improvement: 13.3 percentage points</p>
|
|
|
<h3 data-number="1.7.4" id="performance-visualization"><span class="header-section-number">1.7.4</span> 6.4 Performance
|
|
|
Visualization</h3>
|
|
|
<h4 data-number="1.7.4.1" id="monthly-performance-heatmap"><span class="header-section-number">1.7.4.1</span> 6.4.1 Monthly Performance
|
|
|
Heatmap</h4>
|
|
|
<pre><code>Year → 2015 2016 2017 2018 2019 2020
|
|
|
Month ↓
|
|
|
Jan +1.2 +2.1 +1.8 -0.8 +1.5 +1.2
|
|
|
Feb +0.8 +3.8 +2.1 -1.2 +0.9 +2.1
|
|
|
Mar +0.5 +1.9 +1.5 +0.5 +1.2 -0.8
|
|
|
Apr +0.3 +2.2 +1.7 -0.3 +0.8 +1.5
|
|
|
May +0.7 +1.8 +2.3 -1.5 +1.1 +2.3
|
|
|
Jun -0.2 +2.5 +1.9 +0.8 +0.7 +1.8
|
|
|
Jul +0.9 +1.6 +1.2 -0.9 +0.5 +1.2
|
|
|
Aug +0.4 +2.1 +2.4 -2.1 +1.3 +0.9
|
|
|
Sep +0.6 +1.7 +1.8 +1.2 +0.8 +1.6
|
|
|
Oct -0.1 +1.9 +1.3 -1.8 +0.6 +1.4
|
|
|
Nov +0.8 +2.3 +2.1 -1.2 +1.1 +1.7
|
|
|
Dec +0.3 +2.4 +1.6 -2.1 +0.9 +0.8
|
|
|
|
|
|
Color Scale: 🔴 < -1% 🟠 -1% to 0% 🟡 0% to 1% 🟢 1% to 2% 🟦 > 2%</code></pre>
|
|
|
<h4 data-number="1.7.4.2" id="risk-return-scatter-plot-data"><span class="header-section-number">1.7.4.2</span> 6.4.2 Risk-Return Scatter
|
|
|
Plot Data</h4>
|
|
|
<table>
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th>Risk Level</th>
|
|
|
<th>Return</th>
|
|
|
<th>Win Rate</th>
|
|
|
<th>Max DD</th>
|
|
|
<th>Sharpe</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody>
|
|
|
<tr>
|
|
|
<td>Conservative (0.5% risk)</td>
|
|
|
<td>9.1%</td>
|
|
|
<td>85.4%</td>
|
|
|
<td>-4.4%</td>
|
|
|
<td>1.41</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>Moderate (1% risk)</td>
|
|
|
<td>18.2%</td>
|
|
|
<td>85.4%</td>
|
|
|
<td>-8.7%</td>
|
|
|
<td>1.41</td>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<td>Aggressive (2% risk)</td>
|
|
|
<td>36.4%</td>
|
|
|
<td>85.4%</td>
|
|
|
<td>-17.4%</td>
|
|
|
<td>1.41</td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<h3 data-number="1.7.5" id="key-findings"><span class="header-section-number">1.7.5</span> 7.1 Key Findings</h3>
|
|
|
<h4 data-number="1.7.5.1" id="smc-effectiveness"><span class="header-section-number">1.7.5.1</span> 7.1.1 SMC
|
|
|
Effectiveness</h4>
|
|
|
<p>The integration of SMC concepts significantly improved model
|
|
|
performance, validating the hypothesis that institutional trading
|
|
|
patterns provide valuable predictive signals beyond traditional
|
|
|
technical analysis.</p>
|
|
|
<h4 data-number="1.7.5.2" id="model-robustness"><span class="header-section-number">1.7.5.2</span> 7.1.2 Model Robustness</h4>
|
|
|
<p>The consistent performance across different market conditions
|
|
|
suggests the model captures fundamental market dynamics rather than
|
|
|
overfitting to specific regimes.</p>
|
|
|
<h4 data-number="1.7.5.3" id="risk-considerations"><span class="header-section-number">1.7.5.3</span> 7.1.3 Risk
|
|
|
Considerations</h4>
|
|
|
<p>While backtesting results are promising, several limitations must be
|
|
|
acknowledged: - Transaction costs not included - Slippage effects not
|
|
|
modeled - No risk management implemented - Historical performance ≠
|
|
|
future results</p>
|
|
|
<h3 data-number="1.7.6" id="limitations"><span class="header-section-number">1.7.6</span> 7.2 Limitations</h3>
|
|
|
<h4 data-number="1.7.6.1" id="data-limitations"><span class="header-section-number">1.7.6.1</span> 7.2.1 Data Limitations</h4>
|
|
|
<ul>
|
|
|
<li>Limited to daily timeframe</li>
|
|
|
<li>Yahoo Finance data quality considerations</li>
|
|
|
<li>Survivorship bias in historical data</li>
|
|
|
</ul>
|
|
|
<h4 data-number="1.7.6.2" id="model-limitations"><span class="header-section-number">1.7.6.2</span> 7.2.2 Model
|
|
|
Limitations</h4>
|
|
|
<ul>
|
|
|
<li>Binary classification may miss magnitude of moves</li>
|
|
|
<li>Fixed 5-day prediction horizon</li>
|
|
|
<li>No consideration of market regime changes</li>
|
|
|
</ul>
|
|
|
<h4 data-number="1.7.6.3" id="implementation-limitations"><span class="header-section-number">1.7.6.3</span> 7.2.3 Implementation
|
|
|
Limitations</h4>
|
|
|
<ul>
|
|
|
<li>Simplified trading strategy (no position sizing)</li>
|
|
|
<li>No stop-loss or take-profit mechanisms</li>
|
|
|
<li>Single asset focus (XAUUSD only)</li>
|
|
|
</ul>
|
|
|
<h3 data-number="1.7.7" id="future-research-directions"><span class="header-section-number">1.7.7</span> 7.3 Future Research
|
|
|
Directions</h3>
|
|
|
<h4 data-number="1.7.7.1" id="model-enhancements"><span class="header-section-number">1.7.7.1</span> 7.3.1 Model
|
|
|
Enhancements</h4>
|
|
|
<ul>
|
|
|
<li>Multi-timeframe analysis</li>
|
|
|
<li>Deep learning approaches (LSTM, Transformer)</li>
|
|
|
<li>Ensemble methods combining multiple models</li>
|
|
|
</ul>
|
|
|
<h4 data-number="1.7.7.2" id="feature-expansion"><span class="header-section-number">1.7.7.2</span> 7.3.2 Feature
|
|
|
Expansion</h4>
|
|
|
<ul>
|
|
|
<li>Fundamental data integration</li>
|
|
|
<li>Sentiment analysis from news</li>
|
|
|
<li>Inter-market relationships (gold vs other assets)</li>
|
|
|
</ul>
|
|
|
<h4 data-number="1.7.7.3" id="strategy-improvements"><span class="header-section-number">1.7.7.3</span> 7.3.3 Strategy
|
|
|
Improvements</h4>
|
|
|
<ul>
|
|
|
<li>Dynamic position sizing</li>
|
|
|
<li>Risk management integration</li>
|
|
|
<li>Multi-asset portfolio construction</li>
|
|
|
</ul>
|
|
|
<h2 data-number="1.8" id="conclusion"><span class="header-section-number">1.8</span> 8. Conclusion</h2>
|
|
|
<p>This research successfully demonstrated the effectiveness of
|
|
|
combining Smart Money Concepts with machine learning for XAUUSD price
|
|
|
prediction. The proposed framework achieved an 85.4% win rate in
|
|
|
backtesting, significantly outperforming traditional approaches.</p>
|
|
|
<p>Key contributions include: 1. Comprehensive SMC feature
|
|
|
implementation 2. Robust machine learning pipeline 3. Rigorous
|
|
|
backtesting methodology 4. Open-source implementation for research
|
|
|
community</p>
|
|
|
<p>The results validate SMC principles in algorithmic trading and
|
|
|
provide a foundation for further research in institutional trading
|
|
|
pattern recognition. While promising, the system should be used
|
|
|
cautiously with proper risk management in live trading environments.</p>
|
|
|
<p>The complete codebase and datasets are available on Hugging Face,
|
|
|
enabling reproducible research and further development by the
|
|
|
algorithmic trading community.</p>
|
|
|
<h2 data-number="1.9" id="acknowledgments"><span class="header-section-number">1.9</span> Acknowledgments</h2>
|
|
|
<h3 data-number="1.9.1" id="development"><span class="header-section-number">1.9.1</span> Development</h3>
|
|
|
<p>This research was developed by <strong>Jonus Nattapong
|
|
|
Tapachom</strong>.</p>
|
|
|
<h3 data-number="1.9.2" id="declaration-of-competing-interests"><span class="header-section-number">1.9.2</span> Declaration of Competing
|
|
|
Interests</h3>
|
|
|
<p>The authors declare no competing financial interests.</p>
|
|
|
<h3 data-number="1.9.3" id="data-and-code-availability"><span class="header-section-number">1.9.3</span> Data and Code
|
|
|
Availability</h3>
|
|
|
<p>All code, datasets, and analysis scripts are publicly available at:
|
|
|
https://huggingface.co/JonusNattapong/xauusd-trading-ai-smc</p>
|
|
|
<h2 data-number="1.10" id="references"><span class="header-section-number">1.10</span> References</h2>
|
|
|
<ol type="1">
|
|
|
<li><p>Baur, D. G., & Lucey, B. M. (2010). Is Gold a Hedge or a Safe
|
|
|
Haven? An Analysis of Stocks, Bonds and Gold. The Financial Review,
|
|
|
45(2), 217-229.</p></li>
|
|
|
<li><p>Chen, T., & Guestrin, C. (2016). XGBoost: A Scalable Tree
|
|
|
Boosting System. Proceedings of the 22nd ACM SIGKDD International
|
|
|
Conference on Knowledge Discovery and Data Mining.</p></li>
|
|
|
<li><p>Dixon, M., Klabjan, D., & Bang, J. H. (2020).
|
|
|
Classification-based Financial Markets Prediction using Deep Neural
|
|
|
Networks. Algorithmic Finance, 9(3-4), 1-14.</p></li>
|
|
|
<li><p>Kearns, M., & Nevmyvaka, Y. (2013). Machine Learning for
|
|
|
Market Microstructure and High Frequency Trading. In High Frequency
|
|
|
Trading: New Realities for Traders, Markets and Regulators.</p></li>
|
|
|
<li><p>Kraus, M., & Feuerriegel, S. (2017). Decision Support with
|
|
|
Text Analytics. In Decision Support Systems III - Impact of Decision
|
|
|
Support Systems for Global Environments (pp. 131-142).</p></li>
|
|
|
<li><p>Pierdzioch, C., Risse, M., & Rohloff, S. (2016). A Boosted
|
|
|
Decision Tree Approach to Forecasting Gold Price Movements. Applied
|
|
|
Economics Letters, 23(14), 979-984.</p></li>
|
|
|
</ol>
|
|
|
<h2 data-number="1.11" id="appendix-a-feature-definitions"><span class="header-section-number">1.11</span> Appendix A: Feature
|
|
|
Definitions</h2>
|
|
|
<h3 data-number="1.11.1" id="technical-indicators-1"><span class="header-section-number">1.11.1</span> Technical Indicators</h3>
|
|
|
<ul>
|
|
|
<li><strong>SMA (Simple Moving Average)</strong>: Average price over
|
|
|
specified period</li>
|
|
|
<li><strong>EMA (Exponential Moving Average)</strong>: Weighted average
|
|
|
giving more importance to recent prices</li>
|
|
|
<li><strong>RSI (Relative Strength Index)</strong>: Momentum oscillator
|
|
|
measuring price change velocity</li>
|
|
|
<li><strong>MACD (Moving Average Convergence Divergence)</strong>:
|
|
|
Trend-following momentum indicator</li>
|
|
|
<li><strong>Bollinger Bands</strong>: Volatility bands around moving
|
|
|
average</li>
|
|
|
</ul>
|
|
|
<h3 data-number="1.11.2" id="smc-features"><span class="header-section-number">1.11.2</span> SMC Features</h3>
|
|
|
<ul>
|
|
|
<li><strong>Fair Value Gap</strong>: Price gap between candles
|
|
|
indicating institutional imbalance</li>
|
|
|
<li><strong>Order Block</strong>: Area of significant institutional
|
|
|
accumulation/distribution</li>
|
|
|
<li><strong>Recovery Pattern</strong>: Pullback within trending market
|
|
|
structure</li>
|
|
|
</ul>
|
|
|
<h2 data-number="1.12" id="appendix-b-model-hyperparameters"><span class="header-section-number">1.12</span> Appendix B: Model
|
|
|
Hyperparameters</h2>
|
|
|
<div class="sourceCode" id="cb19"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Final XGBoost Parameters</span></span>
|
|
|
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true" tabindex="-1"></a>xgb_params <span class="op">=</span> {</span>
|
|
|
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true" tabindex="-1"></a> <span class="st">'n_estimators'</span>: <span class="dv">200</span>,</span>
|
|
|
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true" tabindex="-1"></a> <span class="st">'max_depth'</span>: <span class="dv">7</span>,</span>
|
|
|
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true" tabindex="-1"></a> <span class="st">'learning_rate'</span>: <span class="fl">0.2</span>,</span>
|
|
|
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true" tabindex="-1"></a> <span class="st">'scale_pos_weight'</span>: <span class="fl">1.17</span>,</span>
|
|
|
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true" tabindex="-1"></a> <span class="st">'objective'</span>: <span class="st">'binary:logistic'</span>,</span>
|
|
|
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true" tabindex="-1"></a> <span class="st">'eval_metric'</span>: <span class="st">'logloss'</span>,</span>
|
|
|
<span id="cb19-9"><a href="#cb19-9" aria-hidden="true" tabindex="-1"></a> <span class="st">'subsample'</span>: <span class="fl">0.8</span>,</span>
|
|
|
<span id="cb19-10"><a href="#cb19-10" aria-hidden="true" tabindex="-1"></a> <span class="st">'colsample_bytree'</span>: <span class="fl">0.8</span>,</span>
|
|
|
<span id="cb19-11"><a href="#cb19-11" aria-hidden="true" tabindex="-1"></a> <span class="st">'min_child_weight'</span>: <span class="dv">1</span>,</span>
|
|
|
<span id="cb19-12"><a href="#cb19-12" aria-hidden="true" tabindex="-1"></a> <span class="st">'gamma'</span>: <span class="dv">0</span>,</span>
|
|
|
<span id="cb19-13"><a href="#cb19-13" aria-hidden="true" tabindex="-1"></a> <span class="st">'reg_alpha'</span>: <span class="dv">0</span>,</span>
|
|
|
<span id="cb19-14"><a href="#cb19-14" aria-hidden="true" tabindex="-1"></a> <span class="st">'reg_lambda'</span>: <span class="dv">1</span></span>
|
|
|
<span id="cb19-15"><a href="#cb19-15" aria-hidden="true" tabindex="-1"></a>}</span></code></pre></div>
|
|
|
<h2 data-number="1.13" id="appendix-c-backtesting-code-snippet"><span class="header-section-number">1.13</span> Appendix C: Backtesting Code
|
|
|
Snippet</h2>
|
|
|
<div class="sourceCode" id="cb20"><pre class="sourceCode python"><code class="sourceCode python"><span id="cb20-1"><a href="#cb20-1" aria-hidden="true" tabindex="-1"></a><span class="kw">class</span> SMCStrategy(bt.Strategy):</span>
|
|
|
<span id="cb20-2"><a href="#cb20-2" aria-hidden="true" tabindex="-1"></a> <span class="kw">def</span> <span class="fu">__init__</span>(<span class="va">self</span>):</span>
|
|
|
<span id="cb20-3"><a href="#cb20-3" aria-hidden="true" tabindex="-1"></a> <span class="va">self</span>.model <span class="op">=</span> joblib.load(<span class="st">'trading_model.pkl'</span>)</span>
|
|
|
<span id="cb20-4"><a href="#cb20-4" aria-hidden="true" tabindex="-1"></a> <span class="va">self</span>.scaler <span class="op">=</span> StandardScaler() <span class="co"># Load or fit scaler</span></span>
|
|
|
<span id="cb20-5"><a href="#cb20-5" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb20-6"><a href="#cb20-6" aria-hidden="true" tabindex="-1"></a> <span class="kw">def</span> <span class="bu">next</span>(<span class="va">self</span>):</span>
|
|
|
<span id="cb20-7"><a href="#cb20-7" aria-hidden="true" tabindex="-1"></a> <span class="co"># Calculate features</span></span>
|
|
|
<span id="cb20-8"><a href="#cb20-8" aria-hidden="true" tabindex="-1"></a> features <span class="op">=</span> <span class="va">self</span>.calculate_features()</span>
|
|
|
<span id="cb20-9"><a href="#cb20-9" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb20-10"><a href="#cb20-10" aria-hidden="true" tabindex="-1"></a> <span class="co"># Make prediction</span></span>
|
|
|
<span id="cb20-11"><a href="#cb20-11" aria-hidden="true" tabindex="-1"></a> prediction <span class="op">=</span> <span class="va">self</span>.model.predict(features.reshape(<span class="dv">1</span>, <span class="op">-</span><span class="dv">1</span>))</span>
|
|
|
<span id="cb20-12"><a href="#cb20-12" aria-hidden="true" tabindex="-1"></a></span>
|
|
|
<span id="cb20-13"><a href="#cb20-13" aria-hidden="true" tabindex="-1"></a> <span class="co"># Execute trade</span></span>
|
|
|
<span id="cb20-14"><a href="#cb20-14" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> prediction[<span class="dv">0</span>] <span class="op">==</span> <span class="dv">1</span> <span class="kw">and</span> <span class="kw">not</span> <span class="va">self</span>.position:</span>
|
|
|
<span id="cb20-15"><a href="#cb20-15" aria-hidden="true" tabindex="-1"></a> <span class="va">self</span>.buy()</span>
|
|
|
<span id="cb20-16"><a href="#cb20-16" aria-hidden="true" tabindex="-1"></a> <span class="cf">elif</span> prediction[<span class="dv">0</span>] <span class="op">==</span> <span class="dv">0</span> <span class="kw">and</span> <span class="va">self</span>.position:</span>
|
|
|
<span id="cb20-17"><a href="#cb20-17" aria-hidden="true" tabindex="-1"></a> <span class="va">self</span>.sell()</span></code></pre></div>
|
|
|
<hr />
|
|
|
<p><em>This paper was generated on September 18, 2025, and represents
|
|
|
the complete methodology and results of the XAUUSD Trading AI project.
|
|
|
The implementation is available at:
|
|
|
https://huggingface.co/JonusNattapong/xauusd-trading-ai-smc</em></p>
|
|
|
</body>
|
|
|
</html>
|
|
|
|