Ver Fonte

feat: add price twap entry backtests

lxy há 1 mês atrás
pai
commit
da727be843

+ 4 - 0
AGENTS.md

@@ -0,0 +1,4 @@
+# Project Agent Notes
+
+- Shell commands in this repo should be run through `rtk`.
+- For future ETH strategy exploration, use multiple `gpt-5.5` subagents in parallel when the user asks to continue exploration. The main agent should coordinate, wait for subagent results, compare outcomes, and decide the next exploration direction. Implementation and experiment execution should be delegated to subagents unless the user explicitly asks the main agent to do the work directly.

+ 1 - 1
okx_codex_trader/bbmr_report.py

@@ -117,7 +117,7 @@ def run_bbmr_segment(
             pending_entry_side = None
             pending_entry_side = None
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]):
+        if position is not None:
             stop_hit = (
             stop_hit = (
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
             ) or (
             ) or (

+ 1 - 1
okx_codex_trader/bbsb_report.py

@@ -94,7 +94,7 @@ def run_bbsb_segment(
             pending_entry_side = None
             pending_entry_side = None
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]):
+        if position is not None:
             stop_hit = (
             stop_hit = (
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
             ) or (
             ) or (

+ 25 - 12
reports/ultrashort/ultrashort-correlation.csv

@@ -1,12 +1,25 @@
-name,BTC RSI2 Guarded 15m,BTC Trend RSI-BB 15m,ETH RSI2 15m,ETH Trend RSI-BB 15m,ETH/BTC RSI Filter 15m,BTC Lead ETH Lag 15m,BTC Lead ETH Lag 5m,BTC Lead ETH Lag 3m,Balanced 4,Aggressive 5,Lead Lag Basket
-BTC RSI2 Guarded 15m,1.0,0.5149909289044029,0.17956332343187892,0.13950927985916178,0.18500546977814564,0.07491702810132556,0.06750931499863921,0.0854575901320023,0.5909406595597062,0.32331692395187467,0.09564704473736313
-BTC Trend RSI-BB 15m,0.5149909289044029,1.0,0.055943721371995485,0.13262614066320175,0.061935274560604,0.055901236653856434,0.09162426426508247,0.01813479618483062,0.5664185029496085,0.18785653835755153,0.07962220616067182
-ETH RSI2 15m,0.17956332343187892,0.055943721371995485,1.0,0.10740852196206939,0.6560674021922206,0.050021352015253095,0.06675109197178428,-0.014712623862573854,0.2520706852645001,0.34335992438461127,0.05799369989435516
-ETH Trend RSI-BB 15m,0.13950927985916178,0.13262614066320175,0.10740852196206939,1.0,0.1301818018884054,-0.011073237072441658,-0.01552046357638219,0.01885941668103009,0.10349471727666164,0.043901279769122954,-0.011669147554052644
-ETH/BTC RSI Filter 15m,0.18500546977814564,0.061935274560604,0.6560674021922206,0.1301818018884054,1.0,0.06117879003328507,0.07419502623497894,0.04901435064330361,0.3258138412762762,0.3278215245257931,0.08039206716643461
-BTC Lead ETH Lag 15m,0.07491702810132556,0.055901236653856434,0.050021352015253095,-0.011073237072441658,0.06117879003328507,1.0,0.45028215033526486,0.20616477221752125,0.3803128059198608,0.8531457582911218,0.8786823437172707
-BTC Lead ETH Lag 5m,0.06750931499863921,0.09162426426508247,0.06675109197178428,-0.01552046357638219,0.07419502623497894,0.45028215033526486,1.0,0.3348234447743723,0.7773460351666048,0.7161684873111916,0.7782521917212968
-BTC Lead ETH Lag 3m,0.0854575901320023,0.01813479618483062,-0.014712623862573854,0.01885941668103009,0.04901435064330361,0.20616477221752125,0.3348234447743723,1.0,0.27474735013012813,0.28039107227916926,0.48459894719580127
-Balanced 4,0.5909406595597062,0.5664185029496085,0.2520706852645001,0.10349471727666164,0.3258138412762762,0.3803128059198608,0.7773460351666048,0.27474735013012813,1.0,0.747389295837787,0.6283434737892283
-Aggressive 5,0.32331692395187467,0.18785653835755153,0.34335992438461127,0.043901279769122954,0.3278215245257931,0.8531457582911218,0.7161684873111916,0.28039107227916926,0.747389295837787,1.0,0.9142048688880176
-Lead Lag Basket,0.09564704473736313,0.07962220616067182,0.05799369989435516,-0.011669147554052644,0.08039206716643461,0.8786823437172707,0.7782521917212968,0.48459894719580127,0.6283434737892283,0.9142048688880176,1.0
+name,BTC RSI2 Guarded 15m,BTC RSI2 TWAP2 15m,BTC RSI2 TWAP3 15m,BTC RSI2 Price TWAP shallow 15m,BTC RSI2 Price TWAP mid 15m,BTC RSI2 Price TWAP deep 15m,BTC RSI2 Price TWAP 2slice 15m,BTC RSI2 Price TWAP mid fb2 15m,BTC RSI2 Price TWAP mid fb5 15m,BTC RSI2 Price TWAP deep fb2 15m,BTC RSI2 Price TWAP deep fb5 15m,BTC Trend RSI-BB 15m,ETH RSI2 15m,ETH RSI2 Price TWAP mid 15m,ETH RSI2 Price TWAP deep 15m,ETH RSI2 Price TWAP mid fb2 15m,ETH Trend RSI-BB 15m,ETH/BTC RSI Filter 15m,BTC Lead ETH Lag 15m,BTC Lead ETH Lag 5m,BTC Lead ETH Lag 3m,Balanced 4,Aggressive 5,Lead Lag Basket
+BTC RSI2 Guarded 15m,1.0,0.9344773435213827,0.8915846234109552,0.8850353340410234,0.7085827426362215,0.4880478889160322,0.7934145191978982,0.6996839163574706,0.7089621207813571,0.4961835216146767,0.4722124357616944,0.5405563174313858,0.16076233562185385,0.1431097019720855,0.10782518644479704,0.13902552817924266,0.10297574509155308,0.16773473569260558,0.07049637041650053,0.06528610154698507,0.10819187212877313,0.5764380315455997,0.3115588910923123,0.09900393725058748
+BTC RSI2 TWAP2 15m,0.9344773435213827,1.0,0.9787584268088305,0.8442069831221518,0.6680568157606444,0.49403029526900716,0.753593070179974,0.6583719501770074,0.667126596162446,0.5009475493421036,0.47269004171052303,0.5005039967768674,0.16913445400348256,0.16434802401594795,0.12508236250860819,0.16078169170675544,0.10241537796647696,0.15691578503306863,0.06646583538077841,0.058420280946955616,0.08219253420837387,0.5348005858888382,0.29565135191808056,0.08764306555072052
+BTC RSI2 TWAP3 15m,0.8915846234109552,0.9787584268088305,1.0,0.8096212063559693,0.6398984388322556,0.48187724715447006,0.7223364616866834,0.627853298600225,0.6372389752711635,0.48981516759020116,0.46456833845980405,0.4711650277130342,0.16281116772199752,0.14628828972116853,0.11547457047841084,0.14300985350506168,0.09819490570619685,0.15665999174592826,0.05413715221168406,0.043645697866874986,0.07602023982260743,0.5023696527855886,0.2734932552222223,0.07115946114027276
+BTC RSI2 Price TWAP shallow 15m,0.8850353340410234,0.8442069831221518,0.8096212063559693,1.0,0.8624393080395407,0.6572514135252308,0.9138668538110832,0.8548344647995687,0.8568284695502657,0.6586434874094542,0.6220895836139939,0.4930306250623982,0.1663088555773802,0.13777034422304582,0.11168054989543677,0.13156543396298923,0.056313204998351095,0.15573947299260882,0.07638329180800496,0.079993402257213,0.10250545079964549,0.5327261099397479,0.30025064925413136,0.1086681936462802
+BTC RSI2 Price TWAP mid 15m,0.7085827426362215,0.6680568157606444,0.6398984388322556,0.8624393080395407,1.0,0.7717006814551277,0.9686870988763289,0.9868758937864585,0.9559369569894733,0.7624950550788938,0.7132558093522926,0.37722595830235395,0.15747695903437392,0.1346330702443425,0.11754238555116431,0.12655336249270416,0.009434616588574295,0.14977091384801053,0.06268855887586837,0.01834381191360518,0.06789320418815073,0.39936132484065734,0.23411820711345774,0.06787194138987043
+BTC RSI2 Price TWAP deep 15m,0.4880478889160322,0.49403029526900716,0.48187724715447006,0.6572514135252308,0.7717006814551277,1.0,0.7349651167374501,0.7763556299863529,0.7914162839829468,0.9750782814876358,0.9131024653920904,0.2521589350927829,0.1161746392264593,0.0939742520115745,0.08376098284253504,0.08744442579776313,0.00634097594160435,0.08397402087124305,0.028612117611211834,-0.019963285793259185,0.017405163403882873,0.24281371190278467,0.13819848481101452,0.016783557743891266
+BTC RSI2 Price TWAP 2slice 15m,0.7934145191978982,0.753593070179974,0.7223364616866834,0.9138668538110832,0.9686870988763289,0.7349651167374501,1.0,0.9571459665299435,0.9427867145606671,0.729414231005077,0.6854951667342556,0.4111079757767588,0.14935331294404863,0.12509258035915188,0.10738207751505066,0.1162536863691454,0.022954183881907297,0.1391575165341575,0.05973145209875228,0.016274287689223295,0.0726846533882821,0.43307011260626216,0.24411209080186252,0.06553467712102728
+BTC RSI2 Price TWAP mid fb2 15m,0.6996839163574706,0.6583719501770074,0.627853298600225,0.8548344647995687,0.9868758937864585,0.7763556299863529,0.9571459665299435,1.0,0.9694085952785859,0.7672990228237777,0.7156736516452655,0.37216098484024457,0.15796937569275132,0.1328000365375596,0.11477197997176052,0.12448425125286135,0.004867078856665965,0.14972593629809364,0.06137718371259213,0.02593391804968811,0.0588140956524615,0.39990598779373665,0.2340963824666469,0.06821135431593063
+BTC RSI2 Price TWAP mid fb5 15m,0.7089621207813571,0.667126596162446,0.6372389752711635,0.8568284695502657,0.9559369569894733,0.7914162839829468,0.9427867145606671,0.9694085952785859,1.0,0.7809012969199836,0.7301334764929378,0.3800783175887269,0.13450680626004044,0.10862120175457242,0.09187256207722357,0.10330777020736144,0.0216398391728452,0.11695458264026994,0.07984754441058557,0.025862126743847795,0.05226975016916836,0.397032525926752,0.23926296079945647,0.07961889168659587
+BTC RSI2 Price TWAP deep fb2 15m,0.4961835216146767,0.5009475493421036,0.48981516759020116,0.6586434874094542,0.7624950550788938,0.9750782814876358,0.729414231005077,0.7672990228237777,0.7809012969199836,1.0,0.9359027970302717,0.2529816152483951,0.11489276026812943,0.09127255658794609,0.08311831421770034,0.08731711482118372,0.013095592116403966,0.0870011814266675,0.024919790416107437,-0.02029845676157307,0.017726188635535226,0.2471203231561983,0.1375424339564289,0.013863120580116876
+BTC RSI2 Price TWAP deep fb5 15m,0.4722124357616944,0.47269004171052303,0.46456833845980405,0.6220895836139939,0.7132558093522926,0.9131024653920904,0.6854951667342556,0.7156736516452655,0.7301334764929378,0.9359027970302717,1.0,0.25981023920441426,0.12641573054470598,0.09648792870779013,0.0920243363703649,0.09565214490488443,0.009927692509706076,0.10390534838228419,0.030949310959165702,-0.019720555186476883,0.016789755486066236,0.24474179965120108,0.14114881113922942,0.01772856697748158
+BTC Trend RSI-BB 15m,0.5405563174313858,0.5005039967768674,0.4711650277130342,0.4930306250623982,0.37722595830235395,0.2521589350927829,0.4111079757767588,0.37216098484024457,0.3800783175887269,0.2529816152483951,0.25981023920441426,1.0,0.05011783768710631,0.04741722920855363,0.057838057873408746,0.04263966490010346,0.13052961819119585,0.05288533476215233,0.11487582945004338,0.12849551463691755,0.0539678961955832,0.5786393535138946,0.24496739503104908,0.14583398803772052
+ETH RSI2 15m,0.16076233562185385,0.16913445400348256,0.16281116772199752,0.1663088555773802,0.15747695903437392,0.1161746392264593,0.14935331294404863,0.15796937569275132,0.13450680626004044,0.11489276026812943,0.12641573054470598,0.05011783768710631,1.0,0.7152055560368065,0.6257217384201079,0.707929569728687,0.079331162747393,0.6543285140195021,0.04473422080335876,0.06891346291324596,-0.03550263412681768,0.2616291850610414,0.3645129740374403,0.05171196362218134
+ETH RSI2 Price TWAP mid 15m,0.1431097019720855,0.16434802401594795,0.14628828972116853,0.13777034422304582,0.1346330702443425,0.0939742520115745,0.12509258035915188,0.1328000365375596,0.10862120175457242,0.09127255658794609,0.09648792870779013,0.04741722920855363,0.7152055560368065,1.0,0.8484690295797795,0.9897991525983676,0.039880945672274556,0.4671753059737313,0.07909556811445394,0.07624075375519573,-0.020717936512332828,0.21656878385702463,0.3073021221091327,0.08277256197816688
+ETH RSI2 Price TWAP deep 15m,0.10782518644479704,0.12508236250860819,0.11547457047841084,0.11168054989543677,0.11754238555116431,0.08376098284253504,0.10738207751505066,0.11477197997176052,0.09187256207722357,0.08311831421770034,0.0920243363703649,0.057838057873408746,0.6257217384201079,0.8484690295797795,1.0,0.8528602905505079,0.03134097204887974,0.3991920025819038,0.0847182220115455,0.06705570095693697,-0.014972618051659434,0.18591619309832616,0.27525255915279967,0.08419485450499788
+ETH RSI2 Price TWAP mid fb2 15m,0.13902552817924266,0.16078169170675544,0.14300985350506168,0.13156543396298923,0.12655336249270416,0.08744442579776313,0.1162536863691454,0.12448425125286135,0.10330777020736144,0.08731711482118372,0.09565214490488443,0.04263966490010346,0.707929569728687,0.9897991525983676,0.8528602905505079,1.0,0.04343895754712941,0.47310090140966327,0.07959691246693146,0.07640894158224709,-0.021209798907738994,0.21507211338919022,0.3060557286843094,0.08294159526082313
+ETH Trend RSI-BB 15m,0.10297574509155308,0.10241537796647696,0.09819490570619685,0.056313204998351095,0.009434616588574295,0.00634097594160435,0.022954183881907297,0.004867078856665965,0.0216398391728452,0.013095592116403966,0.009927692509706076,0.13052961819119585,0.079331162747393,0.039880945672274556,0.03134097204887974,0.04343895754712941,1.0,0.08932170024323023,0.021324254441602433,0.0188415826036288,0.01614768896771498,0.10444352082446103,0.06287880203328643,0.022575685222843787
+ETH/BTC RSI Filter 15m,0.16773473569260558,0.15691578503306863,0.15665999174592826,0.15573947299260882,0.14977091384801053,0.08397402087124305,0.1391575165341575,0.14972593629809364,0.11695458264026994,0.0870011814266675,0.10390534838228419,0.05288533476215233,0.6543285140195021,0.4671753059737313,0.3991920025819038,0.47310090140966327,0.08932170024323023,1.0,0.06139669240630892,0.0787433790844914,0.04255062339683948,0.34918395825598636,0.3531022971522643,0.08242061946698091
+BTC Lead ETH Lag 15m,0.07049637041650053,0.06646583538077841,0.05413715221168406,0.07638329180800496,0.06268855887586837,0.028612117611211834,0.05973145209875228,0.06137718371259213,0.07984754441058557,0.024919790416107437,0.030949310959165702,0.11487582945004338,0.04473422080335876,0.07909556811445394,0.0847182220115455,0.07959691246693146,0.021324254441602433,0.06139669240630892,1.0,0.44634330075816925,0.10720047551980223,0.3902354066377391,0.8440155881500151,0.8710966190358888
+BTC Lead ETH Lag 5m,0.06528610154698507,0.058420280946955616,0.043645697866874986,0.079993402257213,0.01834381191360518,-0.019963285793259185,0.016274287689223295,0.02593391804968811,0.025862126743847795,-0.02029845676157307,-0.019720555186476883,0.12849551463691755,0.06891346291324596,0.07624075375519573,0.06705570095693697,0.07640894158224709,0.0188415826036288,0.0787433790844914,0.44634330075816925,1.0,0.2743546790846447,0.7856766499040041,0.7127909828453503,0.778310776199955
+BTC Lead ETH Lag 3m,0.10819187212877313,0.08219253420837387,0.07602023982260743,0.10250545079964549,0.06789320418815073,0.017405163403882873,0.0726846533882821,0.0588140956524615,0.05226975016916836,0.017726188635535226,0.016789755486066236,0.0539678961955832,-0.03550263412681768,-0.020717936512332828,-0.014972618051659434,-0.021209798907738994,0.01614768896771498,0.04255062339683948,0.10720047551980223,0.2743546790846447,1.0,0.25296193888964014,0.19790456522415717,0.41121118965391346
+Balanced 4,0.5764380315455997,0.5348005858888382,0.5023696527855886,0.5327261099397479,0.39936132484065734,0.24281371190278467,0.43307011260626216,0.39990598779373665,0.397032525926752,0.2471203231561983,0.24474179965120108,0.5786393535138946,0.2616291850610414,0.21656878385702463,0.18591619309832616,0.21507211338919022,0.10444352082446103,0.34918395825598636,0.3902354066377391,0.7856766499040041,0.25296193888964014,1.0,0.7627198489074638,0.647207922049667
+Aggressive 5,0.3115588910923123,0.29565135191808056,0.2734932552222223,0.30025064925413136,0.23411820711345774,0.13819848481101452,0.24411209080186252,0.2340963824666469,0.23926296079945647,0.1375424339564289,0.14114881113922942,0.24496739503104908,0.3645129740374403,0.3073021221091327,0.27525255915279967,0.3060557286843094,0.06287880203328643,0.3531022971522643,0.8440155881500151,0.7127909828453503,0.19790456522415717,0.7627198489074638,1.0,0.9057189111451613
+Lead Lag Basket,0.09900393725058748,0.08764306555072052,0.07115946114027276,0.1086681936462802,0.06787194138987043,0.016783557743891266,0.06553467712102728,0.06821135431593063,0.07961889168659587,0.013863120580116876,0.01772856697748158,0.14583398803772052,0.05171196362218134,0.08277256197816688,0.08419485450499788,0.08294159526082313,0.022575685222843787,0.08242061946698091,0.8710966190358888,0.778310776199955,0.41121118965391346,0.647207922049667,0.9057189111451613,1.0

+ 64 - 0
reports/ultrashort/ultrashort-cost-scenarios.csv

@@ -0,0 +1,64 @@
+strategy,cost,return,annualized,max_dd,calmar
+BTC RSI2 Guarded 15m,maker_maker,71.80%,8.87%,41.15%,0.22
+BTC RSI2 Guarded 15m,maker_taker,-21.69%,-3.77%,55.49%,-0.07
+BTC RSI2 Guarded 15m,taker_taker,-64.33%,-14.95%,70.42%,-0.21
+BTC RSI2 TWAP2 15m,maker_maker,-5.36%,-0.86%,43.21%,-0.02
+BTC RSI2 TWAP2 15m,maker_taker,-52.39%,-11.01%,60.62%,-0.18
+BTC RSI2 TWAP2 15m,taker_taker,-76.06%,-20.12%,77.26%,-0.26
+BTC RSI2 TWAP3 15m,maker_maker,-19.94%,-3.43%,44.53%,-0.08
+BTC RSI2 TWAP3 15m,maker_taker,-55.16%,-11.84%,60.97%,-0.19
+BTC RSI2 TWAP3 15m,taker_taker,-74.89%,-19.52%,76.62%,-0.25
+BTC RSI2 Price TWAP shallow 15m,maker_maker,433.00%,30.07%,25.85%,1.16
+BTC RSI2 Price TWAP shallow 15m,maker_taker,189.39%,18.17%,28.62%,0.63
+BTC RSI2 Price TWAP shallow 15m,taker_taker,57.04%,7.35%,38.39%,0.19
+BTC RSI2 Price TWAP mid 15m,maker_maker,772.15%,40.53%,23.51%,1.72
+BTC RSI2 Price TWAP mid 15m,maker_taker,429.08%,29.92%,26.10%,1.15
+BTC RSI2 Price TWAP mid 15m,taker_taker,220.81%,20.10%,28.70%,0.70
+BTC RSI2 Price TWAP deep 15m,maker_maker,1187.47%,49.40%,12.32%,4.01
+BTC RSI2 Price TWAP deep 15m,maker_taker,771.25%,40.51%,13.56%,2.99
+BTC RSI2 Price TWAP deep 15m,taker_taker,489.38%,32.14%,15.55%,2.07
+BTC RSI2 Price TWAP 2slice 15m,maker_maker,428.16%,29.88%,27.37%,1.09
+BTC RSI2 Price TWAP 2slice 15m,maker_taker,218.92%,19.99%,29.92%,0.67
+BTC RSI2 Price TWAP 2slice 15m,taker_taker,92.49%,10.84%,34.93%,0.31
+BTC RSI2 Price TWAP mid fb2 15m,maker_maker,568.41%,34.78%,24.41%,1.42
+BTC RSI2 Price TWAP mid fb2 15m,maker_taker,318.24%,25.21%,26.82%,0.94
+BTC RSI2 Price TWAP mid fb2 15m,taker_taker,161.60%,16.31%,29.31%,0.56
+BTC RSI2 Price TWAP mid fb5 15m,maker_maker,259.41%,22.26%,24.41%,0.91
+BTC RSI2 Price TWAP mid fb5 15m,maker_taker,136.97%,14.52%,26.90%,0.54
+BTC RSI2 Price TWAP mid fb5 15m,taker_taker,56.18%,7.26%,33.02%,0.22
+BTC RSI2 Price TWAP deep fb2 15m,maker_maker,814.61%,41.58%,12.32%,3.37
+BTC RSI2 Price TWAP deep fb2 15m,maker_taker,533.20%,33.64%,13.56%,2.48
+BTC RSI2 Price TWAP deep fb2 15m,taker_taker,338.23%,26.13%,15.55%,1.68
+BTC RSI2 Price TWAP deep fb5 15m,maker_maker,486.06%,32.02%,12.12%,2.64
+BTC RSI2 Price TWAP deep fb5 15m,maker_taker,315.69%,25.09%,13.48%,1.86
+BTC RSI2 Price TWAP deep fb5 15m,taker_taker,194.75%,18.51%,15.72%,1.18
+BTC Trend RSI-BB 15m,maker_maker,85.25%,10.17%,32.21%,0.32
+BTC Trend RSI-BB 15m,maker_taker,1.84%,0.29%,44.91%,0.01
+BTC Trend RSI-BB 15m,taker_taker,-44.04%,-8.72%,56.15%,-0.16
+ETH RSI2 15m,maker_maker,315.55%,25.16%,27.03%,0.93
+ETH RSI2 15m,maker_taker,156.76%,16.02%,30.84%,0.52
+ETH RSI2 15m,taker_taker,58.59%,7.54%,34.62%,0.22
+ETH RSI2 Price TWAP mid 15m,maker_maker,210.95%,19.57%,15.40%,1.27
+ETH RSI2 Price TWAP mid 15m,maker_taker,124.76%,13.61%,16.52%,0.82
+ETH RSI2 Price TWAP mid 15m,taker_taker,62.42%,7.94%,20.53%,0.39
+ETH RSI2 Price TWAP deep 15m,maker_maker,370.22%,27.62%,8.97%,3.08
+ETH RSI2 Price TWAP deep 15m,maker_taker,255.57%,22.12%,9.92%,2.23
+ETH RSI2 Price TWAP deep 15m,taker_taker,168.80%,16.86%,10.87%,1.55
+ETH RSI2 Price TWAP mid fb2 15m,maker_maker,152.33%,15.70%,15.40%,1.02
+ETH RSI2 Price TWAP mid fb2 15m,maker_taker,84.95%,10.17%,16.52%,0.62
+ETH RSI2 Price TWAP mid fb2 15m,taker_taker,35.53%,4.91%,25.46%,0.19
+ETH Trend RSI-BB 15m,maker_maker,-93.49%,-35.03%,93.65%,-0.37
+ETH Trend RSI-BB 15m,maker_taker,-98.95%,-51.26%,98.96%,-0.52
+ETH Trend RSI-BB 15m,taker_taker,-99.83%,-63.44%,99.83%,-0.64
+ETH/BTC RSI Filter 15m,maker_maker,246.04%,21.65%,10.74%,2.02
+ETH/BTC RSI Filter 15m,maker_taker,168.73%,16.89%,11.23%,1.50
+ETH/BTC RSI Filter 15m,taker_taker,108.65%,12.31%,11.72%,1.05
+BTC Lead ETH Lag 15m,maker_maker,100.19%,11.55%,72.42%,0.16
+BTC Lead ETH Lag 15m,maker_taker,-14.66%,-2.47%,81.09%,-0.03
+BTC Lead ETH Lag 15m,taker_taker,-63.65%,-14.74%,87.89%,-0.17
+BTC Lead ETH Lag 5m,maker_maker,27.50%,3.90%,84.52%,0.05
+BTC Lead ETH Lag 5m,maker_taker,-54.41%,-11.64%,91.27%,-0.13
+BTC Lead ETH Lag 5m,taker_taker,-83.72%,-24.87%,95.08%,-0.26
+BTC Lead ETH Lag 3m,maker_maker,137.02%,14.56%,38.61%,0.38
+BTC Lead ETH Lag 3m,maker_taker,-10.00%,-1.65%,51.41%,-0.03
+BTC Lead ETH Lag 3m,taker_taker,-65.86%,-15.57%,75.96%,-0.21

+ 48 - 48
reports/ultrashort/ultrashort-overlay-horizons.csv

@@ -1,49 +1,49 @@
 overlay,horizon,return,annualized,max_dd,calmar
 overlay,horizon,return,annualized,max_dd,calmar
-Balanced 4 DD>3% x0.0,3y,50.08%,14.59%,7.13%,2.05
-Balanced 4 DD>3% x0.0,1y,7.67%,7.67%,7.13%,1.08
-Balanced 4 DD>3% x0.0,6m,4.02%,8.22%,3.47%,2.37
-Balanced 4 DD>3% x0.0,3m,5.96%,26.49%,1.37%,19.34
-Balanced 4 DD>3% x0.5,3y,66.33%,18.61%,5.54%,3.36
-Balanced 4 DD>3% x0.5,1y,10.15%,10.15%,5.54%,1.83
-Balanced 4 DD>3% x0.5,6m,5.67%,11.70%,3.31%,3.53
-Balanced 4 DD>3% x0.5,3m,5.96%,26.49%,1.37%,19.34
-Balanced 4 DD>5% x0.0,3y,80.93%,22.01%,6.08%,3.62
-Balanced 4 DD>5% x0.0,1y,12.66%,12.66%,4.10%,3.09
-Balanced 4 DD>5% x0.0,6m,7.35%,15.28%,3.31%,4.61
-Balanced 4 DD>5% x0.0,3m,5.96%,26.49%,1.37%,19.34
-Balanced 4 DD>5% x0.5,3y,82.46%,22.35%,5.88%,3.80
-Balanced 4 DD>5% x0.5,1y,12.66%,12.66%,4.10%,3.09
-Balanced 4 DD>5% x0.5,6m,7.35%,15.28%,3.31%,4.61
-Balanced 4 DD>5% x0.5,3m,5.96%,26.49%,1.37%,19.34
-Balanced 4 DD>7% x0.0,3y,83.96%,22.69%,6.38%,3.56
-Balanced 4 DD>7% x0.0,1y,12.66%,12.66%,4.10%,3.09
-Balanced 4 DD>7% x0.0,6m,7.35%,15.28%,3.31%,4.61
-Balanced 4 DD>7% x0.0,3m,5.96%,26.49%,1.37%,19.34
-Balanced 4 DD>7% x0.5,3y,83.96%,22.69%,6.38%,3.56
-Balanced 4 DD>7% x0.5,1y,12.66%,12.66%,4.10%,3.09
-Balanced 4 DD>7% x0.5,6m,7.35%,15.28%,3.31%,4.61
-Balanced 4 DD>7% x0.5,3m,5.96%,26.49%,1.37%,19.34
-Aggressive 5 DD>3% x0.0,3y,49.46%,14.42%,7.91%,1.82
-Aggressive 5 DD>3% x0.0,1y,5.83%,5.83%,6.31%,0.92
-Aggressive 5 DD>3% x0.0,6m,-2.60%,-5.14%,4.79%,-1.07
-Aggressive 5 DD>3% x0.0,3m,0.89%,3.65%,1.56%,2.35
-Aggressive 5 DD>3% x0.5,3y,71.85%,19.90%,6.84%,2.91
-Aggressive 5 DD>3% x0.5,1y,7.85%,7.85%,6.39%,1.23
-Aggressive 5 DD>3% x0.5,6m,-0.74%,-1.49%,4.88%,-0.30
-Aggressive 5 DD>3% x0.5,3m,3.43%,14.67%,1.23%,11.95
-Aggressive 5 DD>5% x0.0,3y,61.83%,17.51%,8.78%,2.00
-Aggressive 5 DD>5% x0.0,1y,8.99%,8.99%,5.01%,1.80
-Aggressive 5 DD>5% x0.0,6m,0.31%,0.62%,3.47%,0.18
-Aggressive 5 DD>5% x0.0,3m,3.41%,14.57%,1.12%,13.05
-Aggressive 5 DD>5% x0.5,3y,78.64%,21.47%,7.29%,2.94
-Aggressive 5 DD>5% x0.5,1y,9.44%,9.44%,6.18%,1.53
-Aggressive 5 DD>5% x0.5,6m,0.72%,1.45%,4.66%,0.31
-Aggressive 5 DD>5% x0.5,3m,4.71%,20.54%,1.12%,18.39
-Aggressive 5 DD>7% x0.0,3y,68.74%,19.17%,9.02%,2.12
-Aggressive 5 DD>7% x0.0,1y,8.09%,8.09%,7.90%,1.02
-Aggressive 5 DD>7% x0.0,6m,-0.53%,-1.05%,6.41%,-0.16
-Aggressive 5 DD>7% x0.0,3m,6.02%,26.75%,1.12%,23.95
-Aggressive 5 DD>7% x0.5,3y,82.28%,22.29%,8.02%,2.78
-Aggressive 5 DD>7% x0.5,1y,8.96%,8.96%,7.57%,1.18
-Aggressive 5 DD>7% x0.5,6m,0.28%,0.57%,6.08%,0.09
-Aggressive 5 DD>7% x0.5,3m,6.02%,26.75%,1.12%,23.95
+Balanced 4 DD>3% x0.0,3y,-0.24%,-0.08%,11.39%,-0.01
+Balanced 4 DD>3% x0.0,1y,2.55%,2.55%,4.99%,0.51
+Balanced 4 DD>3% x0.0,6m,-0.35%,-0.71%,1.78%,-0.40
+Balanced 4 DD>3% x0.0,3m,0.77%,3.17%,1.32%,2.40
+Balanced 4 DD>3% x0.5,3y,11.69%,3.78%,10.58%,0.36
+Balanced 4 DD>3% x0.5,1y,4.21%,4.21%,5.12%,0.82
+Balanced 4 DD>3% x0.5,6m,1.79%,3.63%,2.31%,1.57
+Balanced 4 DD>3% x0.5,3m,2.51%,10.57%,1.32%,8.00
+Balanced 4 DD>5% x0.0,3y,0.46%,0.15%,17.47%,0.01
+Balanced 4 DD>5% x0.0,1y,2.93%,2.93%,7.20%,0.41
+Balanced 4 DD>5% x0.0,6m,1.08%,2.18%,3.88%,0.56
+Balanced 4 DD>5% x0.0,3m,4.25%,18.38%,1.32%,13.92
+Balanced 4 DD>5% x0.5,3y,11.99%,3.87%,13.62%,0.28
+Balanced 4 DD>5% x0.5,1y,4.37%,4.37%,6.39%,0.68
+Balanced 4 DD>5% x0.5,6m,2.50%,5.08%,3.50%,1.45
+Balanced 4 DD>5% x0.5,3m,4.25%,18.38%,1.32%,13.92
+Balanced 4 DD>7% x0.0,3y,10.08%,3.27%,12.27%,0.27
+Balanced 4 DD>7% x0.0,1y,5.83%,5.83%,5.93%,0.98
+Balanced 4 DD>7% x0.0,6m,3.93%,8.04%,3.50%,2.29
+Balanced 4 DD>7% x0.0,3m,4.25%,18.38%,1.32%,13.92
+Balanced 4 DD>7% x0.5,3y,17.16%,5.46%,11.10%,0.49
+Balanced 4 DD>7% x0.5,1y,5.83%,5.83%,5.93%,0.98
+Balanced 4 DD>7% x0.5,6m,3.93%,8.04%,3.50%,2.29
+Balanced 4 DD>7% x0.5,3m,4.25%,18.38%,1.32%,13.92
+Aggressive 5 DD>3% x0.0,3y,7.05%,2.31%,11.35%,0.20
+Aggressive 5 DD>3% x0.0,1y,5.53%,5.53%,3.63%,1.52
+Aggressive 5 DD>3% x0.0,6m,-0.88%,-1.75%,0.99%,-1.76
+Aggressive 5 DD>3% x0.0,3m,0.00%,0.00%,0.00%,0.00
+Aggressive 5 DD>3% x0.5,3y,23.05%,7.20%,10.47%,0.69
+Aggressive 5 DD>3% x0.5,1y,5.15%,5.15%,6.46%,0.80
+Aggressive 5 DD>3% x0.5,6m,-1.36%,-2.71%,4.02%,-0.67
+Aggressive 5 DD>3% x0.5,3m,2.26%,9.49%,0.52%,18.17
+Aggressive 5 DD>5% x0.0,3y,10.80%,3.50%,15.53%,0.23
+Aggressive 5 DD>5% x0.0,1y,1.28%,1.28%,7.51%,0.17
+Aggressive 5 DD>5% x0.0,6m,-5.11%,-9.98%,5.22%,-1.91
+Aggressive 5 DD>5% x0.0,3m,-1.43%,-5.66%,1.43%,-3.97
+Aggressive 5 DD>5% x0.5,3y,25.02%,7.77%,11.97%,0.65
+Aggressive 5 DD>5% x0.5,1y,3.00%,3.00%,7.71%,0.39
+Aggressive 5 DD>5% x0.5,6m,-3.50%,-6.89%,5.42%,-1.27
+Aggressive 5 DD>5% x0.5,3m,1.53%,6.34%,1.05%,6.07
+Aggressive 5 DD>7% x0.0,3y,12.77%,4.11%,11.85%,0.35
+Aggressive 5 DD>7% x0.0,1y,0.51%,0.51%,10.04%,0.05
+Aggressive 5 DD>7% x0.0,6m,-5.83%,-11.35%,7.81%,-1.45
+Aggressive 5 DD>7% x0.0,3m,1.18%,4.87%,1.05%,4.66
+Aggressive 5 DD>7% x0.5,3y,26.04%,8.07%,10.36%,0.78
+Aggressive 5 DD>7% x0.5,1y,2.59%,2.59%,9.27%,0.28
+Aggressive 5 DD>7% x0.5,6m,-3.88%,-7.64%,7.02%,-1.09
+Aggressive 5 DD>7% x0.5,3m,2.86%,12.09%,1.05%,11.57

+ 12 - 12
reports/ultrashort/ultrashort-overlay-summary.csv

@@ -1,13 +1,13 @@
 overlay,base,threshold,reduced_exposure,3y_return,3y_annualized,3y_max_dd,3y_calmar
 overlay,base,threshold,reduced_exposure,3y_return,3y_annualized,3y_max_dd,3y_calmar
-Balanced 4 DD>5% x0.5,Balanced 4,5.00%,0.5,82.46%,22.35%,5.88%,3.80
-Balanced 4 DD>5% x0.0,Balanced 4,5.00%,0.0,80.93%,22.01%,6.08%,3.62
-Balanced 4 DD>7% x0.0,Balanced 4,7.00%,0.0,83.96%,22.69%,6.38%,3.56
-Balanced 4 DD>7% x0.5,Balanced 4,7.00%,0.5,83.96%,22.69%,6.38%,3.56
-Balanced 4 DD>3% x0.5,Balanced 4,3.00%,0.5,66.33%,18.61%,5.54%,3.36
-Aggressive 5 DD>5% x0.5,Aggressive 5,5.00%,0.5,78.64%,21.47%,7.29%,2.94
-Aggressive 5 DD>3% x0.5,Aggressive 5,3.00%,0.5,71.85%,19.90%,6.84%,2.91
-Aggressive 5 DD>7% x0.5,Aggressive 5,7.00%,0.5,82.28%,22.29%,8.02%,2.78
-Aggressive 5 DD>7% x0.0,Aggressive 5,7.00%,0.0,68.74%,19.17%,9.02%,2.12
-Balanced 4 DD>3% x0.0,Balanced 4,3.00%,0.0,50.08%,14.59%,7.13%,2.05
-Aggressive 5 DD>5% x0.0,Aggressive 5,5.00%,0.0,61.83%,17.51%,8.78%,2.00
-Aggressive 5 DD>3% x0.0,Aggressive 5,3.00%,0.0,49.46%,14.42%,7.91%,1.82
+Aggressive 5 DD>7% x0.5,Aggressive 5,7.00%,0.5,26.04%,8.07%,10.36%,0.78
+Aggressive 5 DD>3% x0.5,Aggressive 5,3.00%,0.5,23.05%,7.20%,10.47%,0.69
+Aggressive 5 DD>5% x0.5,Aggressive 5,5.00%,0.5,25.02%,7.77%,11.97%,0.65
+Balanced 4 DD>7% x0.5,Balanced 4,7.00%,0.5,17.16%,5.46%,11.10%,0.49
+Balanced 4 DD>3% x0.5,Balanced 4,3.00%,0.5,11.69%,3.78%,10.58%,0.36
+Aggressive 5 DD>7% x0.0,Aggressive 5,7.00%,0.0,12.77%,4.11%,11.85%,0.35
+Balanced 4 DD>5% x0.5,Balanced 4,5.00%,0.5,11.99%,3.87%,13.62%,0.28
+Balanced 4 DD>7% x0.0,Balanced 4,7.00%,0.0,10.08%,3.27%,12.27%,0.27
+Aggressive 5 DD>5% x0.0,Aggressive 5,5.00%,0.0,10.80%,3.50%,15.53%,0.23
+Aggressive 5 DD>3% x0.0,Aggressive 5,3.00%,0.0,7.05%,2.31%,11.35%,0.20
+Balanced 4 DD>5% x0.0,Balanced 4,5.00%,0.0,0.46%,0.15%,17.47%,0.01
+Balanced 4 DD>3% x0.0,Balanced 4,3.00%,0.0,-0.24%,-0.08%,11.39%,-0.01

+ 12 - 12
reports/ultrashort/ultrashort-portfolio-horizons.csv

@@ -1,13 +1,13 @@
 portfolio,horizon,return,annualized,max_dd,calmar
 portfolio,horizon,return,annualized,max_dd,calmar
-Balanced 4,3y,83.96%,22.69%,6.38%,3.56
-Balanced 4,1y,12.66%,12.66%,4.10%,3.09
-Balanced 4,6m,7.35%,15.28%,3.31%,4.61
-Balanced 4,3m,5.96%,26.49%,1.37%,19.34
-Aggressive 5,3y,96.54%,25.42%,8.60%,2.96
-Aggressive 5,1y,9.85%,9.85%,7.57%,1.30
-Aggressive 5,6m,1.09%,2.21%,6.08%,0.36
-Aggressive 5,3m,6.02%,26.75%,1.12%,23.95
-Lead Lag Basket,3y,89.49%,25.15%,14.29%,1.76
-Lead Lag Basket,1y,1.09%,1.09%,8.48%,0.13
-Lead Lag Basket,6m,-2.25%,-4.49%,4.71%,-0.95
-Lead Lag Basket,3m,0.72%,2.97%,2.11%,1.41
+Balanced 4,3y,24.49%,7.62%,9.96%,0.77
+Balanced 4,1y,5.83%,5.83%,5.93%,0.98
+Balanced 4,6m,3.93%,8.04%,3.50%,2.29
+Balanced 4,3m,4.25%,18.38%,1.32%,13.92
+Aggressive 5,3y,40.47%,12.06%,11.12%,1.09
+Aggressive 5,1y,4.69%,4.69%,9.25%,0.51
+Aggressive 5,6m,-1.91%,-3.80%,7.00%,-0.54
+Aggressive 5,3m,4.55%,19.76%,1.05%,18.90
+Lead Lag Basket,3y,36.63%,11.58%,19.75%,0.59
+Lead Lag Basket,1y,-1.74%,-1.74%,8.87%,-0.20
+Lead Lag Basket,6m,-2.86%,-5.68%,4.91%,-1.16
+Lead Lag Basket,3m,0.25%,1.01%,2.19%,0.46

+ 47 - 47
reports/ultrashort/ultrashort-portfolio-monthly.csv

@@ -1,48 +1,48 @@
 portfolio,period,return,end_equity
 portfolio,period,return,end_equity
-Balanced 4,2025-01,-1.20%,"58,728"
-Balanced 4,2025-02,-1.51%,"57,843"
-Balanced 4,2025-03,7.39%,"62,118"
-Balanced 4,2025-04,6.17%,"65,948"
-Balanced 4,2025-05,2.17%,"67,378"
-Balanced 4,2025-06,0.86%,"67,955"
-Balanced 4,2025-07,4.94%,"71,314"
-Balanced 4,2025-08,0.16%,"71,429"
-Balanced 4,2025-09,-2.06%,"69,959"
-Balanced 4,2025-10,-1.02%,"69,248"
-Balanced 4,2025-11,1.28%,"70,133"
-Balanced 4,2025-12,-2.09%,"68,667"
-Balanced 4,2026-01,2.43%,"70,336"
-Balanced 4,2026-02,3.89%,"73,072"
-Balanced 4,2026-03,1.03%,"73,827"
-Balanced 4,2026-04,0.49%,"74,188"
-Aggressive 5,2025-01,-6.90%,"77,506"
-Aggressive 5,2025-02,1.85%,"78,937"
-Aggressive 5,2025-03,10.68%,"87,370"
-Aggressive 5,2025-04,3.13%,"90,105"
-Aggressive 5,2025-05,2.21%,"92,093"
-Aggressive 5,2025-06,2.59%,"94,480"
-Aggressive 5,2025-07,5.31%,"99,493"
-Aggressive 5,2025-08,-0.24%,"99,250"
-Aggressive 5,2025-09,-0.49%,"98,762"
-Aggressive 5,2025-10,-0.94%,"97,834"
-Aggressive 5,2025-11,-1.52%,"96,345"
-Aggressive 5,2025-12,-4.42%,"92,083"
-Aggressive 5,2026-01,1.37%,"93,343"
-Aggressive 5,2026-02,4.29%,"97,344"
-Aggressive 5,2026-03,0.63%,"97,958"
-Aggressive 5,2026-04,0.93%,"98,867"
-Lead Lag Basket,2025-01,-11.43%,"50,601"
-Lead Lag Basket,2025-02,1.70%,"51,460"
-Lead Lag Basket,2025-03,15.20%,"59,285"
-Lead Lag Basket,2025-04,0.16%,"59,377"
-Lead Lag Basket,2025-05,-0.51%,"59,077"
-Lead Lag Basket,2025-06,0.00%,"59,077"
-Lead Lag Basket,2025-07,3.70%,"61,259"
-Lead Lag Basket,2025-08,-2.67%,"59,622"
-Lead Lag Basket,2025-09,-1.32%,"58,834"
-Lead Lag Basket,2025-10,-1.17%,"58,148"
-Lead Lag Basket,2025-11,-1.81%,"57,094"
-Lead Lag Basket,2025-12,-1.15%,"56,440"
-Lead Lag Basket,2026-01,0.00%,"56,440"
-Lead Lag Basket,2026-02,3.34%,"58,322"
-Lead Lag Basket,2026-03,-1.40%,"57,508"
+Balanced 4,2025-01,-5.01%,"43,425"
+Balanced 4,2025-02,-2.25%,"42,446"
+Balanced 4,2025-03,5.86%,"44,935"
+Balanced 4,2025-04,5.54%,"47,426"
+Balanced 4,2025-05,0.95%,"47,878"
+Balanced 4,2025-06,0.67%,"48,199"
+Balanced 4,2025-07,4.52%,"50,376"
+Balanced 4,2025-08,-0.39%,"50,182"
+Balanced 4,2025-09,-2.23%,"49,063"
+Balanced 4,2025-10,-1.54%,"48,308"
+Balanced 4,2025-11,0.66%,"48,626"
+Balanced 4,2025-12,-2.48%,"47,419"
+Balanced 4,2026-01,1.78%,"48,261"
+Balanced 4,2026-02,3.58%,"49,989"
+Balanced 4,2026-03,0.39%,"50,185"
+Balanced 4,2026-04,-0.08%,"50,145"
+Aggressive 5,2025-01,-9.48%,"60,161"
+Aggressive 5,2025-02,1.00%,"60,766"
+Aggressive 5,2025-03,9.08%,"66,281"
+Aggressive 5,2025-04,1.83%,"67,492"
+Aggressive 5,2025-05,1.62%,"68,586"
+Aggressive 5,2025-06,2.52%,"70,312"
+Aggressive 5,2025-07,4.96%,"73,802"
+Aggressive 5,2025-08,-0.64%,"73,327"
+Aggressive 5,2025-09,-0.52%,"72,944"
+Aggressive 5,2025-10,-1.29%,"72,005"
+Aggressive 5,2025-11,-1.99%,"70,569"
+Aggressive 5,2025-12,-5.01%,"67,033"
+Aggressive 5,2026-01,0.82%,"67,581"
+Aggressive 5,2026-02,3.74%,"70,107"
+Aggressive 5,2026-03,0.20%,"70,246"
+Aggressive 5,2026-04,0.52%,"70,612"
+Lead Lag Basket,2025-01,-14.30%,"38,527"
+Lead Lag Basket,2025-02,1.25%,"39,009"
+Lead Lag Basket,2025-03,12.51%,"43,888"
+Lead Lag Basket,2025-04,-1.44%,"43,257"
+Lead Lag Basket,2025-05,-0.61%,"42,992"
+Lead Lag Basket,2025-06,0.00%,"42,992"
+Lead Lag Basket,2025-07,3.57%,"44,526"
+Lead Lag Basket,2025-08,-2.81%,"43,273"
+Lead Lag Basket,2025-09,-1.39%,"42,672"
+Lead Lag Basket,2025-10,-1.24%,"42,141"
+Lead Lag Basket,2025-11,-1.88%,"41,350"
+Lead Lag Basket,2025-12,-1.31%,"40,808"
+Lead Lag Basket,2026-01,0.00%,"40,808"
+Lead Lag Basket,2026-02,3.09%,"42,069"
+Lead Lag Basket,2026-03,-1.46%,"41,453"

+ 3 - 3
reports/ultrashort/ultrashort-portfolio-summary.csv

@@ -1,4 +1,4 @@
 portfolio,legs,3y_return,3y_annualized,3y_max_dd,3y_calmar
 portfolio,legs,3y_return,3y_annualized,3y_max_dd,3y_calmar
-Balanced 4,4,83.96%,22.69%,6.38%,3.56
-Aggressive 5,5,96.54%,25.42%,8.60%,2.96
-Lead Lag Basket,3,89.49%,25.15%,14.29%,1.76
+Balanced 4,4,24.49%,7.62%,9.96%,0.77
+Aggressive 5,5,40.47%,12.06%,11.12%,1.09
+Lead Lag Basket,3,36.63%,11.58%,19.75%,0.59

+ 332 - 124
reports/ultrashort/ultrashort-recent-monthly.csv

@@ -1,125 +1,333 @@
 strategy,period,return,end_equity
 strategy,period,return,end_equity
-BTC RSI2 Guarded 15m,2025-01,4.53%,"25,220"
-BTC RSI2 Guarded 15m,2025-02,-0.56%,"25,078"
-BTC RSI2 Guarded 15m,2025-03,2.54%,"25,714"
-BTC RSI2 Guarded 15m,2025-04,5.79%,"27,202"
-BTC RSI2 Guarded 15m,2025-05,2.99%,"28,016"
-BTC RSI2 Guarded 15m,2025-06,0.28%,"28,095"
-BTC RSI2 Guarded 15m,2025-07,4.86%,"29,460"
-BTC RSI2 Guarded 15m,2025-08,1.25%,"29,828"
-BTC RSI2 Guarded 15m,2025-09,-3.80%,"28,694"
-BTC RSI2 Guarded 15m,2025-10,-2.93%,"27,852"
-BTC RSI2 Guarded 15m,2025-11,2.60%,"28,576"
-BTC RSI2 Guarded 15m,2025-12,-3.13%,"27,681"
-BTC RSI2 Guarded 15m,2026-01,5.39%,"29,172"
-BTC RSI2 Guarded 15m,2026-02,5.20%,"30,687"
-BTC RSI2 Guarded 15m,2026-03,3.47%,"31,753"
-BTC RSI2 Guarded 15m,2026-04,0.80%,"32,006"
-BTC Trend RSI-BB 15m,2025-01,3.43%,"42,026"
-BTC Trend RSI-BB 15m,2025-02,-5.38%,"39,765"
-BTC Trend RSI-BB 15m,2025-03,9.92%,"43,710"
-BTC Trend RSI-BB 15m,2025-04,4.94%,"45,870"
-BTC Trend RSI-BB 15m,2025-05,-2.93%,"44,528"
-BTC Trend RSI-BB 15m,2025-06,-2.45%,"43,437"
-BTC Trend RSI-BB 15m,2025-07,2.81%,"44,658"
-BTC Trend RSI-BB 15m,2025-08,0.57%,"44,913"
-BTC Trend RSI-BB 15m,2025-09,-1.88%,"44,071"
-BTC Trend RSI-BB 15m,2025-10,0.73%,"44,392"
-BTC Trend RSI-BB 15m,2025-11,4.74%,"46,495"
-BTC Trend RSI-BB 15m,2025-12,-4.12%,"44,582"
-BTC Trend RSI-BB 15m,2026-01,2.73%,"45,798"
-BTC Trend RSI-BB 15m,2026-02,-2.47%,"44,667"
-BTC Trend RSI-BB 15m,2026-03,-0.65%,"44,378"
-BTC Trend RSI-BB 15m,2026-04,-0.71%,"44,063"
-ETH RSI2 15m,2025-01,-0.18%,"28,899"
-ETH RSI2 15m,2025-02,2.08%,"29,501"
-ETH RSI2 15m,2025-03,-4.13%,"28,284"
-ETH RSI2 15m,2025-04,9.93%,"31,092"
-ETH RSI2 15m,2025-05,5.77%,"32,885"
-ETH RSI2 15m,2025-06,9.98%,"36,167"
-ETH RSI2 15m,2025-07,9.05%,"39,441"
-ETH RSI2 15m,2025-08,2.69%,"40,504"
-ETH RSI2 15m,2025-09,3.85%,"42,063"
-ETH RSI2 15m,2025-10,3.35%,"43,474"
-ETH RSI2 15m,2025-11,-4.86%,"41,362"
-ETH RSI2 15m,2025-12,-12.59%,"36,154"
-ETH RSI2 15m,2026-01,0.33%,"36,275"
-ETH RSI2 15m,2026-02,5.35%,"38,217"
-ETH RSI2 15m,2026-03,6.10%,"40,547"
-ETH RSI2 15m,2026-04,2.49%,"41,555"
-ETH Trend RSI-BB 15m,2025-01,-5.70%,"98,441"
-ETH Trend RSI-BB 15m,2025-02,-5.12%,"93,398"
-ETH Trend RSI-BB 15m,2025-03,-2.33%,"91,219"
-ETH Trend RSI-BB 15m,2025-04,3.34%,"94,264"
-ETH Trend RSI-BB 15m,2025-05,6.68%,"100,559"
-ETH Trend RSI-BB 15m,2025-06,-2.74%,"97,805"
-ETH Trend RSI-BB 15m,2025-07,8.28%,"105,905"
-ETH Trend RSI-BB 15m,2025-08,-0.70%,"105,161"
-ETH Trend RSI-BB 15m,2025-09,-2.35%,"102,687"
-ETH Trend RSI-BB 15m,2025-10,-10.06%,"92,358"
-ETH Trend RSI-BB 15m,2025-11,5.63%,"97,562"
-ETH Trend RSI-BB 15m,2025-12,2.54%,"100,040"
-ETH Trend RSI-BB 15m,2026-01,-4.56%,"95,474"
-ETH Trend RSI-BB 15m,2026-02,-1.66%,"93,891"
-ETH Trend RSI-BB 15m,2026-03,-10.36%,"84,161"
-ETH Trend RSI-BB 15m,2026-04,-7.55%,"77,810"
-ETH/BTC RSI Filter 15m,2025-01,-3.09%,"23,631"
-ETH/BTC RSI Filter 15m,2025-02,1.52%,"23,991"
-ETH/BTC RSI Filter 15m,2025-03,1.52%,"24,356"
-ETH/BTC RSI Filter 15m,2025-04,4.48%,"25,447"
-ETH/BTC RSI Filter 15m,2025-05,6.64%,"27,135"
-ETH/BTC RSI Filter 15m,2025-06,7.42%,"29,148"
-ETH/BTC RSI Filter 15m,2025-07,7.12%,"31,224"
-ETH/BTC RSI Filter 15m,2025-08,1.81%,"31,789"
-ETH/BTC RSI Filter 15m,2025-09,2.37%,"32,543"
-ETH/BTC RSI Filter 15m,2025-10,0.54%,"32,717"
-ETH/BTC RSI Filter 15m,2025-11,0.04%,"32,730"
-ETH/BTC RSI Filter 15m,2025-12,-2.75%,"31,831"
-ETH/BTC RSI Filter 15m,2026-01,1.80%,"32,404"
-ETH/BTC RSI Filter 15m,2026-02,3.41%,"33,508"
-ETH/BTC RSI Filter 15m,2026-03,1.23%,"33,919"
-ETH/BTC RSI Filter 15m,2026-04,2.02%,"34,604"
-BTC Lead ETH Lag 15m,2025-01,-16.65%,"51,474"
-BTC Lead ETH Lag 15m,2025-02,5.37%,"54,236"
-BTC Lead ETH Lag 15m,2025-03,26.13%,"68,408"
-BTC Lead ETH Lag 15m,2025-04,-4.94%,"65,030"
-BTC Lead ETH Lag 15m,2025-05,-2.52%,"63,391"
-BTC Lead ETH Lag 15m,2025-06,0.00%,"63,391"
-BTC Lead ETH Lag 15m,2025-07,2.63%,"65,056"
-BTC Lead ETH Lag 15m,2025-08,-2.52%,"63,417"
-BTC Lead ETH Lag 15m,2025-09,0.00%,"63,417"
-BTC Lead ETH Lag 15m,2025-10,-2.52%,"61,819"
-BTC Lead ETH Lag 15m,2025-11,-2.52%,"60,261"
-BTC Lead ETH Lag 15m,2025-12,-4.98%,"57,262"
-BTC Lead ETH Lag 15m,2026-01,0.00%,"57,262"
-BTC Lead ETH Lag 15m,2026-02,0.04%,"57,286"
-BTC Lead ETH Lag 15m,2026-03,-4.98%,"54,435"
-BTC Lead ETH Lag 5m,2025-01,-9.07%,"36,128"
-BTC Lead ETH Lag 5m,2025-02,-0.67%,"35,887"
-BTC Lead ETH Lag 5m,2025-03,14.03%,"40,922"
-BTC Lead ETH Lag 5m,2025-04,8.71%,"44,486"
-BTC Lead ETH Lag 5m,2025-05,3.26%,"45,936"
-BTC Lead ETH Lag 5m,2025-06,0.00%,"45,936"
-BTC Lead ETH Lag 5m,2025-07,5.28%,"48,361"
-BTC Lead ETH Lag 5m,2025-08,-2.25%,"47,272"
-BTC Lead ETH Lag 5m,2025-09,-3.80%,"45,474"
-BTC Lead ETH Lag 5m,2025-10,-1.92%,"44,601"
-BTC Lead ETH Lag 5m,2025-11,-1.92%,"43,745"
-BTC Lead ETH Lag 5m,2025-12,1.28%,"44,303"
-BTC Lead ETH Lag 5m,2026-01,0.00%,"44,303"
-BTC Lead ETH Lag 5m,2026-02,8.71%,"48,162"
-BTC Lead ETH Lag 3m,2025-01,-3.69%,"62,535"
-BTC Lead ETH Lag 3m,2025-02,-1.92%,"61,334"
-BTC Lead ETH Lag 3m,2025-03,-4.57%,"58,531"
-BTC Lead ETH Lag 3m,2025-04,0.00%,"58,531"
-BTC Lead ETH Lag 3m,2025-05,-1.92%,"57,407"
-BTC Lead ETH Lag 3m,2025-06,0.00%,"57,407"
-BTC Lead ETH Lag 3m,2025-07,3.48%,"59,405"
-BTC Lead ETH Lag 3m,2025-08,-3.80%,"57,146"
-BTC Lead ETH Lag 3m,2025-09,0.00%,"57,146"
-BTC Lead ETH Lag 3m,2025-10,3.48%,"59,134"
-BTC Lead ETH Lag 3m,2025-11,0.00%,"59,134"
-BTC Lead ETH Lag 3m,2025-12,3.48%,"61,192"
-BTC Lead ETH Lag 3m,2026-01,0.00%,"61,192"
-BTC Lead ETH Lag 3m,2026-02,1.49%,"62,106"
-BTC Lead ETH Lag 3m,2026-03,3.48%,"64,267"
+BTC RSI2 Guarded 15m,2025-01,-1.22%,"7,664"
+BTC RSI2 Guarded 15m,2025-02,-3.41%,"7,402"
+BTC RSI2 Guarded 15m,2025-03,0.89%,"7,469"
+BTC RSI2 Guarded 15m,2025-04,4.65%,"7,816"
+BTC RSI2 Guarded 15m,2025-05,-0.47%,"7,779"
+BTC RSI2 Guarded 15m,2025-06,-0.71%,"7,724"
+BTC RSI2 Guarded 15m,2025-07,3.74%,"8,013"
+BTC RSI2 Guarded 15m,2025-08,-0.02%,"8,012"
+BTC RSI2 Guarded 15m,2025-09,-4.75%,"7,631"
+BTC RSI2 Guarded 15m,2025-10,-4.56%,"7,283"
+BTC RSI2 Guarded 15m,2025-11,2.05%,"7,433"
+BTC RSI2 Guarded 15m,2025-12,-4.00%,"7,135"
+BTC RSI2 Guarded 15m,2026-01,4.35%,"7,445"
+BTC RSI2 Guarded 15m,2026-02,4.45%,"7,776"
+BTC RSI2 Guarded 15m,2026-03,2.00%,"7,932"
+BTC RSI2 Guarded 15m,2026-04,-1.27%,"7,831"
+BTC RSI2 TWAP2 15m,2025-01,-0.56%,"5,001"
+BTC RSI2 TWAP2 15m,2025-02,-1.32%,"4,935"
+BTC RSI2 TWAP2 15m,2025-03,-1.52%,"4,860"
+BTC RSI2 TWAP2 15m,2025-04,2.58%,"4,985"
+BTC RSI2 TWAP2 15m,2025-05,0.83%,"5,027"
+BTC RSI2 TWAP2 15m,2025-06,-1.27%,"4,963"
+BTC RSI2 TWAP2 15m,2025-07,2.92%,"5,108"
+BTC RSI2 TWAP2 15m,2025-08,1.00%,"5,159"
+BTC RSI2 TWAP2 15m,2025-09,-5.24%,"4,888"
+BTC RSI2 TWAP2 15m,2025-10,-4.81%,"4,653"
+BTC RSI2 TWAP2 15m,2025-11,1.94%,"4,743"
+BTC RSI2 TWAP2 15m,2025-12,-4.25%,"4,542"
+BTC RSI2 TWAP2 15m,2026-01,2.73%,"4,666"
+BTC RSI2 TWAP2 15m,2026-02,2.44%,"4,779"
+BTC RSI2 TWAP2 15m,2026-03,1.88%,"4,869"
+BTC RSI2 TWAP2 15m,2026-04,-2.23%,"4,761"
+BTC RSI2 TWAP3 15m,2025-01,-0.09%,"4,782"
+BTC RSI2 TWAP3 15m,2025-02,-1.31%,"4,720"
+BTC RSI2 TWAP3 15m,2025-03,-2.99%,"4,579"
+BTC RSI2 TWAP3 15m,2025-04,2.21%,"4,680"
+BTC RSI2 TWAP3 15m,2025-05,1.45%,"4,748"
+BTC RSI2 TWAP3 15m,2025-06,-1.61%,"4,672"
+BTC RSI2 TWAP3 15m,2025-07,2.22%,"4,775"
+BTC RSI2 TWAP3 15m,2025-08,0.95%,"4,821"
+BTC RSI2 TWAP3 15m,2025-09,-5.12%,"4,574"
+BTC RSI2 TWAP3 15m,2025-10,-4.15%,"4,384"
+BTC RSI2 TWAP3 15m,2025-11,1.32%,"4,442"
+BTC RSI2 TWAP3 15m,2025-12,-3.65%,"4,280"
+BTC RSI2 TWAP3 15m,2026-01,1.80%,"4,357"
+BTC RSI2 TWAP3 15m,2026-02,2.00%,"4,444"
+BTC RSI2 TWAP3 15m,2026-03,1.50%,"4,511"
+BTC RSI2 TWAP3 15m,2026-04,-0.59%,"4,484"
+BTC RSI2 Price TWAP shallow 15m,2025-01,-0.03%,"20,662"
+BTC RSI2 Price TWAP shallow 15m,2025-02,-1.63%,"20,324"
+BTC RSI2 Price TWAP shallow 15m,2025-03,5.05%,"21,350"
+BTC RSI2 Price TWAP shallow 15m,2025-04,3.05%,"22,000"
+BTC RSI2 Price TWAP shallow 15m,2025-05,2.33%,"22,512"
+BTC RSI2 Price TWAP shallow 15m,2025-06,-0.45%,"22,411"
+BTC RSI2 Price TWAP shallow 15m,2025-07,4.34%,"23,384"
+BTC RSI2 Price TWAP shallow 15m,2025-08,2.14%,"23,884"
+BTC RSI2 Price TWAP shallow 15m,2025-09,-1.80%,"23,455"
+BTC RSI2 Price TWAP shallow 15m,2025-10,-3.79%,"22,565"
+BTC RSI2 Price TWAP shallow 15m,2025-11,4.21%,"23,516"
+BTC RSI2 Price TWAP shallow 15m,2025-12,-1.77%,"23,099"
+BTC RSI2 Price TWAP shallow 15m,2026-01,5.18%,"24,297"
+BTC RSI2 Price TWAP shallow 15m,2026-02,5.09%,"25,533"
+BTC RSI2 Price TWAP shallow 15m,2026-03,7.33%,"27,404"
+BTC RSI2 Price TWAP shallow 15m,2026-04,5.60%,"28,939"
+BTC RSI2 Price TWAP mid 15m,2025-01,-0.02%,"38,508"
+BTC RSI2 Price TWAP mid 15m,2025-02,-1.10%,"38,085"
+BTC RSI2 Price TWAP mid 15m,2025-03,4.32%,"39,731"
+BTC RSI2 Price TWAP mid 15m,2025-04,3.14%,"40,980"
+BTC RSI2 Price TWAP mid 15m,2025-05,1.39%,"41,551"
+BTC RSI2 Price TWAP mid 15m,2025-06,-3.40%,"40,137"
+BTC RSI2 Price TWAP mid 15m,2025-07,4.62%,"41,990"
+BTC RSI2 Price TWAP mid 15m,2025-08,3.89%,"43,623"
+BTC RSI2 Price TWAP mid 15m,2025-09,-1.64%,"42,906"
+BTC RSI2 Price TWAP mid 15m,2025-10,-2.58%,"41,798"
+BTC RSI2 Price TWAP mid 15m,2025-11,3.41%,"43,223"
+BTC RSI2 Price TWAP mid 15m,2025-12,-2.09%,"42,318"
+BTC RSI2 Price TWAP mid 15m,2026-01,5.87%,"44,801"
+BTC RSI2 Price TWAP mid 15m,2026-02,5.01%,"47,047"
+BTC RSI2 Price TWAP mid 15m,2026-03,5.42%,"49,598"
+BTC RSI2 Price TWAP mid 15m,2026-04,6.67%,"52,908"
+BTC RSI2 Price TWAP deep 15m,2025-01,6.36%,"69,198"
+BTC RSI2 Price TWAP deep 15m,2025-02,-2.27%,"67,629"
+BTC RSI2 Price TWAP deep 15m,2025-03,1.67%,"68,757"
+BTC RSI2 Price TWAP deep 15m,2025-04,1.87%,"70,043"
+BTC RSI2 Price TWAP deep 15m,2025-05,3.38%,"72,409"
+BTC RSI2 Price TWAP deep 15m,2025-06,-1.79%,"71,114"
+BTC RSI2 Price TWAP deep 15m,2025-07,1.79%,"72,387"
+BTC RSI2 Price TWAP deep 15m,2025-08,1.22%,"73,269"
+BTC RSI2 Price TWAP deep 15m,2025-09,-1.12%,"72,451"
+BTC RSI2 Price TWAP deep 15m,2025-10,-1.41%,"71,427"
+BTC RSI2 Price TWAP deep 15m,2025-11,3.36%,"73,828"
+BTC RSI2 Price TWAP deep 15m,2025-12,-2.10%,"72,276"
+BTC RSI2 Price TWAP deep 15m,2026-01,1.87%,"73,627"
+BTC RSI2 Price TWAP deep 15m,2026-02,5.64%,"77,783"
+BTC RSI2 Price TWAP deep 15m,2026-03,5.81%,"82,299"
+BTC RSI2 Price TWAP deep 15m,2026-04,5.86%,"87,125"
+BTC RSI2 Price TWAP 2slice 15m,2025-01,-0.17%,"25,081"
+BTC RSI2 Price TWAP 2slice 15m,2025-02,-1.24%,"24,769"
+BTC RSI2 Price TWAP 2slice 15m,2025-03,2.18%,"25,308"
+BTC RSI2 Price TWAP 2slice 15m,2025-04,2.68%,"25,987"
+BTC RSI2 Price TWAP 2slice 15m,2025-05,0.79%,"26,192"
+BTC RSI2 Price TWAP 2slice 15m,2025-06,-3.40%,"25,301"
+BTC RSI2 Price TWAP 2slice 15m,2025-07,4.62%,"26,469"
+BTC RSI2 Price TWAP 2slice 15m,2025-08,3.11%,"27,292"
+BTC RSI2 Price TWAP 2slice 15m,2025-09,-2.07%,"26,726"
+BTC RSI2 Price TWAP 2slice 15m,2025-10,-3.30%,"25,843"
+BTC RSI2 Price TWAP 2slice 15m,2025-11,3.56%,"26,764"
+BTC RSI2 Price TWAP 2slice 15m,2025-12,-2.24%,"26,165"
+BTC RSI2 Price TWAP 2slice 15m,2026-01,5.23%,"27,534"
+BTC RSI2 Price TWAP 2slice 15m,2026-02,4.54%,"28,786"
+BTC RSI2 Price TWAP 2slice 15m,2026-03,5.11%,"30,257"
+BTC RSI2 Price TWAP 2slice 15m,2026-04,5.40%,"31,892"
+BTC RSI2 Price TWAP mid fb2 15m,2025-01,-0.32%,"32,588"
+BTC RSI2 Price TWAP mid fb2 15m,2025-02,-1.10%,"32,231"
+BTC RSI2 Price TWAP mid fb2 15m,2025-03,4.01%,"33,523"
+BTC RSI2 Price TWAP mid fb2 15m,2025-04,2.78%,"34,456"
+BTC RSI2 Price TWAP mid fb2 15m,2025-05,0.94%,"34,781"
+BTC RSI2 Price TWAP mid fb2 15m,2025-06,-3.40%,"33,598"
+BTC RSI2 Price TWAP mid fb2 15m,2025-07,4.11%,"34,980"
+BTC RSI2 Price TWAP mid fb2 15m,2025-08,3.89%,"36,340"
+BTC RSI2 Price TWAP mid fb2 15m,2025-09,-2.03%,"35,602"
+BTC RSI2 Price TWAP mid fb2 15m,2025-10,-2.87%,"34,582"
+BTC RSI2 Price TWAP mid fb2 15m,2025-11,2.90%,"35,584"
+BTC RSI2 Price TWAP mid fb2 15m,2025-12,-2.39%,"34,735"
+BTC RSI2 Price TWAP mid fb2 15m,2026-01,5.13%,"36,518"
+BTC RSI2 Price TWAP mid fb2 15m,2026-02,5.01%,"38,349"
+BTC RSI2 Price TWAP mid fb2 15m,2026-03,3.61%,"39,733"
+BTC RSI2 Price TWAP mid fb2 15m,2026-04,5.26%,"41,824"
+BTC RSI2 Price TWAP mid fb5 15m,2025-01,-0.32%,"21,557"
+BTC RSI2 Price TWAP mid fb5 15m,2025-02,-2.46%,"21,027"
+BTC RSI2 Price TWAP mid fb5 15m,2025-03,3.00%,"21,658"
+BTC RSI2 Price TWAP mid fb5 15m,2025-04,1.07%,"21,890"
+BTC RSI2 Price TWAP mid fb5 15m,2025-05,-0.03%,"21,884"
+BTC RSI2 Price TWAP mid fb5 15m,2025-06,-3.40%,"21,140"
+BTC RSI2 Price TWAP mid fb5 15m,2025-07,2.21%,"21,608"
+BTC RSI2 Price TWAP mid fb5 15m,2025-08,2.03%,"22,046"
+BTC RSI2 Price TWAP mid fb5 15m,2025-09,-2.33%,"21,532"
+BTC RSI2 Price TWAP mid fb5 15m,2025-10,-4.10%,"20,649"
+BTC RSI2 Price TWAP mid fb5 15m,2025-11,2.90%,"21,247"
+BTC RSI2 Price TWAP mid fb5 15m,2025-12,-2.99%,"20,611"
+BTC RSI2 Price TWAP mid fb5 15m,2026-01,3.05%,"21,240"
+BTC RSI2 Price TWAP mid fb5 15m,2026-02,4.70%,"22,239"
+BTC RSI2 Price TWAP mid fb5 15m,2026-03,3.61%,"23,042"
+BTC RSI2 Price TWAP mid fb5 15m,2026-04,2.84%,"23,697"
+BTC RSI2 Price TWAP deep fb2 15m,2025-01,4.84%,"54,292"
+BTC RSI2 Price TWAP deep fb2 15m,2025-02,-2.27%,"53,061"
+BTC RSI2 Price TWAP deep fb2 15m,2025-03,0.20%,"53,169"
+BTC RSI2 Price TWAP deep fb2 15m,2025-04,1.21%,"53,810"
+BTC RSI2 Price TWAP deep fb2 15m,2025-05,3.38%,"55,628"
+BTC RSI2 Price TWAP deep fb2 15m,2025-06,-2.61%,"54,176"
+BTC RSI2 Price TWAP deep fb2 15m,2025-07,0.21%,"54,288"
+BTC RSI2 Price TWAP deep fb2 15m,2025-08,1.22%,"54,950"
+BTC RSI2 Price TWAP deep fb2 15m,2025-09,-1.12%,"54,336"
+BTC RSI2 Price TWAP deep fb2 15m,2025-10,-1.41%,"53,568"
+BTC RSI2 Price TWAP deep fb2 15m,2025-11,3.29%,"55,329"
+BTC RSI2 Price TWAP deep fb2 15m,2025-12,-2.10%,"54,166"
+BTC RSI2 Price TWAP deep fb2 15m,2026-01,0.05%,"54,194"
+BTC RSI2 Price TWAP deep fb2 15m,2026-02,5.64%,"57,253"
+BTC RSI2 Price TWAP deep fb2 15m,2026-03,4.47%,"59,813"
+BTC RSI2 Price TWAP deep fb2 15m,2026-04,5.86%,"63,320"
+BTC RSI2 Price TWAP deep fb5 15m,2025-01,4.84%,"38,240"
+BTC RSI2 Price TWAP deep fb5 15m,2025-02,-2.27%,"37,373"
+BTC RSI2 Price TWAP deep fb5 15m,2025-03,-0.82%,"37,069"
+BTC RSI2 Price TWAP deep fb5 15m,2025-04,0.75%,"37,348"
+BTC RSI2 Price TWAP deep fb5 15m,2025-05,2.51%,"38,287"
+BTC RSI2 Price TWAP deep fb5 15m,2025-06,-2.61%,"37,287"
+BTC RSI2 Price TWAP deep fb5 15m,2025-07,0.00%,"37,287"
+BTC RSI2 Price TWAP deep fb5 15m,2025-08,0.58%,"37,502"
+BTC RSI2 Price TWAP deep fb5 15m,2025-09,-1.12%,"37,084"
+BTC RSI2 Price TWAP deep fb5 15m,2025-10,-1.41%,"36,560"
+BTC RSI2 Price TWAP deep fb5 15m,2025-11,3.29%,"37,761"
+BTC RSI2 Price TWAP deep fb5 15m,2025-12,-1.24%,"37,295"
+BTC RSI2 Price TWAP deep fb5 15m,2026-01,-0.60%,"37,070"
+BTC RSI2 Price TWAP deep fb5 15m,2026-02,1.85%,"37,754"
+BTC RSI2 Price TWAP deep fb5 15m,2026-03,4.47%,"39,442"
+BTC RSI2 Price TWAP deep fb5 15m,2026-04,5.39%,"41,569"
+BTC Trend RSI-BB 15m,2025-01,-1.81%,"10,900"
+BTC Trend RSI-BB 15m,2025-02,-5.81%,"10,266"
+BTC Trend RSI-BB 15m,2025-03,8.94%,"11,184"
+BTC Trend RSI-BB 15m,2025-04,4.38%,"11,674"
+BTC Trend RSI-BB 15m,2025-05,-5.17%,"11,071"
+BTC Trend RSI-BB 15m,2025-06,-3.42%,"10,692"
+BTC Trend RSI-BB 15m,2025-07,1.98%,"10,905"
+BTC Trend RSI-BB 15m,2025-08,-0.06%,"10,898"
+BTC Trend RSI-BB 15m,2025-09,-2.49%,"10,626"
+BTC Trend RSI-BB 15m,2025-10,0.19%,"10,646"
+BTC Trend RSI-BB 15m,2025-11,4.08%,"11,081"
+BTC Trend RSI-BB 15m,2025-12,-4.64%,"10,567"
+BTC Trend RSI-BB 15m,2026-01,2.45%,"10,827"
+BTC Trend RSI-BB 15m,2026-02,-3.00%,"10,502"
+BTC Trend RSI-BB 15m,2026-03,-1.63%,"10,331"
+BTC Trend RSI-BB 15m,2026-04,-1.42%,"10,184"
+ETH RSI2 15m,2025-01,-0.81%,"19,978"
+ETH RSI2 15m,2025-02,1.44%,"20,266"
+ETH RSI2 15m,2025-03,-4.82%,"19,289"
+ETH RSI2 15m,2025-04,9.25%,"21,073"
+ETH RSI2 15m,2025-05,5.11%,"22,150"
+ETH RSI2 15m,2025-06,8.71%,"24,079"
+ETH RSI2 15m,2025-07,8.08%,"26,025"
+ETH RSI2 15m,2025-08,1.78%,"26,487"
+ETH RSI2 15m,2025-09,3.29%,"27,360"
+ETH RSI2 15m,2025-10,2.43%,"28,025"
+ETH RSI2 15m,2025-11,-5.46%,"26,495"
+ETH RSI2 15m,2025-12,-13.23%,"22,990"
+ETH RSI2 15m,2026-01,-0.30%,"22,921"
+ETH RSI2 15m,2026-02,4.23%,"23,890"
+ETH RSI2 15m,2026-03,5.43%,"25,189"
+ETH RSI2 15m,2026-04,1.94%,"25,676"
+ETH RSI2 Price TWAP mid 15m,2025-01,-4.91%,"14,515"
+ETH RSI2 Price TWAP mid 15m,2025-02,3.64%,"15,044"
+ETH RSI2 Price TWAP mid 15m,2025-03,0.88%,"15,176"
+ETH RSI2 Price TWAP mid 15m,2025-04,7.37%,"16,294"
+ETH RSI2 Price TWAP mid 15m,2025-05,0.30%,"16,344"
+ETH RSI2 Price TWAP mid 15m,2025-06,8.14%,"17,674"
+ETH RSI2 Price TWAP mid 15m,2025-07,11.09%,"19,635"
+ETH RSI2 Price TWAP mid 15m,2025-08,-2.53%,"19,138"
+ETH RSI2 Price TWAP mid 15m,2025-09,3.92%,"19,888"
+ETH RSI2 Price TWAP mid 15m,2025-10,4.81%,"20,844"
+ETH RSI2 Price TWAP mid 15m,2025-11,-2.61%,"20,300"
+ETH RSI2 Price TWAP mid 15m,2025-12,-3.96%,"19,497"
+ETH RSI2 Price TWAP mid 15m,2026-01,0.21%,"19,539"
+ETH RSI2 Price TWAP mid 15m,2026-02,5.43%,"20,601"
+ETH RSI2 Price TWAP mid 15m,2026-03,7.41%,"22,127"
+ETH RSI2 Price TWAP mid 15m,2026-04,1.58%,"22,476"
+ETH RSI2 Price TWAP deep 15m,2025-01,-2.76%,"22,638"
+ETH RSI2 Price TWAP deep 15m,2025-02,2.70%,"23,249"
+ETH RSI2 Price TWAP deep 15m,2025-03,-0.16%,"23,211"
+ETH RSI2 Price TWAP deep 15m,2025-04,5.04%,"24,380"
+ETH RSI2 Price TWAP deep 15m,2025-05,0.78%,"24,571"
+ETH RSI2 Price TWAP deep 15m,2025-06,7.49%,"26,411"
+ETH RSI2 Price TWAP deep 15m,2025-07,7.95%,"28,512"
+ETH RSI2 Price TWAP deep 15m,2025-08,-3.95%,"27,385"
+ETH RSI2 Price TWAP deep 15m,2025-09,1.92%,"27,911"
+ETH RSI2 Price TWAP deep 15m,2025-10,3.05%,"28,762"
+ETH RSI2 Price TWAP deep 15m,2025-11,-0.70%,"28,560"
+ETH RSI2 Price TWAP deep 15m,2025-12,-3.69%,"27,507"
+ETH RSI2 Price TWAP deep 15m,2026-01,3.64%,"28,508"
+ETH RSI2 Price TWAP deep 15m,2026-02,7.79%,"30,728"
+ETH RSI2 Price TWAP deep 15m,2026-03,8.39%,"33,306"
+ETH RSI2 Price TWAP deep 15m,2026-04,6.76%,"35,557"
+ETH RSI2 Price TWAP mid fb2 15m,2025-01,-4.91%,"12,638"
+ETH RSI2 Price TWAP mid fb2 15m,2025-02,3.64%,"13,099"
+ETH RSI2 Price TWAP mid fb2 15m,2025-03,0.88%,"13,214"
+ETH RSI2 Price TWAP mid fb2 15m,2025-04,7.05%,"14,145"
+ETH RSI2 Price TWAP mid fb2 15m,2025-05,0.30%,"14,188"
+ETH RSI2 Price TWAP mid fb2 15m,2025-06,8.14%,"15,343"
+ETH RSI2 Price TWAP mid fb2 15m,2025-07,10.76%,"16,994"
+ETH RSI2 Price TWAP mid fb2 15m,2025-08,-2.53%,"16,564"
+ETH RSI2 Price TWAP mid fb2 15m,2025-09,3.92%,"17,213"
+ETH RSI2 Price TWAP mid fb2 15m,2025-10,3.16%,"17,756"
+ETH RSI2 Price TWAP mid fb2 15m,2025-11,-2.61%,"17,293"
+ETH RSI2 Price TWAP mid fb2 15m,2025-12,-3.96%,"16,609"
+ETH RSI2 Price TWAP mid fb2 15m,2026-01,-0.38%,"16,546"
+ETH RSI2 Price TWAP mid fb2 15m,2026-02,4.25%,"17,250"
+ETH RSI2 Price TWAP mid fb2 15m,2026-03,5.47%,"18,192"
+ETH RSI2 Price TWAP mid fb2 15m,2026-04,1.66%,"18,495"
+ETH Trend RSI-BB 15m,2025-01,-11.94%,382
+ETH Trend RSI-BB 15m,2025-02,-10.90%,340
+ETH Trend RSI-BB 15m,2025-03,-8.85%,310
+ETH Trend RSI-BB 15m,2025-04,-4.80%,295
+ETH Trend RSI-BB 15m,2025-05,-7.07%,274
+ETH Trend RSI-BB 15m,2025-06,-4.06%,263
+ETH Trend RSI-BB 15m,2025-07,-3.12%,255
+ETH Trend RSI-BB 15m,2025-08,-6.91%,237
+ETH Trend RSI-BB 15m,2025-09,-3.40%,229
+ETH Trend RSI-BB 15m,2025-10,-12.64%,200
+ETH Trend RSI-BB 15m,2025-11,1.06%,202
+ETH Trend RSI-BB 15m,2025-12,-7.33%,188
+ETH Trend RSI-BB 15m,2026-01,-8.28%,172
+ETH Trend RSI-BB 15m,2026-02,-4.63%,164
+ETH Trend RSI-BB 15m,2026-03,-20.75%,130
+ETH Trend RSI-BB 15m,2026-04,-18.91%,105
+ETH/BTC RSI Filter 15m,2025-01,-3.35%,"19,486"
+ETH/BTC RSI Filter 15m,2025-02,1.25%,"19,730"
+ETH/BTC RSI Filter 15m,2025-03,1.25%,"19,977"
+ETH/BTC RSI Filter 15m,2025-04,4.01%,"20,778"
+ETH/BTC RSI Filter 15m,2025-05,6.07%,"22,039"
+ETH/BTC RSI Filter 15m,2025-06,6.65%,"23,505"
+ETH/BTC RSI Filter 15m,2025-07,6.55%,"25,045"
+ETH/BTC RSI Filter 15m,2025-08,1.44%,"25,407"
+ETH/BTC RSI Filter 15m,2025-09,2.01%,"25,917"
+ETH/BTC RSI Filter 15m,2025-10,-0.10%,"25,892"
+ETH/BTC RSI Filter 15m,2025-11,-0.23%,"25,833"
+ETH/BTC RSI Filter 15m,2025-12,-3.19%,"25,009"
+ETH/BTC RSI Filter 15m,2026-01,1.25%,"25,323"
+ETH/BTC RSI Filter 15m,2026-02,3.13%,"26,115"
+ETH/BTC RSI Filter 15m,2026-03,1.14%,"26,412"
+ETH/BTC RSI Filter 15m,2026-04,1.75%,"26,873"
+BTC Lead ETH Lag 15m,2025-01,-19.57%,"8,543"
+BTC Lead ETH Lag 15m,2025-02,4.71%,"8,946"
+BTC Lead ETH Lag 15m,2025-03,25.14%,"11,194"
+BTC Lead ETH Lag 15m,2025-04,-7.84%,"10,317"
+BTC Lead ETH Lag 15m,2025-05,-2.61%,"10,048"
+BTC Lead ETH Lag 15m,2025-06,0.00%,"10,048"
+BTC Lead ETH Lag 15m,2025-07,2.44%,"10,293"
+BTC Lead ETH Lag 15m,2025-08,-2.61%,"10,025"
+BTC Lead ETH Lag 15m,2025-09,0.00%,"10,025"
+BTC Lead ETH Lag 15m,2025-10,-2.61%,"9,763"
+BTC Lead ETH Lag 15m,2025-11,-2.61%,"9,508"
+BTC Lead ETH Lag 15m,2025-12,-5.15%,"9,018"
+BTC Lead ETH Lag 15m,2026-01,0.00%,"9,018"
+BTC Lead ETH Lag 15m,2026-02,-0.23%,"8,998"
+BTC Lead ETH Lag 15m,2026-03,-5.15%,"8,534"
+BTC Lead ETH Lag 5m,2025-01,-11.86%,"3,568"
+BTC Lead ETH Lag 5m,2025-02,-1.03%,"3,532"
+BTC Lead ETH Lag 5m,2025-03,11.46%,"3,936"
+BTC Lead ETH Lag 5m,2025-04,8.43%,"4,268"
+BTC Lead ETH Lag 5m,2025-05,3.08%,"4,399"
+BTC Lead ETH Lag 5m,2025-06,0.00%,"4,399"
+BTC Lead ETH Lag 5m,2025-07,5.19%,"4,627"
+BTC Lead ETH Lag 5m,2025-08,-2.43%,"4,515"
+BTC Lead ETH Lag 5m,2025-09,-3.98%,"4,335"
+BTC Lead ETH Lag 5m,2025-10,-2.01%,"4,248"
+BTC Lead ETH Lag 5m,2025-11,-2.01%,"4,163"
+BTC Lead ETH Lag 5m,2025-12,1.00%,"4,205"
+BTC Lead ETH Lag 5m,2026-01,0.00%,"4,205"
+BTC Lead ETH Lag 5m,2026-02,8.43%,"4,559"
+BTC Lead ETH Lag 3m,2025-01,-6.73%,"9,361"
+BTC Lead ETH Lag 3m,2025-02,-2.01%,"9,173"
+BTC Lead ETH Lag 3m,2025-03,-9.93%,"8,262"
+BTC Lead ETH Lag 3m,2025-04,0.00%,"8,262"
+BTC Lead ETH Lag 3m,2025-05,-2.01%,"8,096"
+BTC Lead ETH Lag 3m,2025-06,0.00%,"8,096"
+BTC Lead ETH Lag 3m,2025-07,3.39%,"8,371"
+BTC Lead ETH Lag 3m,2025-08,-3.98%,"8,038"
+BTC Lead ETH Lag 3m,2025-09,0.00%,"8,038"
+BTC Lead ETH Lag 3m,2025-10,3.39%,"8,310"
+BTC Lead ETH Lag 3m,2025-11,0.00%,"8,310"
+BTC Lead ETH Lag 3m,2025-12,3.39%,"8,592"
+BTC Lead ETH Lag 3m,2026-01,0.00%,"8,592"
+BTC Lead ETH Lag 3m,2026-02,1.31%,"8,705"
+BTC Lead ETH Lag 3m,2026-03,3.39%,"9,000"

Diff do ficheiro suprimidas por serem muito extensas
+ 1 - 2
reports/ultrashort/ultrashort-recent-report.html


+ 21 - 8
reports/ultrashort/ultrashort-recent-summary.csv

@@ -1,9 +1,22 @@
 strategy,bar,trades,3y_return,3y_annualized,3y_max_dd,3y_calmar
 strategy,bar,trades,3y_return,3y_annualized,3y_max_dd,3y_calmar
-BTC RSI2 Guarded 15m,15m,842,101.95%,26.42%,16.89%,1.56
-BTC Trend RSI-BB 15m,15m,642,66.98%,18.72%,7.47%,2.51
-ETH RSI2 15m,15m,536,76.77%,21.03%,18.60%,1.13
-ETH Trend RSI-BB 15m,15m,1735,21.72%,6.77%,29.73%,0.23
-ETH/BTC RSI Filter 15m,15m,282,61.80%,17.50%,7.47%,2.34
-BTC Lead ETH Lag 15m,15m,864,137.01%,33.48%,30.01%,1.12
-BTC Lead ETH Lag 5m,5m,1043,111.14%,28.40%,17.35%,1.64
-BTC Lead ETH Lag 3m,3m,999,26.93%,8.29%,20.26%,0.41
+BTC RSI2 Guarded 15m,15m,873,5.82%,1.90%,30.60%,0.06
+BTC RSI2 TWAP2 15m,15m,870,-16.23%,-5.74%,29.54%,-0.19
+BTC RSI2 TWAP3 15m,15m,870,-21.35%,-7.70%,28.17%,-0.27
+BTC RSI2 Price TWAP shallow 15m,15m,689,121.55%,30.39%,16.87%,1.80
+BTC RSI2 Price TWAP mid 15m,15m,570,169.43%,39.18%,8.00%,4.90
+BTC RSI2 Price TWAP deep 15m,15m,449,150.01%,35.75%,7.04%,5.08
+BTC RSI2 Price TWAP 2slice 15m,15m,574,112.80%,28.65%,8.53%,3.36
+BTC RSI2 Price TWAP mid fb2 15m,15m,537,138.65%,33.66%,8.00%,4.21
+BTC RSI2 Price TWAP mid fb5 15m,15m,480,76.87%,20.95%,10.23%,2.05
+BTC RSI2 Price TWAP deep fb2 15m,15m,422,111.52%,28.39%,7.55%,3.76
+BTC RSI2 Price TWAP deep fb5 15m,15m,396,71.16%,19.63%,8.04%,2.44
+BTC Trend RSI-BB 15m,15m,665,1.47%,0.49%,17.52%,0.03
+ETH RSI2 15m,15m,536,36.82%,11.08%,20.83%,0.53
+ETH RSI2 Price TWAP mid 15m,15m,372,58.87%,17.03%,15.65%,1.09
+ETH RSI2 Price TWAP deep 15m,15m,321,89.59%,24.28%,7.88%,3.08
+ETH RSI2 Price TWAP mid fb2 15m,15m,357,45.35%,13.55%,16.26%,0.83
+ETH Trend RSI-BB 15m,15m,2019,-82.94%,-44.53%,82.95%,-0.54
+ETH/BTC RSI Filter 15m,15m,282,41.55%,12.35%,9.42%,1.31
+BTC Lead ETH Lag 15m,15m,947,69.32%,19.27%,33.85%,0.57
+BTC Lead ETH Lag 5m,5m,1142,52.61%,15.19%,21.86%,0.69
+BTC Lead ETH Lag 3m,3m,1076,-7.40%,-2.54%,32.81%,-0.08

+ 84 - 32
reports/ultrashort/ultrashort-strategy-horizons.csv

@@ -1,33 +1,85 @@
 strategy,horizon,return,annualized,max_dd,calmar
 strategy,horizon,return,annualized,max_dd,calmar
-BTC RSI2 Guarded 15m,3y,102.88%,26.57%,16.89%,1.57
-BTC RSI2 Guarded 15m,1y,18.35%,18.35%,8.07%,2.27
-BTC RSI2 Guarded 15m,6m,14.89%,32.10%,6.63%,4.84
-BTC RSI2 Guarded 15m,3m,11.68%,56.55%,4.54%,12.47
-BTC Trend RSI-BB 15m,3y,66.50%,18.51%,7.47%,2.48
-BTC Trend RSI-BB 15m,1y,-3.94%,-3.94%,7.28%,-0.54
-BTC Trend RSI-BB 15m,6m,-0.74%,-1.48%,7.28%,-0.20
-BTC Trend RSI-BB 15m,3m,-3.79%,-14.50%,5.90%,-2.46
-ETH RSI2 15m,3y,79.27%,21.46%,18.60%,1.15
-ETH RSI2 15m,1y,33.65%,33.65%,18.60%,1.81
-ETH RSI2 15m,6m,-4.23%,-8.30%,17.60%,-0.47
-ETH RSI2 15m,3m,14.56%,73.52%,2.40%,30.68
-ETH Trend RSI-BB 15m,3y,24.69%,7.63%,29.73%,0.26
-ETH Trend RSI-BB 15m,1y,-17.53%,-17.53%,29.57%,-0.59
-ETH Trend RSI-BB 15m,6m,-19.41%,-35.13%,25.47%,-1.38
-ETH Trend RSI-BB 15m,3m,-21.12%,-61.79%,21.34%,-2.90
-ETH/BTC RSI Filter 15m,3y,65.18%,18.19%,7.47%,2.43
-ETH/BTC RSI Filter 15m,1y,39.92%,39.92%,4.50%,8.88
-ETH/BTC RSI Filter 15m,6m,5.98%,12.36%,4.50%,2.75
-ETH/BTC RSI Filter 15m,3m,8.04%,36.86%,0.29%,125.26
-BTC Lead ETH Lag 15m,3y,153.00%,36.22%,30.01%,1.21
-BTC Lead ETH Lag 15m,1y,-16.22%,-16.22%,20.46%,-0.79
-BTC Lead ETH Lag 15m,6m,-14.16%,-26.51%,14.20%,-1.87
-BTC Lead ETH Lag 15m,3m,-9.67%,-33.79%,9.71%,-3.48
-BTC Lead ETH Lag 5m,3y,134.30%,32.78%,17.35%,1.89
-BTC Lead ETH Lag 5m,1y,34.21%,34.21%,11.28%,3.03
-BTC Lead ETH Lag 5m,6m,-0.41%,-0.82%,11.28%,-0.07
-BTC Lead ETH Lag 5m,3m,7.98%,35.63%,3.80%,9.37
-BTC Lead ETH Lag 3m,3y,32.46%,9.81%,20.26%,0.48
-BTC Lead ETH Lag 3m,1y,4.78%,4.78%,11.79%,0.41
-BTC Lead ETH Lag 3m,6m,12.46%,26.72%,1.92%,13.92
-BTC Lead ETH Lag 3m,3m,8.68%,40.15%,1.92%,20.91
+BTC RSI2 Guarded 15m,3y,5.92%,1.93%,30.60%,0.06
+BTC RSI2 Guarded 15m,1y,0.59%,0.59%,12.84%,0.05
+BTC RSI2 Guarded 15m,6m,7.11%,14.77%,7.14%,2.07
+BTC RSI2 Guarded 15m,3m,6.87%,30.95%,4.80%,6.45
+BTC RSI2 TWAP2 15m,3y,-16.42%,-5.80%,29.54%,-0.20
+BTC RSI2 TWAP2 15m,1y,-4.17%,-4.17%,12.47%,-0.33
+BTC RSI2 TWAP2 15m,6m,1.58%,3.19%,7.17%,0.44
+BTC RSI2 TWAP2 15m,3m,3.17%,13.49%,4.98%,2.71
+BTC RSI2 TWAP3 15m,3y,-21.64%,-7.80%,28.17%,-0.28
+BTC RSI2 TWAP3 15m,1y,-3.94%,-3.94%,11.69%,-0.34
+BTC RSI2 TWAP3 15m,6m,1.80%,3.65%,6.47%,0.56
+BTC RSI2 TWAP3 15m,3m,3.69%,15.83%,3.34%,4.74
+BTC RSI2 Price TWAP shallow 15m,3y,121.76%,30.37%,16.87%,1.80
+BTC RSI2 Price TWAP shallow 15m,1y,32.25%,32.25%,6.54%,4.93
+BTC RSI2 Price TWAP shallow 15m,6m,27.76%,63.44%,6.15%,10.31
+BTC RSI2 Price TWAP shallow 15m,3m,21.57%,120.83%,2.61%,46.29
+BTC RSI2 Price TWAP mid 15m,3y,170.78%,39.34%,8.00%,4.92
+BTC RSI2 Price TWAP mid 15m,1y,29.93%,29.93%,8.00%,3.74
+BTC RSI2 Price TWAP mid 15m,6m,26.10%,59.21%,6.69%,8.85
+BTC RSI2 Price TWAP mid 15m,3m,20.72%,114.61%,2.61%,43.91
+BTC RSI2 Price TWAP deep 15m,3y,152.40%,36.11%,7.04%,5.13
+BTC RSI2 Price TWAP deep 15m,1y,25.18%,25.18%,5.84%,4.31
+BTC RSI2 Price TWAP deep 15m,6m,22.24%,49.60%,5.84%,8.49
+BTC RSI2 Price TWAP deep 15m,3m,19.43%,105.49%,2.61%,40.42
+BTC RSI2 Price TWAP 2slice 15m,3y,113.54%,28.74%,8.53%,3.37
+BTC RSI2 Price TWAP 2slice 15m,1y,23.14%,23.14%,8.00%,2.89
+BTC RSI2 Price TWAP 2slice 15m,6m,22.93%,51.30%,6.55%,7.83
+BTC RSI2 Price TWAP 2slice 15m,3m,18.40%,98.38%,2.61%,37.69
+BTC RSI2 Price TWAP mid fb2 15m,3y,139.84%,33.82%,8.00%,4.23
+BTC RSI2 Price TWAP mid fb2 15m,1y,22.16%,22.16%,8.00%,2.77
+BTC RSI2 Price TWAP mid fb2 15m,6m,20.48%,45.30%,6.69%,6.77
+BTC RSI2 Price TWAP mid fb2 15m,3m,16.27%,84.26%,2.72%,30.99
+BTC RSI2 Price TWAP mid fb5 15m,3y,77.75%,21.11%,10.23%,2.06
+BTC RSI2 Price TWAP mid fb5 15m,1y,8.62%,8.62%,10.23%,0.84
+BTC RSI2 Price TWAP mid fb5 15m,6m,14.32%,30.79%,5.86%,5.26
+BTC RSI2 Price TWAP mid fb5 15m,3m,13.25%,65.66%,2.72%,24.15
+BTC RSI2 Price TWAP deep fb2 15m,3y,113.54%,28.74%,7.55%,3.80
+BTC RSI2 Price TWAP deep fb2 15m,1y,18.42%,18.42%,5.84%,3.15
+BTC RSI2 Price TWAP deep fb2 15m,6m,18.46%,40.47%,5.84%,6.93
+BTC RSI2 Price TWAP deep fb2 15m,3m,15.82%,81.44%,2.61%,31.20
+BTC RSI2 Price TWAP deep fb5 15m,3y,72.79%,19.98%,8.04%,2.48
+BTC RSI2 Price TWAP deep fb5 15m,1y,12.01%,12.01%,8.04%,1.49
+BTC RSI2 Price TWAP deep fb5 15m,6m,13.95%,29.94%,8.04%,3.72
+BTC RSI2 Price TWAP deep fb5 15m,3m,11.16%,53.58%,3.46%,15.50
+BTC Trend RSI-BB 15m,3y,1.00%,0.33%,17.52%,0.02
+BTC Trend RSI-BB 15m,1y,-12.76%,-12.76%,12.76%,-1.00
+BTC Trend RSI-BB 15m,6m,-4.34%,-8.51%,8.55%,-1.00
+BTC Trend RSI-BB 15m,3m,-5.93%,-21.97%,6.51%,-3.37
+ETH RSI2 15m,3y,38.64%,11.49%,20.83%,0.55
+ETH RSI2 15m,1y,21.85%,21.85%,20.83%,1.05
+ETH RSI2 15m,6m,-8.28%,-15.92%,19.71%,-0.81
+ETH RSI2 15m,3m,12.02%,58.46%,2.67%,21.87
+ETH RSI2 Price TWAP mid 15m,3y,59.23%,16.76%,15.65%,1.07
+ETH RSI2 Price TWAP mid 15m,1y,37.94%,37.94%,7.09%,5.35
+ETH RSI2 Price TWAP mid 15m,6m,8.60%,17.98%,7.09%,2.54
+ETH RSI2 Price TWAP mid 15m,3m,15.03%,76.47%,2.93%,26.09
+ETH RSI2 Price TWAP deep 15m,3y,90.59%,23.96%,7.88%,3.04
+ETH RSI2 Price TWAP deep 15m,1y,45.84%,45.84%,6.45%,7.11
+ETH RSI2 Price TWAP deep 15m,6m,24.50%,55.19%,6.45%,8.56
+ETH RSI2 Price TWAP deep 15m,3m,24.72%,144.98%,0.99%,146.42
+ETH RSI2 Price TWAP mid fb2 15m,3y,45.67%,13.35%,16.26%,0.82
+ETH RSI2 Price TWAP mid fb2 15m,1y,30.75%,30.75%,7.45%,4.13
+ETH RSI2 Price TWAP mid fb2 15m,6m,4.90%,10.06%,7.45%,1.35
+ETH RSI2 Price TWAP mid fb2 15m,3m,11.78%,57.09%,2.93%,19.48
+ETH Trend RSI-BB 15m,3y,-82.59%,-44.13%,82.95%,-0.53
+ETH Trend RSI-BB 15m,1y,-65.04%,-65.04%,66.43%,-0.98
+ETH Trend RSI-BB 15m,6m,-49.18%,-74.27%,49.76%,-1.49
+ETH Trend RSI-BB 15m,3m,-39.69%,-87.14%,40.39%,-2.16
+ETH/BTC RSI Filter 15m,3y,44.24%,12.98%,9.42%,1.38
+ETH/BTC RSI Filter 15m,1y,32.84%,32.84%,4.86%,6.76
+ETH/BTC RSI Filter 15m,6m,3.53%,7.21%,4.86%,1.48
+ETH/BTC RSI Filter 15m,3m,7.28%,32.96%,0.38%,85.76
+BTC Lead ETH Lag 15m,3y,75.14%,20.52%,33.85%,0.61
+BTC Lead ETH Lag 15m,1y,-19.81%,-19.81%,23.77%,-0.83
+BTC Lead ETH Lag 15m,6m,-14.87%,-27.72%,14.87%,-1.86
+BTC Lead ETH Lag 15m,3m,-10.24%,-35.49%,10.24%,-3.46
+BTC Lead ETH Lag 5m,3y,65.47%,18.26%,21.86%,0.84
+BTC Lead ETH Lag 5m,1y,29.09%,29.09%,11.85%,2.45
+BTC Lead ETH Lag 5m,6m,-1.48%,-2.92%,11.85%,-0.25
+BTC Lead ETH Lag 5m,3m,7.31%,32.31%,3.98%,8.12
+BTC Lead ETH Lag 3m,3y,-10.01%,-3.45%,32.81%,-0.11
+BTC Lead ETH Lag 3m,1y,0.12%,0.12%,12.75%,0.01
+BTC Lead ETH Lag 3m,6m,11.97%,25.60%,2.01%,12.74
+BTC Lead ETH Lag 3m,3m,8.30%,38.16%,2.01%,18.99

+ 12 - 12
reports/ultrashort/ultrashort-worst-portfolio-months.csv

@@ -1,13 +1,13 @@
 portfolio,period,return,end_equity
 portfolio,period,return,end_equity
-Lead Lag Basket,2025-01,-11.43%,"50,601"
-Aggressive 5,2025-01,-6.90%,"77,506"
-Aggressive 5,2025-12,-4.42%,"92,083"
-Lead Lag Basket,2025-08,-2.67%,"59,622"
-Balanced 4,2025-12,-2.09%,"68,667"
-Balanced 4,2025-09,-2.06%,"69,959"
-Lead Lag Basket,2025-11,-1.81%,"57,094"
-Aggressive 5,2025-11,-1.52%,"96,345"
-Balanced 4,2025-02,-1.51%,"57,843"
-Lead Lag Basket,2026-03,-1.40%,"57,508"
-Lead Lag Basket,2025-09,-1.32%,"58,834"
-Balanced 4,2025-01,-1.20%,"58,728"
+Lead Lag Basket,2025-01,-14.30%,"38,527"
+Aggressive 5,2025-01,-9.48%,"60,161"
+Balanced 4,2025-01,-5.01%,"43,425"
+Aggressive 5,2025-12,-5.01%,"67,033"
+Lead Lag Basket,2025-08,-2.81%,"43,273"
+Balanced 4,2025-12,-2.48%,"47,419"
+Balanced 4,2025-02,-2.25%,"42,446"
+Balanced 4,2025-09,-2.23%,"49,063"
+Aggressive 5,2025-11,-1.99%,"70,569"
+Lead Lag Basket,2025-11,-1.88%,"41,350"
+Balanced 4,2025-10,-1.54%,"48,308"
+Lead Lag Basket,2026-03,-1.46%,"41,453"

+ 20 - 20
reports/ultrashort/ultrashort-worst-strategy-months.csv

@@ -1,21 +1,21 @@
 strategy,period,return,end_equity
 strategy,period,return,end_equity
-BTC Lead ETH Lag 15m,2025-01,-16.65%,"51,474"
-ETH RSI2 15m,2025-12,-12.59%,"36,154"
-ETH Trend RSI-BB 15m,2026-03,-10.36%,"84,161"
-ETH Trend RSI-BB 15m,2025-10,-10.06%,"92,358"
-BTC Lead ETH Lag 5m,2025-01,-9.07%,"36,128"
-ETH Trend RSI-BB 15m,2026-04,-7.55%,"77,810"
-ETH Trend RSI-BB 15m,2025-01,-5.70%,"98,441"
-BTC Trend RSI-BB 15m,2025-02,-5.38%,"39,765"
-ETH Trend RSI-BB 15m,2025-02,-5.12%,"93,398"
-BTC Lead ETH Lag 15m,2025-12,-4.98%,"57,262"
-BTC Lead ETH Lag 15m,2026-03,-4.98%,"54,435"
-BTC Lead ETH Lag 15m,2025-04,-4.94%,"65,030"
-ETH RSI2 15m,2025-11,-4.86%,"41,362"
-BTC Lead ETH Lag 3m,2025-03,-4.57%,"58,531"
-ETH Trend RSI-BB 15m,2026-01,-4.56%,"95,474"
-ETH RSI2 15m,2025-03,-4.13%,"28,284"
-BTC Trend RSI-BB 15m,2025-12,-4.12%,"44,582"
-BTC Lead ETH Lag 5m,2025-09,-3.80%,"45,474"
-BTC Lead ETH Lag 3m,2025-08,-3.80%,"57,146"
-BTC RSI2 Guarded 15m,2025-09,-3.80%,"28,694"
+ETH Trend RSI-BB 15m,2026-03,-20.75%,130
+BTC Lead ETH Lag 15m,2025-01,-19.57%,"8,543"
+ETH Trend RSI-BB 15m,2026-04,-18.91%,105
+ETH RSI2 15m,2025-12,-13.23%,"22,990"
+ETH Trend RSI-BB 15m,2025-10,-12.64%,200
+ETH Trend RSI-BB 15m,2025-01,-11.94%,382
+BTC Lead ETH Lag 5m,2025-01,-11.86%,"3,568"
+ETH Trend RSI-BB 15m,2025-02,-10.90%,340
+BTC Lead ETH Lag 3m,2025-03,-9.93%,"8,262"
+ETH Trend RSI-BB 15m,2025-03,-8.85%,310
+ETH Trend RSI-BB 15m,2026-01,-8.28%,172
+BTC Lead ETH Lag 15m,2025-04,-7.84%,"10,317"
+ETH Trend RSI-BB 15m,2025-12,-7.33%,188
+ETH Trend RSI-BB 15m,2025-05,-7.07%,274
+ETH Trend RSI-BB 15m,2025-08,-6.91%,237
+BTC Lead ETH Lag 3m,2025-01,-6.73%,"9,361"
+BTC Trend RSI-BB 15m,2025-02,-5.81%,"10,266"
+ETH RSI2 15m,2025-11,-5.46%,"26,495"
+BTC RSI2 TWAP2 15m,2025-09,-5.24%,"4,888"
+BTC Trend RSI-BB 15m,2025-05,-5.17%,"11,071"

+ 96 - 44
reports/ultrashort/ultrashort-yearly.csv

@@ -1,45 +1,97 @@
 name,year,return,end_equity
 name,year,return,end_equity
-BTC RSI2 Guarded 15m,2023,6.62%,"10,662"
-BTC RSI2 Guarded 15m,2024,42.79%,"15,224"
-BTC RSI2 Guarded 15m,2025,14.73%,"17,467"
-BTC RSI2 Guarded 15m,2026,15.62%,"20,195"
-BTC Trend RSI-BB 15m,2023,3.19%,"10,319"
-BTC Trend RSI-BB 15m,2024,49.22%,"15,398"
-BTC Trend RSI-BB 15m,2025,9.72%,"16,895"
-BTC Trend RSI-BB 15m,2026,-1.16%,"16,698"
-ETH RSI2 15m,2023,5.13%,"10,513"
-ETH RSI2 15m,2024,17.14%,"12,315"
-ETH RSI2 15m,2025,24.88%,"15,379"
-ETH RSI2 15m,2026,14.94%,"17,677"
-ETH Trend RSI-BB 15m,2023,-8.59%,"9,141"
-ETH Trend RSI-BB 15m,2024,78.65%,"16,330"
-ETH Trend RSI-BB 15m,2025,-4.16%,"15,650"
-ETH Trend RSI-BB 15m,2026,-22.22%,"12,172"
-ETH/BTC RSI Filter 15m,2023,7.49%,"10,749"
-ETH/BTC RSI Filter 15m,2024,6.07%,"11,402"
-ETH/BTC RSI Filter 15m,2025,30.54%,"14,884"
-ETH/BTC RSI Filter 15m,2026,8.71%,"16,180"
-BTC Lead ETH Lag 15m,2023,52.87%,"15,287"
-BTC Lead ETH Lag 15m,2024,75.90%,"26,889"
-BTC Lead ETH Lag 15m,2025,-7.28%,"24,932"
-BTC Lead ETH Lag 15m,2026,-4.94%,"23,701"
-BTC Lead ETH Lag 5m,2023,31.56%,"13,156"
-BTC Lead ETH Lag 5m,2024,32.39%,"17,417"
-BTC Lead ETH Lag 5m,2025,11.51%,"19,422"
-BTC Lead ETH Lag 5m,2026,8.71%,"21,114"
-BTC Lead ETH Lag 3m,2023,2.02%,"10,202"
-BTC Lead ETH Lag 3m,2024,25.71%,"12,825"
-BTC Lead ETH Lag 3m,2025,-5.76%,"12,086"
-BTC Lead ETH Lag 3m,2026,5.03%,"12,693"
-Balanced 4,2023,11.31%,"44,887"
-Balanced 4,2024,32.42%,"59,441"
-Balanced 4,2025,15.52%,"68,667"
-Balanced 4,2026,8.04%,"74,188"
-Aggressive 5,2023,20.01%,"60,368"
-Aggressive 5,2024,37.90%,"83,248"
-Aggressive 5,2025,10.61%,"92,083"
-Aggressive 5,2026,7.37%,"98,867"
-Lead Lag Basket,2023,27.34%,"38,645"
-Lead Lag Basket,2024,47.84%,"57,132"
-Lead Lag Basket,2025,-1.21%,"56,440"
-Lead Lag Basket,2026,1.89%,"57,508"
+BTC RSI2 Guarded 15m,2023,-4.57%,"9,543"
+BTC RSI2 Guarded 15m,2024,9.86%,"10,484"
+BTC RSI2 Guarded 15m,2025,-8.04%,"9,642"
+BTC RSI2 Guarded 15m,2026,9.75%,"10,582"
+BTC RSI2 TWAP2 15m,2023,-7.43%,"9,257"
+BTC RSI2 TWAP2 15m,2024,-4.41%,"8,849"
+BTC RSI2 TWAP2 15m,2025,-9.69%,"7,991"
+BTC RSI2 TWAP2 15m,2026,4.82%,"8,377"
+BTC RSI2 TWAP3 15m,2023,-9.86%,"9,014"
+BTC RSI2 TWAP3 15m,2024,-6.87%,"8,395"
+BTC RSI2 TWAP3 15m,2025,-10.59%,"7,506"
+BTC RSI2 TWAP3 15m,2026,4.78%,"7,865"
+BTC RSI2 Price TWAP shallow 15m,2023,11.17%,"11,117"
+BTC RSI2 Price TWAP shallow 15m,2024,42.33%,"15,822"
+BTC RSI2 Price TWAP shallow 15m,2025,11.76%,"17,684"
+BTC RSI2 Price TWAP shallow 15m,2026,25.28%,"22,155"
+BTC RSI2 Price TWAP mid 15m,2023,12.60%,"11,260"
+BTC RSI2 Price TWAP mid 15m,2024,74.20%,"19,614"
+BTC RSI2 Price TWAP mid 15m,2025,9.87%,"21,550"
+BTC RSI2 Price TWAP mid 15m,2026,25.02%,"26,943"
+BTC RSI2 Price TWAP deep 15m,2023,20.63%,"12,063"
+BTC RSI2 Price TWAP deep 15m,2024,54.76%,"18,669"
+BTC RSI2 Price TWAP deep 15m,2025,11.10%,"20,740"
+BTC RSI2 Price TWAP deep 15m,2026,20.54%,"25,001"
+BTC RSI2 Price TWAP 2slice 15m,2023,9.95%,"10,995"
+BTC RSI2 Price TWAP 2slice 15m,2024,52.47%,"16,764"
+BTC RSI2 Price TWAP 2slice 15m,2025,4.15%,"17,459"
+BTC RSI2 Price TWAP 2slice 15m,2026,21.89%,"21,280"
+BTC RSI2 Price TWAP mid fb2 15m,2023,9.43%,"10,943"
+BTC RSI2 Price TWAP mid fb2 15m,2024,70.47%,"18,654"
+BTC RSI2 Price TWAP mid fb2 15m,2025,6.25%,"19,819"
+BTC RSI2 Price TWAP mid fb2 15m,2026,20.41%,"23,865"
+BTC RSI2 Price TWAP mid fb5 15m,2023,4.77%,"10,477"
+BTC RSI2 Price TWAP mid fb5 15m,2024,54.06%,"16,141"
+BTC RSI2 Price TWAP mid fb5 15m,2025,-4.69%,"15,384"
+BTC RSI2 Price TWAP mid fb5 15m,2026,14.97%,"17,687"
+BTC RSI2 Price TWAP deep fb2 15m,2023,20.09%,"12,009"
+BTC RSI2 Price TWAP deep fb2 15m,2024,44.05%,"17,299"
+BTC RSI2 Price TWAP deep fb2 15m,2025,4.60%,"18,094"
+BTC RSI2 Price TWAP deep fb2 15m,2026,16.90%,"21,152"
+BTC RSI2 Price TWAP deep fb5 15m,2023,14.26%,"11,426"
+BTC RSI2 Price TWAP deep fb5 15m,2024,31.44%,"15,018"
+BTC RSI2 Price TWAP deep fb5 15m,2025,2.25%,"15,356"
+BTC RSI2 Price TWAP deep fb5 15m,2026,11.46%,"17,116"
+BTC Trend RSI-BB 15m,2023,-9.68%,"9,032"
+BTC Trend RSI-BB 15m,2024,22.46%,"11,060"
+BTC Trend RSI-BB 15m,2025,-4.81%,"10,529"
+BTC Trend RSI-BB 15m,2026,-3.63%,"10,147"
+ETH RSI2 15m,2023,0.50%,"10,050"
+ETH RSI2 15m,2024,6.78%,"10,732"
+ETH RSI2 15m,2025,14.15%,"12,251"
+ETH RSI2 15m,2026,11.69%,"13,682"
+ETH RSI2 Price TWAP mid 15m,2023,-3.15%,"9,685"
+ETH RSI2 Price TWAP mid 15m,2024,11.40%,"10,789"
+ETH RSI2 Price TWAP mid 15m,2025,27.73%,"13,781"
+ETH RSI2 Price TWAP mid 15m,2026,15.28%,"15,887"
+ETH RSI2 Price TWAP deep 15m,2023,0.73%,"10,073"
+ETH RSI2 Price TWAP deep 15m,2024,23.24%,"12,414"
+ETH RSI2 Price TWAP deep 15m,2025,18.15%,"14,667"
+ETH RSI2 Price TWAP deep 15m,2026,29.26%,"18,959"
+ETH RSI2 Price TWAP mid fb2 15m,2023,-3.85%,"9,615"
+ETH RSI2 Price TWAP mid fb2 15m,2024,8.63%,"10,445"
+ETH RSI2 Price TWAP mid fb2 15m,2025,24.97%,"13,053"
+ETH RSI2 Price TWAP mid fb2 15m,2026,11.35%,"14,535"
+ETH Trend RSI-BB 15m,2023,-27.26%,"7,274"
+ETH Trend RSI-BB 15m,2024,-3.58%,"7,014"
+ETH Trend RSI-BB 15m,2025,-56.73%,"3,035"
+ETH Trend RSI-BB 15m,2026,-43.79%,"1,706"
+ETH/BTC RSI Filter 15m,2023,5.58%,"10,558"
+ETH/BTC RSI Filter 15m,2024,0.59%,"10,620"
+ETH/BTC RSI Filter 15m,2025,24.04%,"13,173"
+ETH/BTC RSI Filter 15m,2026,7.45%,"14,155"
+BTC Lead ETH Lag 15m,2023,39.66%,"13,966"
+BTC Lead ETH Lag 15m,2024,50.90%,"21,074"
+BTC Lead ETH Lag 15m,2025,-15.10%,"17,892"
+BTC Lead ETH Lag 15m,2026,-5.37%,"16,932"
+BTC Lead ETH Lag 5m,2023,22.79%,"12,279"
+BTC Lead ETH Lag 5m,2024,10.37%,"13,552"
+BTC Lead ETH Lag 5m,2025,3.86%,"14,076"
+BTC Lead ETH Lag 5m,2026,8.43%,"15,261"
+BTC Lead ETH Lag 3m,2023,-3.83%,"9,617"
+BTC Lead ETH Lag 3m,2024,7.38%,"10,327"
+BTC Lead ETH Lag 3m,2025,-14.40%,"8,840"
+BTC Lead ETH Lag 3m,2026,4.75%,"9,260"
+Balanced 4,2023,2.81%,"41,412"
+Balanced 4,2024,10.40%,"45,717"
+Balanced 4,2025,3.72%,"47,419"
+Balanced 4,2026,5.75%,"50,145"
+Aggressive 5,2023,12.19%,"56,396"
+Aggressive 5,2024,17.85%,"66,463"
+Aggressive 5,2025,0.86%,"67,033"
+Aggressive 5,2026,5.34%,"70,612"
+Lead Lag Basket,2023,18.20%,"35,862"
+Lead Lag Basket,2024,25.35%,"44,953"
+Lead Lag Basket,2025,-9.22%,"40,808"
+Lead Lag Basket,2026,1.58%,"41,453"

+ 366 - 7
scripts/explore_ultrashort.py

@@ -203,6 +203,41 @@ def _trade(
     return exit_equity, exit_equity > float(position["margin_used"])
     return exit_equity, exit_equity > float(position["margin_used"])
 
 
 
 
+def _close_partial_trade(
+    *,
+    trades: list[dict[str, object]],
+    exits: list[dict[str, object]],
+    position: dict[str, object],
+    account_equity: float,
+    candle: Candle,
+    exit_price: float,
+    leverage: int,
+) -> tuple[float, bool]:
+    margin_used = float(position["margin_used"])
+    exit_equity = trade_equity(
+        side=str(position["side"]),
+        margin_used=margin_used,
+        entry_price=float(position["entry_price"]),
+        exit_price=exit_price,
+        leverage=leverage,
+    )
+    pnl = exit_equity - margin_used
+    trades.append(
+        {
+            "side": "Long" if position["side"] == "long" else "Short",
+            "entry_time": _format_ts(int(position["entry_time"])),
+            "exit_time": _format_ts(candle.ts),
+            "entry_price": round(float(position["entry_price"]), 4),
+            "exit_price": round(exit_price, 4),
+            "pnl": round(pnl, 4),
+            "return_pct": round(pnl / account_equity * 100, 4),
+            "cost_weight": round(margin_used / account_equity, 8),
+        }
+    )
+    exits.append({"ts": candle.ts, "price": exit_price, "side": position["side"]})
+    return account_equity + pnl, pnl > 0.0
+
+
 def run_range_momentum_segment(
 def run_range_momentum_segment(
     *,
     *,
     candles: list[Candle],
     candles: list[Candle],
@@ -244,7 +279,7 @@ def run_range_momentum_segment(
             pending_entry_side = None
             pending_entry_side = None
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]):
+        if position is not None:
             stop_hit = (
             stop_hit = (
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
             ) or (
             ) or (
@@ -585,7 +620,7 @@ def run_rsi2_long_guarded_segment(
             pending_entry = False
             pending_entry = False
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]) and candle.low <= float(position["stop_price"]):
+        if position is not None and candle.low <= float(position["stop_price"]):
             equity, won = _trade(
             equity, won = _trade(
                 trades=trades,
                 trades=trades,
                 exits=exits,
                 exits=exits,
@@ -640,6 +675,274 @@ def run_rsi2_long_guarded_segment(
     )
     )
 
 
 
 
+def run_rsi2_long_guarded_twap_segment(
+    *,
+    candles: list[Candle],
+    leverage: int,
+    warmup_bars: int,
+    trend_sma: int,
+    rsi_threshold: float,
+    exit_rsi: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+    entry_slices: int,
+) -> SegmentResult:
+    closes = pd.Series([candle.close for candle in candles], dtype=float)
+    trend = closes.rolling(trend_sma).mean().tolist()
+    rsi_values = _compute_rsi(closes, 2)
+
+    equity = INITIAL_EQUITY
+    ending_equity = equity
+    peak_equity = equity
+    max_drawdown = 0.0
+    wins = 0
+    trades: list[dict[str, object]] = []
+    entries: list[dict[str, object]] = []
+    exits: list[dict[str, object]] = []
+    equity_curve: list[dict[str, float | int]] = []
+    position: dict[str, object] | None = None
+    pending_entry_slices = 0
+    pending_exit = False
+
+    for index in range(warmup_bars, len(candles)):
+        candle = candles[index]
+        if pending_exit and position is not None:
+            equity, won = _close_partial_trade(
+                trades=trades,
+                exits=exits,
+                position=position,
+                account_equity=equity,
+                candle=candle,
+                exit_price=candle.open,
+                leverage=leverage,
+            )
+            wins += 1 if won else 0
+            position = None
+            pending_exit = False
+            pending_entry_slices = 0
+
+        if pending_entry_slices and equity > 0.0:
+            slice_margin = equity / entry_slices
+            if position is None:
+                position = {
+                    "side": "long",
+                    "entry_time": candle.ts,
+                    "entry_price": candle.open,
+                    "entry_index": index,
+                    "margin_used": slice_margin,
+                    "stop_price": candle.open * (1 - stop_loss_pct),
+                }
+            else:
+                old_margin = float(position["margin_used"])
+                new_margin = old_margin + slice_margin
+                entry_price = (float(position["entry_price"]) * old_margin + candle.open * slice_margin) / new_margin
+                position["entry_price"] = entry_price
+                position["margin_used"] = new_margin
+                position["stop_price"] = entry_price * (1 - stop_loss_pct)
+            entries.append({"ts": candle.ts, "price": candle.open, "side": "long"})
+            pending_entry_slices -= 1
+
+        current_equity = equity
+        if position is not None and candle.low <= float(position["stop_price"]):
+            equity, won = _close_partial_trade(
+                trades=trades,
+                exits=exits,
+                position=position,
+                account_equity=equity,
+                candle=candle,
+                exit_price=float(position["stop_price"]),
+                leverage=leverage,
+            )
+            wins += 1 if won else 0
+            current_equity = equity
+            position = None
+            pending_entry_slices = 0
+
+        if position is not None:
+            position_equity = mark_to_market(
+                side="long",
+                margin_used=float(position["margin_used"]),
+                entry_price=float(position["entry_price"]),
+                mark_price=candle.close,
+                leverage=leverage,
+            )
+            current_equity = equity - float(position["margin_used"]) + position_equity
+        peak_equity = max(peak_equity, current_equity)
+        max_drawdown = max(max_drawdown, (peak_equity - current_equity) / peak_equity)
+        equity_curve.append({"ts": candle.ts, "equity": current_equity, "close": candle.close})
+        ending_equity = current_equity
+        if index == len(candles) - 1 or equity <= 0.0:
+            continue
+
+        current_rsi = rsi_values[index]
+        current_trend = trend[index]
+        if current_rsi != current_rsi or current_trend != current_trend:
+            continue
+        if position is not None:
+            held_bars = index - int(position["entry_index"])
+            if current_rsi >= exit_rsi or held_bars >= max_hold_bars:
+                pending_exit = True
+                pending_entry_slices = 0
+            continue
+        if pending_entry_slices == 0 and candle.close > float(current_trend) and current_rsi <= rsi_threshold:
+            pending_entry_slices = entry_slices
+
+    trade_count = len(trades)
+    return SegmentResult(
+        trade_count=trade_count,
+        total_return=(ending_equity - INITIAL_EQUITY) / INITIAL_EQUITY,
+        win_rate=(wins / trade_count) if trade_count else 0.0,
+        max_drawdown=max_drawdown,
+        trades=trades,
+        open_position=position,
+        candles=candles[warmup_bars:],
+        equity_curve=equity_curve,
+        entries=entries,
+        exits=exits,
+    )
+
+
+def run_rsi2_long_guarded_price_twap_segment(
+    *,
+    candles: list[Candle],
+    leverage: int,
+    warmup_bars: int,
+    trend_sma: int,
+    rsi_threshold: float,
+    exit_rsi: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+    entry_offsets: tuple[float, ...],
+    entry_valid_bars: int,
+    fill_buffer: float,
+) -> SegmentResult:
+    closes = pd.Series([candle.close for candle in candles], dtype=float)
+    trend = closes.rolling(trend_sma).mean().tolist()
+    rsi_values = _compute_rsi(closes, 2)
+
+    equity = INITIAL_EQUITY
+    ending_equity = equity
+    peak_equity = equity
+    max_drawdown = 0.0
+    wins = 0
+    trades: list[dict[str, object]] = []
+    entries: list[dict[str, object]] = []
+    exits: list[dict[str, object]] = []
+    equity_curve: list[dict[str, float | int]] = []
+    position: dict[str, object] | None = None
+    pending_limits: list[dict[str, float | int]] = []
+    pending_exit = False
+
+    for index in range(warmup_bars, len(candles)):
+        candle = candles[index]
+        if pending_exit and position is not None:
+            equity, won = _trade(
+                trades=trades,
+                exits=exits,
+                position=position,
+                candle=candle,
+                exit_price=candle.open,
+                leverage=leverage,
+            )
+            wins += 1 if won else 0
+            position = None
+            pending_exit = False
+            pending_limits = []
+
+        active_limits: list[dict[str, float | int]] = []
+        for limit in pending_limits:
+            if index > int(limit["expires_index"]):
+                continue
+            limit_price = float(limit["price"])
+            if candle.low <= limit_price * (1.0 - fill_buffer) and equity > 0.0:
+                slice_margin = equity / len(entry_offsets)
+                if position is None:
+                    position = {
+                        "side": "long",
+                        "entry_time": candle.ts,
+                        "entry_price": limit_price,
+                        "entry_index": index,
+                        "margin_used": slice_margin,
+                        "stop_price": limit_price * (1 - stop_loss_pct),
+                    }
+                else:
+                    old_margin = float(position["margin_used"])
+                    new_margin = old_margin + slice_margin
+                    entry_price = (float(position["entry_price"]) * old_margin + limit_price * slice_margin) / new_margin
+                    position["entry_price"] = entry_price
+                    position["margin_used"] = new_margin
+                    position["stop_price"] = entry_price * (1 - stop_loss_pct)
+                entries.append({"ts": candle.ts, "price": limit_price, "side": "long"})
+            else:
+                active_limits.append(limit)
+        pending_limits = active_limits
+
+        current_equity = equity
+        if position is not None and candle.low <= float(position["stop_price"]):
+            equity, won = _close_partial_trade(
+                trades=trades,
+                exits=exits,
+                position=position,
+                account_equity=equity,
+                candle=candle,
+                exit_price=float(position["stop_price"]),
+                leverage=leverage,
+            )
+            wins += 1 if won else 0
+            current_equity = equity
+            position = None
+            pending_limits = []
+
+        if position is not None:
+            position_equity = mark_to_market(
+                side="long",
+                margin_used=float(position["margin_used"]),
+                entry_price=float(position["entry_price"]),
+                mark_price=candle.close,
+                leverage=leverage,
+            )
+            current_equity = equity - float(position["margin_used"]) + position_equity
+        peak_equity = max(peak_equity, current_equity)
+        max_drawdown = max(max_drawdown, (peak_equity - current_equity) / peak_equity)
+        equity_curve.append({"ts": candle.ts, "equity": current_equity, "close": candle.close})
+        ending_equity = current_equity
+        if index == len(candles) - 1 or equity <= 0.0:
+            continue
+
+        current_rsi = rsi_values[index]
+        current_trend = trend[index]
+        if current_rsi != current_rsi or current_trend != current_trend:
+            continue
+        if position is not None:
+            held_bars = index - int(position["entry_index"])
+            if current_rsi >= exit_rsi or held_bars >= max_hold_bars:
+                pending_exit = True
+                pending_limits = []
+            continue
+        if not pending_limits and candle.close > float(current_trend) and current_rsi <= rsi_threshold:
+            pending_limits = [
+                {
+                    "price": candle.close * (1.0 - offset),
+                    "expires_index": index + entry_valid_bars,
+                }
+                for offset in entry_offsets
+            ]
+
+    trade_count = len(trades)
+    return SegmentResult(
+        trade_count=trade_count,
+        total_return=(ending_equity - INITIAL_EQUITY) / INITIAL_EQUITY,
+        win_rate=(wins / trade_count) if trade_count else 0.0,
+        max_drawdown=max_drawdown,
+        trades=trades,
+        open_position=position,
+        candles=candles[warmup_bars:],
+        equity_curve=equity_curve,
+        entries=entries,
+        exits=exits,
+    )
+
+
 def run_ma_cross_segment(
 def run_ma_cross_segment(
     *,
     *,
     candles: list[Candle],
     candles: list[Candle],
@@ -799,7 +1102,7 @@ def run_trend_rsi_bb_long_segment(
             pending_entry = False
             pending_entry = False
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]) and candle.low <= float(position["stop_price"]):
+        if position is not None and candle.low <= float(position["stop_price"]):
             equity, won = _trade(
             equity, won = _trade(
                 trades=trades,
                 trades=trades,
                 exits=exits,
                 exits=exits,
@@ -931,7 +1234,7 @@ def run_regime_hybrid_segment(
             pending_entry = None
             pending_entry = None
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]):
+        if position is not None:
             stop_hit = (
             stop_hit = (
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
                 position["side"] == "long" and candle.low <= float(position["stop_price"])
             ) or (
             ) or (
@@ -1313,7 +1616,7 @@ def run_eth_btc_ratio_pullback_segment(
             pending_entry = False
             pending_entry = False
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]) and candle.low <= float(position["stop_price"]):
+        if position is not None and candle.low <= float(position["stop_price"]):
             equity, won = _trade(
             equity, won = _trade(
                 trades=trades,
                 trades=trades,
                 exits=exits,
                 exits=exits,
@@ -1434,7 +1737,7 @@ def run_btc_lead_eth_lag_segment(
             pending_entry = False
             pending_entry = False
 
 
         current_equity = equity
         current_equity = equity
-        if position is not None and index > int(position["entry_index"]):
+        if position is not None:
             if candle.low <= float(position["stop_price"]):
             if candle.low <= float(position["stop_price"]):
                 equity, won = _trade(
                 equity, won = _trade(
                     trades=trades,
                     trades=trades,
@@ -1714,7 +2017,7 @@ def cost_adjusted_trade_equity_frame(result: SegmentResult, roundtrip_cost_on_ma
     rows = [{"ts": pd.to_datetime(result.equity_curve[0]["ts"], unit="ms", utc=True), "equity": INITIAL_EQUITY}]
     rows = [{"ts": pd.to_datetime(result.equity_curve[0]["ts"], unit="ms", utc=True), "equity": INITIAL_EQUITY}]
     equity = INITIAL_EQUITY
     equity = INITIAL_EQUITY
     for trade in result.trades:
     for trade in result.trades:
-        equity *= 1.0 + float(trade["return_pct"]) / 100.0 - roundtrip_cost_on_margin
+        equity *= 1.0 + float(trade["return_pct"]) / 100.0 - roundtrip_cost_on_margin * float(trade.get("cost_weight", 1.0))
         rows.append({"ts": pd.to_datetime(str(trade["exit_time"]), utc=True), "equity": equity})
         rows.append({"ts": pd.to_datetime(str(trade["exit_time"]), utc=True), "equity": equity})
     return pd.DataFrame(rows)
     return pd.DataFrame(rows)
 
 
@@ -1849,6 +2152,62 @@ def build_rsi2_long_guarded_candidate(
     )
     )
 
 
 
 
+def build_rsi2_long_guarded_twap_candidate(
+    trend: int,
+    rsi_threshold: float,
+    exit_rsi: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+    entry_slices: int,
+) -> Candidate:
+    return Candidate(
+        f"rsi2-long-guarded-twap{entry_slices}-t{trend}-l{rsi_threshold}-x{exit_rsi}-sl{stop_loss_pct}-mh{max_hold_bars}",
+        max(trend, 3),
+        lambda candles, leverage, warmup_bars, trend=trend, rsi_threshold=rsi_threshold, exit_rsi=exit_rsi, stop_loss_pct=stop_loss_pct, max_hold_bars=max_hold_bars, entry_slices=entry_slices: run_rsi2_long_guarded_twap_segment(
+            candles=candles,
+            leverage=leverage,
+            warmup_bars=warmup_bars,
+            trend_sma=trend,
+            rsi_threshold=rsi_threshold,
+            exit_rsi=exit_rsi,
+            stop_loss_pct=stop_loss_pct,
+            max_hold_bars=max_hold_bars,
+            entry_slices=entry_slices,
+        ),
+    )
+
+
+def build_rsi2_long_guarded_price_twap_candidate(
+    trend: int,
+    rsi_threshold: float,
+    exit_rsi: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+    entry_offsets: tuple[float, ...],
+    entry_valid_bars: int,
+    fill_buffer: float = 0.0,
+) -> Candidate:
+    offset_label = "-".join(f"{offset:.4f}" for offset in entry_offsets)
+    buffer_label = f"-fb{fill_buffer:.4f}" if fill_buffer else ""
+    return Candidate(
+        f"rsi2-long-guarded-price-twap-o{offset_label}-v{entry_valid_bars}{buffer_label}-t{trend}-l{rsi_threshold}-x{exit_rsi}-sl{stop_loss_pct}-mh{max_hold_bars}",
+        max(trend, 3),
+        lambda candles, leverage, warmup_bars, trend=trend, rsi_threshold=rsi_threshold, exit_rsi=exit_rsi, stop_loss_pct=stop_loss_pct, max_hold_bars=max_hold_bars, entry_offsets=entry_offsets, entry_valid_bars=entry_valid_bars, fill_buffer=fill_buffer: run_rsi2_long_guarded_price_twap_segment(
+            candles=candles,
+            leverage=leverage,
+            warmup_bars=warmup_bars,
+            trend_sma=trend,
+            rsi_threshold=rsi_threshold,
+            exit_rsi=exit_rsi,
+            stop_loss_pct=stop_loss_pct,
+            max_hold_bars=max_hold_bars,
+            entry_offsets=entry_offsets,
+            entry_valid_bars=entry_valid_bars,
+            fill_buffer=fill_buffer,
+        ),
+    )
+
+
 def build_ma_cross_candidate(fast: int, slow: int, side_mode: str) -> Candidate:
 def build_ma_cross_candidate(fast: int, slow: int, side_mode: str) -> Candidate:
     return Candidate(
     return Candidate(
         f"ma-cross-{side_mode}-f{fast}-s{slow}",
         f"ma-cross-{side_mode}-f{fast}-s{slow}",

+ 39 - 3
scripts/generate_ultrashort_report.py

@@ -8,7 +8,12 @@ from pathlib import Path
 
 
 import pandas as pd
 import pandas as pd
 
 
-ROUNDTRIP_COST_ON_MARGIN = 0.0012
+ROUNDTRIP_COST_ON_MARGIN = 0.0021
+COST_SCENARIOS = (
+    ("maker_maker", 0.0012),
+    ("maker_taker", 0.0021),
+    ("taker_taker", 0.0030),
+)
 REPORT_FILE = Path("ultrashort-recent-report.html")
 REPORT_FILE = Path("ultrashort-recent-report.html")
 REPORT_DIR = Path("reports/ultrashort")
 REPORT_DIR = Path("reports/ultrashort")
 HORIZONS = (
 HORIZONS = (
@@ -218,15 +223,28 @@ def main() -> int:
     explore = load_explore_module()
     explore = load_explore_module()
     specs = [
     specs = [
         StrategySpec("BTC RSI2 Guarded 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_candidate(240, 2.0, 55.0, 0.008, 48)),
         StrategySpec("BTC RSI2 Guarded 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_candidate(240, 2.0, 55.0, 0.008, 48)),
+        StrategySpec("BTC RSI2 TWAP2 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_twap_candidate(240, 2.0, 55.0, 0.008, 48, 2)),
+        StrategySpec("BTC RSI2 TWAP3 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_twap_candidate(240, 2.0, 55.0, 0.008, 48, 3)),
+        StrategySpec("BTC RSI2 Price TWAP shallow 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.0005, 0.0015, 0.003), 2)),
+        StrategySpec("BTC RSI2 Price TWAP mid 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.001, 0.003, 0.005), 2)),
+        StrategySpec("BTC RSI2 Price TWAP deep 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.002, 0.005, 0.008), 3)),
+        StrategySpec("BTC RSI2 Price TWAP 2slice 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.001, 0.004), 2)),
+        StrategySpec("BTC RSI2 Price TWAP mid fb2 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.001, 0.003, 0.005), 2, 0.0002)),
+        StrategySpec("BTC RSI2 Price TWAP mid fb5 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.001, 0.003, 0.005), 2, 0.0005)),
+        StrategySpec("BTC RSI2 Price TWAP deep fb2 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.002, 0.005, 0.008), 3, 0.0002)),
+        StrategySpec("BTC RSI2 Price TWAP deep fb5 15m", "BTC-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(240, 2.0, 55.0, 0.008, 48, (0.002, 0.005, 0.008), 3, 0.0005)),
         StrategySpec("BTC Trend RSI-BB 15m", "BTC-USDT-SWAP", "15m", explore.build_trend_rsi_bb_long_candidate(240, 20, 2.5, 5.0, 55.0, 0.008)),
         StrategySpec("BTC Trend RSI-BB 15m", "BTC-USDT-SWAP", "15m", explore.build_trend_rsi_bb_long_candidate(240, 20, 2.5, 5.0, 55.0, 0.008)),
         StrategySpec("ETH RSI2 15m", "ETH-USDT-SWAP", "15m", explore.build_rsi2_side_candidate(50, 3.0, 97.0, 55.0, "long")),
         StrategySpec("ETH RSI2 15m", "ETH-USDT-SWAP", "15m", explore.build_rsi2_side_candidate(50, 3.0, 97.0, 55.0, "long")),
+        StrategySpec("ETH RSI2 Price TWAP mid 15m", "ETH-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(50, 3.0, 55.0, 0.008, 48, (0.001, 0.003, 0.005), 2)),
+        StrategySpec("ETH RSI2 Price TWAP deep 15m", "ETH-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(50, 3.0, 55.0, 0.008, 48, (0.002, 0.005, 0.008), 3)),
+        StrategySpec("ETH RSI2 Price TWAP mid fb2 15m", "ETH-USDT-SWAP", "15m", explore.build_rsi2_long_guarded_price_twap_candidate(50, 3.0, 55.0, 0.008, 48, (0.001, 0.003, 0.005), 2, 0.0002)),
         StrategySpec("ETH Trend RSI-BB 15m", "ETH-USDT-SWAP", "15m", explore.build_trend_rsi_bb_long_candidate(480, 20, 2.0, 5.0, 45.0, 0.005)),
         StrategySpec("ETH Trend RSI-BB 15m", "ETH-USDT-SWAP", "15m", explore.build_trend_rsi_bb_long_candidate(480, 20, 2.0, 5.0, 45.0, 0.005)),
         StrategySpec("ETH/BTC RSI Filter 15m", "ETH-USDT-SWAP", "15m", explore.build_eth_btc_rsi_filter_candidate(50, 3.0, 55.0, 480, 240, 0.0), True),
         StrategySpec("ETH/BTC RSI Filter 15m", "ETH-USDT-SWAP", "15m", explore.build_eth_btc_rsi_filter_candidate(50, 3.0, 55.0, 480, 240, 0.0), True),
         StrategySpec("BTC Lead ETH Lag 15m", "ETH-USDT-SWAP", "15m", explore.build_btc_lead_eth_lag_candidate(16, 0.024, 0.006, 32, 0.008, 0.018), True),
         StrategySpec("BTC Lead ETH Lag 15m", "ETH-USDT-SWAP", "15m", explore.build_btc_lead_eth_lag_candidate(16, 0.024, 0.006, 32, 0.008, 0.018), True),
         StrategySpec("BTC Lead ETH Lag 5m", "ETH-USDT-SWAP", "5m", explore.build_btc_lead_eth_lag_candidate(16, 0.018, 0.006, 32, 0.006, 0.018), True),
         StrategySpec("BTC Lead ETH Lag 5m", "ETH-USDT-SWAP", "5m", explore.build_btc_lead_eth_lag_candidate(16, 0.018, 0.006, 32, 0.006, 0.018), True),
         StrategySpec("BTC Lead ETH Lag 3m", "ETH-USDT-SWAP", "3m", explore.build_btc_lead_eth_lag_candidate(8, 0.012, 0.006, 32, 0.006, 0.012), True),
         StrategySpec("BTC Lead ETH Lag 3m", "ETH-USDT-SWAP", "3m", explore.build_btc_lead_eth_lag_candidate(8, 0.012, 0.006, 32, 0.006, 0.012), True),
     ]
     ]
-    colors = ["#2563eb", "#dc2626", "#059669", "#7c3aed", "#ea580c", "#0891b2", "#be123c", "#4b5563"]
+    colors = ["#2563eb", "#16a34a", "#0f766e", "#65a30d", "#84cc16", "#ca8a04", "#f97316", "#a3e635", "#bef264", "#facc15", "#fde047", "#dc2626", "#059669", "#22c55e", "#10b981", "#14b8a6", "#7c3aed", "#ea580c", "#0891b2", "#be123c", "#4b5563"]
     result_rows: list[dict[str, object]] = []
     result_rows: list[dict[str, object]] = []
     monthly_rows: list[dict[str, object]] = []
     monthly_rows: list[dict[str, object]] = []
     monthly_raw_rows: list[dict[str, object]] = []
     monthly_raw_rows: list[dict[str, object]] = []
@@ -234,6 +252,7 @@ def main() -> int:
     recent_equities: dict[str, pd.DataFrame] = {}
     recent_equities: dict[str, pd.DataFrame] = {}
     yearly_rows: list[dict[str, object]] = []
     yearly_rows: list[dict[str, object]] = []
     strategy_horizon_rows: list[dict[str, object]] = []
     strategy_horizon_rows: list[dict[str, object]] = []
+    cost_scenario_rows: list[dict[str, object]] = []
 
 
     for index, spec in enumerate(specs):
     for index, spec in enumerate(specs):
         requested_bars = explore.history_bars_for_years(spec.bar, 10.0)
         requested_bars = explore.history_bars_for_years(spec.bar, 10.0)
@@ -245,6 +264,19 @@ def main() -> int:
         else:
         else:
             result = spec.candidate.run(candles=candles, leverage=explore.LEVERAGE, warmup_bars=spec.candidate.warmup_bars)
             result = spec.candidate.run(candles=candles, leverage=explore.LEVERAGE, warmup_bars=spec.candidate.warmup_bars)
 
 
+        for cost_name, cost_value in COST_SCENARIOS:
+            scenario_equity = explore.cost_adjusted_trade_equity_frame(result, cost_value)
+            scenario_metrics = explore.annualized_metrics_from_equity(scenario_equity, int(scenario_equity["ts"].iloc[0].timestamp() * 1000), candles[-1].ts)
+            cost_scenario_rows.append(
+                {
+                    "strategy": spec.label,
+                    "cost": cost_name,
+                    "return": pct(scenario_metrics["net_total_return"]),
+                    "annualized": pct(scenario_metrics["net_annualized_return"]),
+                    "max_dd": pct(scenario_metrics["net_max_drawdown"]),
+                    "calmar": f"{scenario_metrics['net_calmar']:.2f}",
+                }
+            )
         equity = explore.cost_adjusted_trade_equity_frame(result, ROUNDTRIP_COST_ON_MARGIN)
         equity = explore.cost_adjusted_trade_equity_frame(result, ROUNDTRIP_COST_ON_MARGIN)
         strategy_horizon_rows.extend(horizon_rows(explore, spec.label, "strategy", equity))
         strategy_horizon_rows.extend(horizon_rows(explore, spec.label, "strategy", equity))
         cutoff = pd.to_datetime(candles[-1].ts, unit="ms", utc=True) - pd.DateOffset(years=3)
         cutoff = pd.to_datetime(candles[-1].ts, unit="ms", utc=True) - pd.DateOffset(years=3)
@@ -419,6 +451,7 @@ def main() -> int:
     portfolio_summary = pd.DataFrame(portfolio_rows)
     portfolio_summary = pd.DataFrame(portfolio_rows)
     portfolio_monthly = pd.DataFrame(portfolio_monthly_rows)
     portfolio_monthly = pd.DataFrame(portfolio_monthly_rows)
     strategy_horizon = pd.DataFrame(strategy_horizon_rows)
     strategy_horizon = pd.DataFrame(strategy_horizon_rows)
+    cost_scenarios = pd.DataFrame(cost_scenario_rows)
     portfolio_horizon = pd.DataFrame(portfolio_horizon_rows)
     portfolio_horizon = pd.DataFrame(portfolio_horizon_rows)
     overlay_summary = (
     overlay_summary = (
         pd.DataFrame(overlay_rows)
         pd.DataFrame(overlay_rows)
@@ -442,6 +475,7 @@ def main() -> int:
     portfolio_summary.to_csv(REPORT_DIR / "ultrashort-portfolio-summary.csv", index=False)
     portfolio_summary.to_csv(REPORT_DIR / "ultrashort-portfolio-summary.csv", index=False)
     portfolio_monthly.to_csv(REPORT_DIR / "ultrashort-portfolio-monthly.csv", index=False)
     portfolio_monthly.to_csv(REPORT_DIR / "ultrashort-portfolio-monthly.csv", index=False)
     strategy_horizon.to_csv(REPORT_DIR / "ultrashort-strategy-horizons.csv", index=False)
     strategy_horizon.to_csv(REPORT_DIR / "ultrashort-strategy-horizons.csv", index=False)
+    cost_scenarios.to_csv(REPORT_DIR / "ultrashort-cost-scenarios.csv", index=False)
     portfolio_horizon.to_csv(REPORT_DIR / "ultrashort-portfolio-horizons.csv", index=False)
     portfolio_horizon.to_csv(REPORT_DIR / "ultrashort-portfolio-horizons.csv", index=False)
     overlay_summary.to_csv(REPORT_DIR / "ultrashort-overlay-summary.csv", index=False)
     overlay_summary.to_csv(REPORT_DIR / "ultrashort-overlay-summary.csv", index=False)
     overlay_horizon.to_csv(REPORT_DIR / "ultrashort-overlay-horizons.csv", index=False)
     overlay_horizon.to_csv(REPORT_DIR / "ultrashort-overlay-horizons.csv", index=False)
@@ -472,12 +506,14 @@ def main() -> int:
 <body>
 <body>
 <main>
 <main>
   <h1>近 3 年超短线策略报告</h1>
   <h1>近 3 年超短线策略报告</h1>
-  <div class="meta">数据截至 {escape(str(pd.Timestamp.now("UTC").strftime("%Y-%m-%d %H:%M UTC")))},成本按每次完整交易扣除保证金 0.12%。曲线以近 3 年起点统一归一为 10,000。</div>
+  <div class="meta">数据截至 {escape(str(pd.Timestamp.now("UTC").strftime("%Y-%m-%d %H:%M UTC")))},主结果成本按 maker+taker,每次完整交易扣除保证金 0.21%。曲线以近 3 年起点统一归一为 10,000。</div>
   <section class="panel">{make_svg(curves)}</section>
   <section class="panel">{make_svg(curves)}</section>
   <h2>近 3 年汇总</h2>
   <h2>近 3 年汇总</h2>
   <section class="panel">{render_table(summary, ["strategy", "bar", "trades", "3y_return", "3y_annualized", "3y_max_dd", "3y_calmar"])}</section>
   <section class="panel">{render_table(summary, ["strategy", "bar", "trades", "3y_return", "3y_annualized", "3y_max_dd", "3y_calmar"])}</section>
   <h2>单策略分周期表现</h2>
   <h2>单策略分周期表现</h2>
   <section class="panel">{render_table(strategy_horizon, ["strategy", "horizon", "return", "annualized", "max_dd", "calmar"])}</section>
   <section class="panel">{render_table(strategy_horizon, ["strategy", "horizon", "return", "annualized", "max_dd", "calmar"])}</section>
+  <h2>手续费三档敏感性</h2>
+  <section class="panel">{render_table(cost_scenarios, ["strategy", "cost", "return", "annualized", "max_dd", "calmar"])}</section>
   <h2>组合曲线</h2>
   <h2>组合曲线</h2>
   <section class="panel">{make_svg(portfolio_curves)}</section>
   <section class="panel">{make_svg(portfolio_curves)}</section>
   <h2>组合近 3 年汇总</h2>
   <h2>组合近 3 年汇总</h2>

+ 3 - 3
tests/test_bbmr_report.py

@@ -38,10 +38,10 @@ def test_run_bbmr_segment_can_enter_on_final_bar_from_prior_signal():
     result = run_bbmr_segment(candles=candles, leverage=2, warmup_bars=2, config=config)
     result = run_bbmr_segment(candles=candles, leverage=2, warmup_bars=2, config=config)
 
 
     assert isinstance(result, SegmentResult)
     assert isinstance(result, SegmentResult)
-    assert result.trade_count == 0
-    assert result.trades == []
+    assert result.trade_count == 1
+    assert result.trades[0]["exit_price"] == pytest.approx(95.52)
     assert result.entries == [{"ts": 180_000, "price": 96.0, "side": "long"}]
     assert result.entries == [{"ts": 180_000, "price": 96.0, "side": "long"}]
-    assert result.open_position is not None
+    assert result.open_position is None
 
 
 
 
 def test_run_bbmr_segment_stop_loss_takes_precedence_and_no_reverse_entry():
 def test_run_bbmr_segment_stop_loss_takes_precedence_and_no_reverse_entry():

+ 3 - 3
tests/test_bbsb_report.py

@@ -148,11 +148,11 @@ def test_run_bbsb_segment_marks_open_position_to_market_but_keeps_journal_realiz
     assert result.open_position is not None
     assert result.open_position is not None
 
 
 
 
-def test_run_bbsb_segment_does_not_allow_tp_or_sl_on_entry_candle():
+def test_run_bbsb_segment_allows_tp_or_sl_on_entry_candle():
     result = run_bbsb_segment(candles=build_entry_bar_tp_sl_fixture(), leverage=2, warmup_bars=bbsb_report.WARMUP_BARS)
     result = run_bbsb_segment(candles=build_entry_bar_tp_sl_fixture(), leverage=2, warmup_bars=bbsb_report.WARMUP_BARS)
 
 
-    assert result.trade_count == 0
-    assert result.open_position is not None
+    assert result.trade_count == 1
+    assert result.open_position is None
 
 
 
 
 def test_run_bbsb_segment_exit_exhausts_bar_without_same_bar_reentry():
 def test_run_bbsb_segment_exit_exhausts_bar_without_same_bar_reentry():

+ 27 - 0
tests/test_explore_ultrashort.py

@@ -306,6 +306,33 @@ def test_build_rsi2_long_guarded_candidate_names_and_warmup():
     assert candidate.warmup_bars == 240
     assert candidate.warmup_bars == 240
 
 
 
 
+def test_build_rsi2_long_guarded_twap_candidate_names_and_warmup():
+    module = load_explore_module()
+
+    candidate = module.build_rsi2_long_guarded_twap_candidate(240, 2.0, 55.0, 0.008, 96, 3)
+
+    assert candidate.name == "rsi2-long-guarded-twap3-t240-l2.0-x55.0-sl0.008-mh96"
+    assert candidate.warmup_bars == 240
+
+
+def test_build_rsi2_long_guarded_price_twap_candidate_names_and_warmup():
+    module = load_explore_module()
+
+    candidate = module.build_rsi2_long_guarded_price_twap_candidate(
+        240,
+        2.0,
+        55.0,
+        0.008,
+        96,
+        (0.001, 0.003, 0.005),
+        2,
+        0.0002,
+    )
+
+    assert candidate.name == "rsi2-long-guarded-price-twap-o0.0010-0.0030-0.0050-v2-fb0.0002-t240-l2.0-x55.0-sl0.008-mh96"
+    assert candidate.warmup_bars == 240
+
+
 def test_build_trend_rsi_bb_long_candidate_names_and_warmup():
 def test_build_trend_rsi_bb_long_candidate_names_and_warmup():
     module = load_explore_module()
     module = load_explore_module()
 
 

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff