[{"data":1,"prerenderedAt":1484},["ShallowReactive",2],{"kscript:strategies/examples-hyperliquid":3},{"slug":4,"filePath":5,"frontmatter":6,"rawMarkdown":11,"tree":12},"strategies/examples-hyperliquid","strategies/examples-hyperliquid.md",{"title":7,"description":8,"verified":9},"Backtest a Hyperliquid Perp Strategy","A complete Hyperliquid perps backtest: leverage, maker/taker fees, and funding settled from recorded venue data, in twenty lines of kScript.",{"engine":10},"3.0.64","---\ntitle: \"Backtest a Hyperliquid Perp Strategy\"\ndescription: >-\n  A complete Hyperliquid perps backtest: leverage, maker/taker fees, and\n  funding settled from recorded venue data, in twenty lines of kScript.\nverified:\n  engine: 3.0.64\n---\n\nHyperliquid trades as perpetuals: leveraged, funded, and liquidatable. A backtest that ignores those three facts will happily approve a strategy the venue would have destroyed. This walkthrough runs a trend strategy under real perps accounting: isolated margin at 10x, maker/taker fees, and funding settled from the recorded funding rates of the chart's venue.\n\n## The strategy\n\nOpen any Hyperliquid perp chart (`HYPERLIQUID_FUTURES`, e.g. `BTC`, on 1h) and paste:\n\n```javascript title=\"hyperliquid-funding-trend.ks\"\n//@version=2\nstrategy(title=\"HL Funding-Aware Trend\", position=\"onchart\", axis=true, initialCapital=10000, instrument=\"perps\", leverage=10, qtyType=\"percentOfEquity\", qtyValue=10, makerFeePercent=0.015, takerFeePercent=0.045, funding=\"data\", slippageBps=2);\n\ntimeseries data = ohlcv(symbol=currentSymbol, exchange=currentExchange);\ntimeseries fast = ema(source=data.close, period=21);\ntimeseries slow = ema(source=data.close, period=55);\n\nif (crossover(fast, slow)) {\n  strategy.entry(\"Trend\", \"long\");\n}\nif (crossunder(fast, slow)) {\n  strategy.closeAll();\n}\nif (strategy.positionSize() > 0) {\n  strategy.exit(\"Protect\", fromEntry=\"Trend\", stop=strategy.positionAvgPrice() * 0.97);\n}\n\nplotLine(value=fast, width=1, colors=[\"#16a34a\"], label=[\"EMA 21\"], desc=[\"Fast EMA\"]);\nplotLine(value=slow, width=1, colors=[\"#dc2626\"], label=[\"EMA 55\"], desc=[\"Slow EMA\"]);\n```\n\nReading the declaration, which is doing most of the perps work:\n\n- `instrument=\"perps\"` with `leverage=10`: sizing commits **margin**, not notional. `qtyValue=10` means each entry commits 10% of equity as isolated margin; the position's notional is that margin times leverage. The engine tracks the position's liquidation price from your leverage and maintenance margin, and closes you there if a bar proves or assumes the level traded. See [Perps and Leverage](perps-and-leverage.md).\n- `makerFeePercent=0.015, takerFeePercent=0.045`: fees route by fill type, so market entries, stops, and `closeAll` pay taker while limit-bound fills pay maker. Set your own tier's numbers; the declaration ships with the script so a shared backtest carries its own cost assumptions.\n- `funding=\"data\"`: the engine settles the actual recorded funding events from the chart's venue against your open position, debiting cash and committed margin together. This is the default; it is written out here because it is the point.\n\n## Reading the result\n\nThree lines to check before believing the equity curve:\n\n1. **`fundingPaid`** in the stats: the signed funding bill. A long that looked fine gross can bleed to death through settlements while it holds; the same rules on a coarser interval hold through more settlements per trade. If part of the window had no recorded funding data, `fundingUnavailableCount` says so rather than pretending.\n2. **`liquidationCount`** and trades whose exit says `liquidation`: at 10x, a 3% protective stop and the liquidation level are uncomfortably close neighbors. If liquidations show up, the venue closed you before your stop did.\n3. **The fill-precision line** in the run-details popover: whether contested fills were verified with finer recorded data or settled by assumption. See [Reading the Strategy Tester](reading-the-tester.md).\n\n## Tune it like it's real\n\n- **Leverage down first.** At 5x the liquidation level sits twice as far; watch `liquidationCount` go to zero before you tune anything else.\n- **Widen the stop or drop the interval.** Brackets arm on the bar after entry, so a tight stop on a coarse chart is exposed for one full bar. [Fill Simulation](fill-simulation.md#choosing-an-interval-to-trust) covers this trade-off.\n- **Run the spot twin.** Duplicate the script, delete the perps params, and put both on the chart: compare mode shows exactly what leverage, fees, and funding cost you. That difference is the part most backtests never model.\n",{"type":13,"children":14,"data":1477,"position":1479},"root",[15,33,35,54,55,111,112,875,876,891,892,1098,1099,1116,1117,1132,1133,1313,1314,1330,1331],{"type":16,"tagName":17,"properties":18,"children":19,"position":30},"element","p",{},[20],{"type":21,"value":22,"position":23},"text","Hyperliquid trades as perpetuals: leveraged, funded, and liquidatable. A backtest that ignores those three facts will happily approve a strategy the venue would have destroyed. This walkthrough runs a trend strategy under real perps accounting: isolated margin at 10x, maker/taker fees, and funding settled from the recorded funding rates of the chart's venue.",{"start":24,"end":27},{"line":25,"column":25,"offset":26},1,0,{"line":25,"column":28,"offset":29},361,360,{"start":31,"end":32},{"line":25,"column":25,"offset":26},{"line":25,"column":28,"offset":29},{"type":21,"value":34},"\n",{"type":16,"tagName":36,"properties":37,"children":39,"position":50},"h2",{"id":38},"the-strategy",[40],{"type":21,"value":41,"position":42},"The strategy",{"start":43,"end":47},{"line":44,"column":45,"offset":46},3,4,365,{"line":44,"column":48,"offset":49},16,377,{"start":51,"end":53},{"line":44,"column":25,"offset":52},362,{"line":44,"column":48,"offset":49},{"type":21,"value":34},{"type":16,"tagName":17,"properties":56,"children":57,"position":108},{},[58,67,81,88,101],{"type":21,"value":59,"position":60},"Open any Hyperliquid perp chart (",{"start":61,"end":64},{"line":62,"column":25,"offset":63},5,379,{"line":62,"column":65,"offset":66},34,412,{"type":16,"tagName":68,"properties":69,"children":70,"position":78},"code",{},[71],{"type":21,"value":72,"position":73},"HYPERLIQUID_FUTURES",{"start":74,"end":75},{"line":62,"column":65,"offset":66},{"line":62,"column":76,"offset":77},55,433,{"start":79,"end":80},{"line":62,"column":65,"offset":66},{"line":62,"column":76,"offset":77},{"type":21,"value":82,"position":83},", e.g. ",{"start":84,"end":85},{"line":62,"column":76,"offset":77},{"line":62,"column":86,"offset":87},62,440,{"type":16,"tagName":68,"properties":89,"children":90,"position":98},{},[91],{"type":21,"value":92,"position":93},"BTC",{"start":94,"end":95},{"line":62,"column":86,"offset":87},{"line":62,"column":96,"offset":97},67,445,{"start":99,"end":100},{"line":62,"column":86,"offset":87},{"line":62,"column":96,"offset":97},{"type":21,"value":102,"position":103},", on 1h) and paste:",{"start":104,"end":105},{"line":62,"column":96,"offset":97},{"line":62,"column":106,"offset":107},86,464,{"start":109,"end":110},{"line":62,"column":25,"offset":63},{"line":62,"column":106,"offset":107},{"type":21,"value":34},{"type":13,"children":113},[114],{"type":16,"tagName":115,"properties":116,"children":121,"data":-1},"pre",{"class":117,"style":118,"tabindex":119,"title":120},"shiki shiki-themes github-dark github-light","--shiki-dark:#e1e4e8;--shiki-light:#24292e;--shiki-dark-bg:#24292e;--shiki-light-bg:#fff","0","hyperliquid-funding-trend.ks",[122],{"type":16,"tagName":68,"properties":123,"children":124},{},[125,136,137,323,324,327,328,368,369,413,414,455,456,459,460,483,484,521,522,530,531,551,552,569,570,577,578,615,616,687,688,695,696,699,700,791,792],{"type":16,"tagName":126,"properties":127,"children":129},"span",{"class":128},"line",[130],{"type":16,"tagName":126,"properties":131,"children":133},{"style":132},"--shiki-dark:#6A737D;--shiki-light:#6A737D",[134],{"type":21,"value":135},"//@version=2",{"type":21,"value":34},{"type":16,"tagName":126,"properties":138,"children":139},{"class":128},[140,146,152,158,164,169,173,178,183,187,193,198,202,207,212,216,221,226,230,235,240,244,249,254,258,262,267,271,276,281,285,290,295,299,304,309,313,318],{"type":16,"tagName":126,"properties":141,"children":143},{"style":142},"--shiki-dark:#B392F0;--shiki-light:#6F42C1",[144],{"type":21,"value":145},"strategy",{"type":16,"tagName":126,"properties":147,"children":149},{"style":148},"--shiki-dark:#E1E4E8;--shiki-light:#24292E",[150],{"type":21,"value":151},"(title",{"type":16,"tagName":126,"properties":153,"children":155},{"style":154},"--shiki-dark:#F97583;--shiki-light:#D73A49",[156],{"type":21,"value":157},"=",{"type":16,"tagName":126,"properties":159,"children":161},{"style":160},"--shiki-dark:#9ECBFF;--shiki-light:#032F62",[162],{"type":21,"value":163},"\"HL Funding-Aware Trend\"",{"type":16,"tagName":126,"properties":165,"children":166},{"style":148},[167],{"type":21,"value":168},", position",{"type":16,"tagName":126,"properties":170,"children":171},{"style":154},[172],{"type":21,"value":157},{"type":16,"tagName":126,"properties":174,"children":175},{"style":160},[176],{"type":21,"value":177},"\"onchart\"",{"type":16,"tagName":126,"properties":179,"children":180},{"style":148},[181],{"type":21,"value":182},", axis",{"type":16,"tagName":126,"properties":184,"children":185},{"style":154},[186],{"type":21,"value":157},{"type":16,"tagName":126,"properties":188,"children":190},{"style":189},"--shiki-dark:#79B8FF;--shiki-light:#005CC5",[191],{"type":21,"value":192},"true",{"type":16,"tagName":126,"properties":194,"children":195},{"style":148},[196],{"type":21,"value":197},", initialCapital",{"type":16,"tagName":126,"properties":199,"children":200},{"style":154},[201],{"type":21,"value":157},{"type":16,"tagName":126,"properties":203,"children":204},{"style":189},[205],{"type":21,"value":206},"10000",{"type":16,"tagName":126,"properties":208,"children":209},{"style":148},[210],{"type":21,"value":211},", instrument",{"type":16,"tagName":126,"properties":213,"children":214},{"style":154},[215],{"type":21,"value":157},{"type":16,"tagName":126,"properties":217,"children":218},{"style":160},[219],{"type":21,"value":220},"\"perps\"",{"type":16,"tagName":126,"properties":222,"children":223},{"style":148},[224],{"type":21,"value":225},", leverage",{"type":16,"tagName":126,"properties":227,"children":228},{"style":154},[229],{"type":21,"value":157},{"type":16,"tagName":126,"properties":231,"children":232},{"style":189},[233],{"type":21,"value":234},"10",{"type":16,"tagName":126,"properties":236,"children":237},{"style":148},[238],{"type":21,"value":239},", qtyType",{"type":16,"tagName":126,"properties":241,"children":242},{"style":154},[243],{"type":21,"value":157},{"type":16,"tagName":126,"properties":245,"children":246},{"style":160},[247],{"type":21,"value":248},"\"percentOfEquity\"",{"type":16,"tagName":126,"properties":250,"children":251},{"style":148},[252],{"type":21,"value":253},", qtyValue",{"type":16,"tagName":126,"properties":255,"children":256},{"style":154},[257],{"type":21,"value":157},{"type":16,"tagName":126,"properties":259,"children":260},{"style":189},[261],{"type":21,"value":234},{"type":16,"tagName":126,"properties":263,"children":264},{"style":148},[265],{"type":21,"value":266},", makerFeePercent",{"type":16,"tagName":126,"properties":268,"children":269},{"style":154},[270],{"type":21,"value":157},{"type":16,"tagName":126,"properties":272,"children":273},{"style":189},[274],{"type":21,"value":275},"0.015",{"type":16,"tagName":126,"properties":277,"children":278},{"style":148},[279],{"type":21,"value":280},", takerFeePercent",{"type":16,"tagName":126,"properties":282,"children":283},{"style":154},[284],{"type":21,"value":157},{"type":16,"tagName":126,"properties":286,"children":287},{"style":189},[288],{"type":21,"value":289},"0.045",{"type":16,"tagName":126,"properties":291,"children":292},{"style":148},[293],{"type":21,"value":294},", funding",{"type":16,"tagName":126,"properties":296,"children":297},{"style":154},[298],{"type":21,"value":157},{"type":16,"tagName":126,"properties":300,"children":301},{"style":160},[302],{"type":21,"value":303},"\"data\"",{"type":16,"tagName":126,"properties":305,"children":306},{"style":148},[307],{"type":21,"value":308},", slippageBps",{"type":16,"tagName":126,"properties":310,"children":311},{"style":154},[312],{"type":21,"value":157},{"type":16,"tagName":126,"properties":314,"children":315},{"style":189},[316],{"type":21,"value":317},"2",{"type":16,"tagName":126,"properties":319,"children":320},{"style":148},[321],{"type":21,"value":322},");",{"type":21,"value":34},{"type":16,"tagName":126,"properties":325,"children":326},{"class":128},[],{"type":21,"value":34},{"type":16,"tagName":126,"properties":329,"children":330},{"class":128},[331,336,340,345,350,354,359,363],{"type":16,"tagName":126,"properties":332,"children":333},{"style":148},[334],{"type":21,"value":335},"timeseries data ",{"type":16,"tagName":126,"properties":337,"children":338},{"style":154},[339],{"type":21,"value":157},{"type":16,"tagName":126,"properties":341,"children":342},{"style":142},[343],{"type":21,"value":344}," ohlcv",{"type":16,"tagName":126,"properties":346,"children":347},{"style":148},[348],{"type":21,"value":349},"(symbol",{"type":16,"tagName":126,"properties":351,"children":352},{"style":154},[353],{"type":21,"value":157},{"type":16,"tagName":126,"properties":355,"children":356},{"style":148},[357],{"type":21,"value":358},"currentSymbol, exchange",{"type":16,"tagName":126,"properties":360,"children":361},{"style":154},[362],{"type":21,"value":157},{"type":16,"tagName":126,"properties":364,"children":365},{"style":148},[366],{"type":21,"value":367},"currentExchange);",{"type":21,"value":34},{"type":16,"tagName":126,"properties":370,"children":371},{"class":128},[372,377,381,386,391,395,400,404,409],{"type":16,"tagName":126,"properties":373,"children":374},{"style":148},[375],{"type":21,"value":376},"timeseries fast ",{"type":16,"tagName":126,"properties":378,"children":379},{"style":154},[380],{"type":21,"value":157},{"type":16,"tagName":126,"properties":382,"children":383},{"style":142},[384],{"type":21,"value":385}," ema",{"type":16,"tagName":126,"properties":387,"children":388},{"style":148},[389],{"type":21,"value":390},"(source",{"type":16,"tagName":126,"properties":392,"children":393},{"style":154},[394],{"type":21,"value":157},{"type":16,"tagName":126,"properties":396,"children":397},{"style":148},[398],{"type":21,"value":399},"data.close, period",{"type":16,"tagName":126,"properties":401,"children":402},{"style":154},[403],{"type":21,"value":157},{"type":16,"tagName":126,"properties":405,"children":406},{"style":189},[407],{"type":21,"value":408},"21",{"type":16,"tagName":126,"properties":410,"children":411},{"style":148},[412],{"type":21,"value":322},{"type":21,"value":34},{"type":16,"tagName":126,"properties":415,"children":416},{"class":128},[417,422,426,430,434,438,442,446,451],{"type":16,"tagName":126,"properties":418,"children":419},{"style":148},[420],{"type":21,"value":421},"timeseries slow ",{"type":16,"tagName":126,"properties":423,"children":424},{"style":154},[425],{"type":21,"value":157},{"type":16,"tagName":126,"properties":427,"children":428},{"style":142},[429],{"type":21,"value":385},{"type":16,"tagName":126,"properties":431,"children":432},{"style":148},[433],{"type":21,"value":390},{"type":16,"tagName":126,"properties":435,"children":436},{"style":154},[437],{"type":21,"value":157},{"type":16,"tagName":126,"properties":439,"children":440},{"style":148},[441],{"type":21,"value":399},{"type":16,"tagName":126,"properties":443,"children":444},{"style":154},[445],{"type":21,"value":157},{"type":16,"tagName":126,"properties":447,"children":448},{"style":189},[449],{"type":21,"value":450},"55",{"type":16,"tagName":126,"properties":452,"children":453},{"style":148},[454],{"type":21,"value":322},{"type":21,"value":34},{"type":16,"tagName":126,"properties":457,"children":458},{"class":128},[],{"type":21,"value":34},{"type":16,"tagName":126,"properties":461,"children":462},{"class":128},[463,468,473,478],{"type":16,"tagName":126,"properties":464,"children":465},{"style":154},[466],{"type":21,"value":467},"if",{"type":16,"tagName":126,"properties":469,"children":470},{"style":148},[471],{"type":21,"value":472}," (",{"type":16,"tagName":126,"properties":474,"children":475},{"style":142},[476],{"type":21,"value":477},"crossover",{"type":16,"tagName":126,"properties":479,"children":480},{"style":148},[481],{"type":21,"value":482},"(fast, slow)) {",{"type":21,"value":34},{"type":16,"tagName":126,"properties":485,"children":486},{"class":128},[487,492,497,502,507,512,517],{"type":16,"tagName":126,"properties":488,"children":489},{"style":148},[490],{"type":21,"value":491},"  strategy.",{"type":16,"tagName":126,"properties":493,"children":494},{"style":142},[495],{"type":21,"value":496},"entry",{"type":16,"tagName":126,"properties":498,"children":499},{"style":148},[500],{"type":21,"value":501},"(",{"type":16,"tagName":126,"properties":503,"children":504},{"style":160},[505],{"type":21,"value":506},"\"Trend\"",{"type":16,"tagName":126,"properties":508,"children":509},{"style":148},[510],{"type":21,"value":511},", ",{"type":16,"tagName":126,"properties":513,"children":514},{"style":160},[515],{"type":21,"value":516},"\"long\"",{"type":16,"tagName":126,"properties":518,"children":519},{"style":148},[520],{"type":21,"value":322},{"type":21,"value":34},{"type":16,"tagName":126,"properties":523,"children":524},{"class":128},[525],{"type":16,"tagName":126,"properties":526,"children":527},{"style":148},[528],{"type":21,"value":529},"}",{"type":21,"value":34},{"type":16,"tagName":126,"properties":532,"children":533},{"class":128},[534,538,542,547],{"type":16,"tagName":126,"properties":535,"children":536},{"style":154},[537],{"type":21,"value":467},{"type":16,"tagName":126,"properties":539,"children":540},{"style":148},[541],{"type":21,"value":472},{"type":16,"tagName":126,"properties":543,"children":544},{"style":142},[545],{"type":21,"value":546},"crossunder",{"type":16,"tagName":126,"properties":548,"children":549},{"style":148},[550],{"type":21,"value":482},{"type":21,"value":34},{"type":16,"tagName":126,"properties":553,"children":554},{"class":128},[555,559,564],{"type":16,"tagName":126,"properties":556,"children":557},{"style":148},[558],{"type":21,"value":491},{"type":16,"tagName":126,"properties":560,"children":561},{"style":142},[562],{"type":21,"value":563},"closeAll",{"type":16,"tagName":126,"properties":565,"children":566},{"style":148},[567],{"type":21,"value":568},"();",{"type":21,"value":34},{"type":16,"tagName":126,"properties":571,"children":572},{"class":128},[573],{"type":16,"tagName":126,"properties":574,"children":575},{"style":148},[576],{"type":21,"value":529},{"type":21,"value":34},{"type":16,"tagName":126,"properties":579,"children":580},{"class":128},[581,585,590,595,600,605,610],{"type":16,"tagName":126,"properties":582,"children":583},{"style":154},[584],{"type":21,"value":467},{"type":16,"tagName":126,"properties":586,"children":587},{"style":148},[588],{"type":21,"value":589}," (strategy.",{"type":16,"tagName":126,"properties":591,"children":592},{"style":142},[593],{"type":21,"value":594},"positionSize",{"type":16,"tagName":126,"properties":596,"children":597},{"style":148},[598],{"type":21,"value":599},"() ",{"type":16,"tagName":126,"properties":601,"children":602},{"style":154},[603],{"type":21,"value":604},">",{"type":16,"tagName":126,"properties":606,"children":607},{"style":189},[608],{"type":21,"value":609}," 0",{"type":16,"tagName":126,"properties":611,"children":612},{"style":148},[613],{"type":21,"value":614},") {",{"type":21,"value":34},{"type":16,"tagName":126,"properties":617,"children":618},{"class":128},[619,623,628,632,637,642,646,650,655,659,664,669,673,678,683],{"type":16,"tagName":126,"properties":620,"children":621},{"style":148},[622],{"type":21,"value":491},{"type":16,"tagName":126,"properties":624,"children":625},{"style":142},[626],{"type":21,"value":627},"exit",{"type":16,"tagName":126,"properties":629,"children":630},{"style":148},[631],{"type":21,"value":501},{"type":16,"tagName":126,"properties":633,"children":634},{"style":160},[635],{"type":21,"value":636},"\"Protect\"",{"type":16,"tagName":126,"properties":638,"children":639},{"style":148},[640],{"type":21,"value":641},", fromEntry",{"type":16,"tagName":126,"properties":643,"children":644},{"style":154},[645],{"type":21,"value":157},{"type":16,"tagName":126,"properties":647,"children":648},{"style":160},[649],{"type":21,"value":506},{"type":16,"tagName":126,"properties":651,"children":652},{"style":148},[653],{"type":21,"value":654},", stop",{"type":16,"tagName":126,"properties":656,"children":657},{"style":154},[658],{"type":21,"value":157},{"type":16,"tagName":126,"properties":660,"children":661},{"style":148},[662],{"type":21,"value":663},"strategy.",{"type":16,"tagName":126,"properties":665,"children":666},{"style":142},[667],{"type":21,"value":668},"positionAvgPrice",{"type":16,"tagName":126,"properties":670,"children":671},{"style":148},[672],{"type":21,"value":599},{"type":16,"tagName":126,"properties":674,"children":675},{"style":154},[676],{"type":21,"value":677},"*",{"type":16,"tagName":126,"properties":679,"children":680},{"style":189},[681],{"type":21,"value":682}," 0.97",{"type":16,"tagName":126,"properties":684,"children":685},{"style":148},[686],{"type":21,"value":322},{"type":21,"value":34},{"type":16,"tagName":126,"properties":689,"children":690},{"class":128},[691],{"type":16,"tagName":126,"properties":692,"children":693},{"style":148},[694],{"type":21,"value":529},{"type":21,"value":34},{"type":16,"tagName":126,"properties":697,"children":698},{"class":128},[],{"type":21,"value":34},{"type":16,"tagName":126,"properties":701,"children":702},{"class":128},[703,708,713,717,722,726,731,736,740,745,750,755,759,763,768,773,777,781,786],{"type":16,"tagName":126,"properties":704,"children":705},{"style":142},[706],{"type":21,"value":707},"plotLine",{"type":16,"tagName":126,"properties":709,"children":710},{"style":148},[711],{"type":21,"value":712},"(value",{"type":16,"tagName":126,"properties":714,"children":715},{"style":154},[716],{"type":21,"value":157},{"type":16,"tagName":126,"properties":718,"children":719},{"style":148},[720],{"type":21,"value":721},"fast, width",{"type":16,"tagName":126,"properties":723,"children":724},{"style":154},[725],{"type":21,"value":157},{"type":16,"tagName":126,"properties":727,"children":728},{"style":189},[729],{"type":21,"value":730},"1",{"type":16,"tagName":126,"properties":732,"children":733},{"style":148},[734],{"type":21,"value":735},", colors",{"type":16,"tagName":126,"properties":737,"children":738},{"style":154},[739],{"type":21,"value":157},{"type":16,"tagName":126,"properties":741,"children":742},{"style":148},[743],{"type":21,"value":744},"[",{"type":16,"tagName":126,"properties":746,"children":747},{"style":160},[748],{"type":21,"value":749},"\"#16a34a\"",{"type":16,"tagName":126,"properties":751,"children":752},{"style":148},[753],{"type":21,"value":754},"], label",{"type":16,"tagName":126,"properties":756,"children":757},{"style":154},[758],{"type":21,"value":157},{"type":16,"tagName":126,"properties":760,"children":761},{"style":148},[762],{"type":21,"value":744},{"type":16,"tagName":126,"properties":764,"children":765},{"style":160},[766],{"type":21,"value":767},"\"EMA 21\"",{"type":16,"tagName":126,"properties":769,"children":770},{"style":148},[771],{"type":21,"value":772},"], desc",{"type":16,"tagName":126,"properties":774,"children":775},{"style":154},[776],{"type":21,"value":157},{"type":16,"tagName":126,"properties":778,"children":779},{"style":148},[780],{"type":21,"value":744},{"type":16,"tagName":126,"properties":782,"children":783},{"style":160},[784],{"type":21,"value":785},"\"Fast EMA\"",{"type":16,"tagName":126,"properties":787,"children":788},{"style":148},[789],{"type":21,"value":790},"]);",{"type":21,"value":34},{"type":16,"tagName":126,"properties":793,"children":794},{"class":128},[795,799,803,807,812,816,820,824,828,832,837,841,845,849,854,858,862,866,871],{"type":16,"tagName":126,"properties":796,"children":797},{"style":142},[798],{"type":21,"value":707},{"type":16,"tagName":126,"properties":800,"children":801},{"style":148},[802],{"type":21,"value":712},{"type":16,"tagName":126,"properties":804,"children":805},{"style":154},[806],{"type":21,"value":157},{"type":16,"tagName":126,"properties":808,"children":809},{"style":148},[810],{"type":21,"value":811},"slow, width",{"type":16,"tagName":126,"properties":813,"children":814},{"style":154},[815],{"type":21,"value":157},{"type":16,"tagName":126,"properties":817,"children":818},{"style":189},[819],{"type":21,"value":730},{"type":16,"tagName":126,"properties":821,"children":822},{"style":148},[823],{"type":21,"value":735},{"type":16,"tagName":126,"properties":825,"children":826},{"style":154},[827],{"type":21,"value":157},{"type":16,"tagName":126,"properties":829,"children":830},{"style":148},[831],{"type":21,"value":744},{"type":16,"tagName":126,"properties":833,"children":834},{"style":160},[835],{"type":21,"value":836},"\"#dc2626\"",{"type":16,"tagName":126,"properties":838,"children":839},{"style":148},[840],{"type":21,"value":754},{"type":16,"tagName":126,"properties":842,"children":843},{"style":154},[844],{"type":21,"value":157},{"type":16,"tagName":126,"properties":846,"children":847},{"style":148},[848],{"type":21,"value":744},{"type":16,"tagName":126,"properties":850,"children":851},{"style":160},[852],{"type":21,"value":853},"\"EMA 55\"",{"type":16,"tagName":126,"properties":855,"children":856},{"style":148},[857],{"type":21,"value":772},{"type":16,"tagName":126,"properties":859,"children":860},{"style":154},[861],{"type":21,"value":157},{"type":16,"tagName":126,"properties":863,"children":864},{"style":148},[865],{"type":21,"value":744},{"type":16,"tagName":126,"properties":867,"children":868},{"style":160},[869],{"type":21,"value":870},"\"Slow EMA\"",{"type":16,"tagName":126,"properties":872,"children":873},{"style":148},[874],{"type":21,"value":790},{"type":21,"value":34},{"type":16,"tagName":17,"properties":877,"children":878,"position":888},{},[879],{"type":21,"value":880,"position":881},"Reading the declaration, which is doing most of the perps work:",{"start":882,"end":885},{"line":883,"column":25,"offset":884},29,1384,{"line":883,"column":886,"offset":887},64,1447,{"start":889,"end":890},{"line":883,"column":25,"offset":884},{"line":883,"column":886,"offset":887},{"type":21,"value":34},{"type":16,"tagName":893,"properties":894,"children":895,"position":1095},"ul",{},[896,897,1015,1016,1064,1065,1094],{"type":21,"value":34},{"type":16,"tagName":898,"properties":899,"children":900,"position":1011},"li",{},[901,916,922,935,942,959,966,979,985,1004],{"type":16,"tagName":68,"properties":902,"children":903,"position":913},{},[904],{"type":21,"value":905,"position":906},"instrument=\"perps\"",{"start":907,"end":910},{"line":908,"column":44,"offset":909},31,1451,{"line":908,"column":911,"offset":912},23,1471,{"start":914,"end":915},{"line":908,"column":44,"offset":909},{"line":908,"column":911,"offset":912},{"type":21,"value":917,"position":918}," with ",{"start":919,"end":920},{"line":908,"column":911,"offset":912},{"line":908,"column":883,"offset":921},1477,{"type":16,"tagName":68,"properties":923,"children":924,"position":932},{},[925],{"type":21,"value":926,"position":927},"leverage=10",{"start":928,"end":929},{"line":908,"column":883,"offset":921},{"line":908,"column":930,"offset":931},42,1490,{"start":933,"end":934},{"line":908,"column":883,"offset":921},{"line":908,"column":930,"offset":931},{"type":21,"value":936,"position":937},": sizing commits ",{"start":938,"end":939},{"line":908,"column":930,"offset":931},{"line":908,"column":940,"offset":941},59,1507,{"type":16,"tagName":943,"properties":944,"children":945,"position":954},"strong",{},[946],{"type":21,"value":947,"position":948},"margin",{"start":949,"end":952},{"line":908,"column":950,"offset":951},61,1509,{"line":908,"column":96,"offset":953},1515,{"start":955,"end":956},{"line":908,"column":940,"offset":941},{"line":908,"column":957,"offset":958},69,1517,{"type":21,"value":960,"position":961},", not notional. ",{"start":962,"end":963},{"line":908,"column":957,"offset":958},{"line":908,"column":964,"offset":965},85,1533,{"type":16,"tagName":68,"properties":967,"children":968,"position":976},{},[969],{"type":21,"value":970,"position":971},"qtyValue=10",{"start":972,"end":973},{"line":908,"column":964,"offset":965},{"line":908,"column":974,"offset":975},98,1546,{"start":977,"end":978},{"line":908,"column":964,"offset":965},{"line":908,"column":974,"offset":975},{"type":21,"value":980,"position":981}," means each entry commits 10% of equity as isolated margin; the position's notional is that margin times leverage. The engine tracks the position's liquidation price from your leverage and maintenance margin, and closes you there if a bar proves or assumes the level traded. See ",{"start":982,"end":983},{"line":908,"column":974,"offset":975},{"line":908,"column":49,"offset":984},1825,{"type":16,"tagName":986,"properties":987,"children":989,"position":999},"a",{"href":988},"perps-and-leverage.md",[990],{"type":21,"value":991,"position":992},"Perps and Leverage",{"start":993,"end":996},{"line":908,"column":994,"offset":995},378,1826,{"line":908,"column":997,"offset":998},396,1844,{"start":1000,"end":1001},{"line":908,"column":49,"offset":984},{"line":908,"column":1002,"offset":1003},420,1868,{"type":21,"value":1005,"position":1006},".",{"start":1007,"end":1008},{"line":908,"column":1002,"offset":1003},{"line":908,"column":1009,"offset":1010},421,1869,{"start":1012,"end":1014},{"line":908,"column":25,"offset":1013},1449,{"line":908,"column":1009,"offset":1010},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1017,"children":1018,"position":1060},{},[1019,1034,1041,1053],{"type":16,"tagName":68,"properties":1020,"children":1021,"position":1031},{},[1022],{"type":21,"value":1023,"position":1024},"makerFeePercent=0.015, takerFeePercent=0.045",{"start":1025,"end":1028},{"line":1026,"column":44,"offset":1027},32,1872,{"line":1026,"column":1029,"offset":1030},49,1918,{"start":1032,"end":1033},{"line":1026,"column":44,"offset":1027},{"line":1026,"column":1029,"offset":1030},{"type":21,"value":1035,"position":1036},": fees route by fill type, so market entries, stops, and ",{"start":1037,"end":1038},{"line":1026,"column":1029,"offset":1030},{"line":1026,"column":1039,"offset":1040},106,1975,{"type":16,"tagName":68,"properties":1042,"children":1043,"position":1050},{},[1044],{"type":21,"value":563,"position":1045},{"start":1046,"end":1047},{"line":1026,"column":1039,"offset":1040},{"line":1026,"column":1048,"offset":1049},116,1985,{"start":1051,"end":1052},{"line":1026,"column":1039,"offset":1040},{"line":1026,"column":1048,"offset":1049},{"type":21,"value":1054,"position":1055}," pay taker while limit-bound fills pay maker. Set your own tier's numbers; the declaration ships with the script so a shared backtest carries its own cost assumptions.",{"start":1056,"end":1057},{"line":1026,"column":1048,"offset":1049},{"line":1026,"column":1058,"offset":1059},283,2152,{"start":1061,"end":1063},{"line":1026,"column":25,"offset":1062},1870,{"line":1026,"column":1058,"offset":1059},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1066,"children":1067,"position":1090},{},[1068,1083],{"type":16,"tagName":68,"properties":1069,"children":1070,"position":1080},{},[1071],{"type":21,"value":1072,"position":1073},"funding=\"data\"",{"start":1074,"end":1077},{"line":1075,"column":44,"offset":1076},33,2155,{"line":1075,"column":1078,"offset":1079},19,2171,{"start":1081,"end":1082},{"line":1075,"column":44,"offset":1076},{"line":1075,"column":1078,"offset":1079},{"type":21,"value":1084,"position":1085},": the engine settles the actual recorded funding events from the chart's venue against your open position, debiting cash and committed margin together. This is the default; it is written out here because it is the point.",{"start":1086,"end":1087},{"line":1075,"column":1078,"offset":1079},{"line":1075,"column":1088,"offset":1089},239,2391,{"start":1091,"end":1093},{"line":1075,"column":25,"offset":1092},2153,{"line":1075,"column":1088,"offset":1089},{"type":21,"value":34},{"start":1096,"end":1097},{"line":908,"column":25,"offset":1013},{"line":1075,"column":1088,"offset":1089},{"type":21,"value":34},{"type":16,"tagName":36,"properties":1100,"children":1102,"position":1112},{"id":1101},"reading-the-result",[1103],{"type":21,"value":1104,"position":1105},"Reading the result",{"start":1106,"end":1109},{"line":1107,"column":45,"offset":1108},35,2396,{"line":1107,"column":1110,"offset":1111},22,2414,{"start":1113,"end":1115},{"line":1107,"column":25,"offset":1114},2393,{"line":1107,"column":1110,"offset":1111},{"type":21,"value":34},{"type":16,"tagName":17,"properties":1118,"children":1119,"position":1129},{},[1120],{"type":21,"value":1121,"position":1122},"Three lines to check before believing the equity curve:",{"start":1123,"end":1126},{"line":1124,"column":25,"offset":1125},37,2416,{"line":1124,"column":1127,"offset":1128},56,2471,{"start":1130,"end":1131},{"line":1124,"column":25,"offset":1125},{"line":1124,"column":1127,"offset":1128},{"type":21,"value":34},{"type":16,"tagName":1134,"properties":1135,"children":1136,"position":1310},"ol",{},[1137,1138,1196,1197,1254,1255,1309],{"type":21,"value":34},{"type":16,"tagName":898,"properties":1139,"children":1140,"position":1192},{},[1141,1165,1172,1185],{"type":16,"tagName":943,"properties":1142,"children":1143,"position":1159},{},[1144],{"type":16,"tagName":68,"properties":1145,"children":1146,"position":1156},{},[1147],{"type":21,"value":1148,"position":1149},"fundingPaid",{"start":1150,"end":1154},{"line":1151,"column":1152,"offset":1153},39,6,2478,{"line":1151,"column":1078,"offset":1155},2491,{"start":1157,"end":1158},{"line":1151,"column":1152,"offset":1153},{"line":1151,"column":1078,"offset":1155},{"start":1160,"end":1162},{"line":1151,"column":45,"offset":1161},2476,{"line":1151,"column":1163,"offset":1164},21,2493,{"type":21,"value":1166,"position":1167}," in the stats: the signed funding bill. A long that looked fine gross can bleed to death through settlements while it holds; the same rules on a coarser interval hold through more settlements per trade. If part of the window had no recorded funding data, ",{"start":1168,"end":1169},{"line":1151,"column":1163,"offset":1164},{"line":1151,"column":1170,"offset":1171},276,2748,{"type":16,"tagName":68,"properties":1173,"children":1174,"position":1182},{},[1175],{"type":21,"value":1176,"position":1177},"fundingUnavailableCount",{"start":1178,"end":1179},{"line":1151,"column":1170,"offset":1171},{"line":1151,"column":1180,"offset":1181},301,2773,{"start":1183,"end":1184},{"line":1151,"column":1170,"offset":1171},{"line":1151,"column":1180,"offset":1181},{"type":21,"value":1186,"position":1187}," says so rather than pretending.",{"start":1188,"end":1189},{"line":1151,"column":1180,"offset":1181},{"line":1151,"column":1190,"offset":1191},333,2805,{"start":1193,"end":1195},{"line":1151,"column":25,"offset":1194},2473,{"line":1151,"column":1190,"offset":1191},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1198,"children":1199,"position":1250},{},[1200,1224,1231,1243],{"type":16,"tagName":943,"properties":1201,"children":1202,"position":1218},{},[1203],{"type":16,"tagName":68,"properties":1204,"children":1205,"position":1215},{},[1206],{"type":21,"value":1207,"position":1208},"liquidationCount",{"start":1209,"end":1212},{"line":1210,"column":1152,"offset":1211},40,2811,{"line":1210,"column":1213,"offset":1214},24,2829,{"start":1216,"end":1217},{"line":1210,"column":1152,"offset":1211},{"line":1210,"column":1213,"offset":1214},{"start":1219,"end":1221},{"line":1210,"column":45,"offset":1220},2809,{"line":1210,"column":1222,"offset":1223},26,2831,{"type":21,"value":1225,"position":1226}," and trades whose exit says ",{"start":1227,"end":1228},{"line":1210,"column":1222,"offset":1223},{"line":1210,"column":1229,"offset":1230},54,2859,{"type":16,"tagName":68,"properties":1232,"children":1233,"position":1240},{},[1234],{"type":21,"value":1235,"position":1236},"liquidation",{"start":1237,"end":1238},{"line":1210,"column":1229,"offset":1230},{"line":1210,"column":96,"offset":1239},2872,{"start":1241,"end":1242},{"line":1210,"column":1229,"offset":1230},{"line":1210,"column":96,"offset":1239},{"type":21,"value":1244,"position":1245},": at 10x, a 3% protective stop and the liquidation level are uncomfortably close neighbors. If liquidations show up, the venue closed you before your stop did.",{"start":1246,"end":1247},{"line":1210,"column":96,"offset":1239},{"line":1210,"column":1248,"offset":1249},226,3031,{"start":1251,"end":1253},{"line":1210,"column":25,"offset":1252},2806,{"line":1210,"column":1248,"offset":1249},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1256,"children":1257,"position":1305},{},[1258,1274,1281,1299],{"type":16,"tagName":943,"properties":1259,"children":1260,"position":1269},{},[1261],{"type":21,"value":1262,"position":1263},"The fill-precision line",{"start":1264,"end":1267},{"line":1265,"column":1152,"offset":1266},41,3037,{"line":1265,"column":883,"offset":1268},3060,{"start":1270,"end":1272},{"line":1265,"column":45,"offset":1271},3035,{"line":1265,"column":908,"offset":1273},3062,{"type":21,"value":1275,"position":1276}," in the run-details popover: whether contested fills were verified with finer recorded data or settled by assumption. See ",{"start":1277,"end":1278},{"line":1265,"column":908,"offset":1273},{"line":1265,"column":1279,"offset":1280},153,3184,{"type":16,"tagName":986,"properties":1282,"children":1284,"position":1294},{"href":1283},"reading-the-tester.md",[1285],{"type":21,"value":1286,"position":1287},"Reading the Strategy Tester",{"start":1288,"end":1291},{"line":1265,"column":1289,"offset":1290},154,3185,{"line":1265,"column":1292,"offset":1293},181,3212,{"start":1295,"end":1296},{"line":1265,"column":1279,"offset":1280},{"line":1265,"column":1297,"offset":1298},205,3236,{"type":21,"value":1005,"position":1300},{"start":1301,"end":1302},{"line":1265,"column":1297,"offset":1298},{"line":1265,"column":1303,"offset":1304},206,3237,{"start":1306,"end":1308},{"line":1265,"column":25,"offset":1307},3032,{"line":1265,"column":1303,"offset":1304},{"type":21,"value":34},{"start":1311,"end":1312},{"line":1151,"column":25,"offset":1194},{"line":1265,"column":1303,"offset":1304},{"type":21,"value":34},{"type":16,"tagName":36,"properties":1315,"children":1317,"position":1326},{"id":1316},"tune-it-like-its-real",[1318],{"type":21,"value":1319,"position":1320},"Tune it like it's real",{"start":1321,"end":1324},{"line":1322,"column":45,"offset":1323},43,3242,{"line":1322,"column":1222,"offset":1325},3264,{"start":1327,"end":1329},{"line":1322,"column":25,"offset":1328},3239,{"line":1322,"column":1222,"offset":1325},{"type":21,"value":34},{"type":16,"tagName":893,"properties":1332,"children":1333,"position":1474},{},[1334,1335,1386,1387,1442,1443,1473],{"type":21,"value":34},{"type":16,"tagName":898,"properties":1336,"children":1337,"position":1382},{},[1338,1356,1363,1375],{"type":16,"tagName":943,"properties":1339,"children":1340,"position":1350},{},[1341],{"type":21,"value":1342,"position":1343},"Leverage down first.",{"start":1344,"end":1347},{"line":1345,"column":62,"offset":1346},45,3270,{"line":1345,"column":1348,"offset":1349},25,3290,{"start":1351,"end":1353},{"line":1345,"column":44,"offset":1352},3268,{"line":1345,"column":1354,"offset":1355},27,3292,{"type":21,"value":1357,"position":1358}," At 5x the liquidation level sits twice as far; watch ",{"start":1359,"end":1360},{"line":1345,"column":1354,"offset":1355},{"line":1345,"column":1361,"offset":1362},81,3346,{"type":16,"tagName":68,"properties":1364,"children":1365,"position":1372},{},[1366],{"type":21,"value":1207,"position":1367},{"start":1368,"end":1369},{"line":1345,"column":1361,"offset":1362},{"line":1345,"column":1370,"offset":1371},99,3364,{"start":1373,"end":1374},{"line":1345,"column":1361,"offset":1362},{"line":1345,"column":1370,"offset":1371},{"type":21,"value":1376,"position":1377}," go to zero before you tune anything else.",{"start":1378,"end":1379},{"line":1345,"column":1370,"offset":1371},{"line":1345,"column":1380,"offset":1381},141,3406,{"start":1383,"end":1385},{"line":1345,"column":25,"offset":1384},3266,{"line":1345,"column":1380,"offset":1381},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1388,"children":1389,"position":1438},{},[1390,1406,1413,1431],{"type":16,"tagName":943,"properties":1391,"children":1392,"position":1401},{},[1393],{"type":21,"value":1394,"position":1395},"Widen the stop or drop the interval.",{"start":1396,"end":1399},{"line":1397,"column":62,"offset":1398},46,3411,{"line":1397,"column":1265,"offset":1400},3447,{"start":1402,"end":1404},{"line":1397,"column":44,"offset":1403},3409,{"line":1397,"column":1322,"offset":1405},3449,{"type":21,"value":1407,"position":1408}," Brackets arm on the bar after entry, so a tight stop on a coarse chart is exposed for one full bar. ",{"start":1409,"end":1410},{"line":1397,"column":1322,"offset":1405},{"line":1397,"column":1411,"offset":1412},144,3550,{"type":16,"tagName":986,"properties":1414,"children":1416,"position":1426},{"href":1415},"fill-simulation.md#choosing-an-interval-to-trust",[1417],{"type":21,"value":1418,"position":1419},"Fill Simulation",{"start":1420,"end":1423},{"line":1397,"column":1421,"offset":1422},145,3551,{"line":1397,"column":1424,"offset":1425},160,3566,{"start":1427,"end":1428},{"line":1397,"column":1411,"offset":1412},{"line":1397,"column":1429,"offset":1430},211,3617,{"type":21,"value":1432,"position":1433}," covers this trade-off.",{"start":1434,"end":1435},{"line":1397,"column":1429,"offset":1430},{"line":1397,"column":1436,"offset":1437},234,3640,{"start":1439,"end":1441},{"line":1397,"column":25,"offset":1440},3407,{"line":1397,"column":1436,"offset":1437},{"type":21,"value":34},{"type":16,"tagName":898,"properties":1444,"children":1445,"position":1469},{},[1446,1462],{"type":16,"tagName":943,"properties":1447,"children":1448,"position":1457},{},[1449],{"type":21,"value":1450,"position":1451},"Run the spot twin.",{"start":1452,"end":1455},{"line":1453,"column":62,"offset":1454},47,3645,{"line":1453,"column":911,"offset":1456},3663,{"start":1458,"end":1460},{"line":1453,"column":44,"offset":1459},3643,{"line":1453,"column":1348,"offset":1461},3665,{"type":21,"value":1463,"position":1464}," Duplicate the script, delete the perps params, and put both on the chart: compare mode shows exactly what leverage, fees, and funding cost you. That difference is the part most backtests never model.",{"start":1465,"end":1466},{"line":1453,"column":1348,"offset":1461},{"line":1453,"column":1467,"offset":1468},225,3865,{"start":1470,"end":1472},{"line":1453,"column":25,"offset":1471},3641,{"line":1453,"column":1467,"offset":1468},{"type":21,"value":34},{"start":1475,"end":1476},{"line":1345,"column":25,"offset":1384},{"line":1453,"column":1467,"offset":1468},{"quirksMode":1478},false,{"start":1480,"end":1481},{"line":25,"column":25,"offset":26},{"line":1482,"column":25,"offset":1483},48,3866,1784888034692]