Przeglądaj źródła

research: add executable bidirectional search

lxy 1 miesiąc temu
rodzic
commit
0d3cf7ca7b

+ 231 - 0
reports/ultrashort/executable-bidir-horizons.csv

@@ -0,0 +1,231 @@
+family,symbol,bar,name,first_candle,last_candle,years,directly_liveable,needs_synthetic_bookkeeping,supports_short,long_entries,short_entries,order_intent,params_json,horizon,horizon_start,horizon_end,net_total_return,net_annualized_return,net_max_drawdown,net_calmar,win_rate,payoff_ratio,profit_factor,risk_reward_ratio,trades,trades_per_month,worst_month,worst_month_return
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,0.5307837585122177,0.06935231554835952,0.33904304936044405,0.20455312586169425,0.5327868852459017,1.012518952741183,1.154626875932928,1.565534994784482,244,3.202157303370786,2022-11,-0.12234878289923146
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,0.19046805249684806,0.027731040643869775,0.27052815261333985,0.10250704178468688,0.5809128630705395,0.7855668050547545,1.0889044822541154,0.7040600050564054,241,3.150905126287841,2024-01,-0.1378237075608011
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-0.12607703313859508,-0.020921231925947303,0.3459093706237499,-0.06048183051017603,0.4880546075085324,1.0235813142830186,0.9758141862831443,-0.3644799587569737,293,3.830768473038744,2024-01,-0.12876451748306117
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",full,2019-12-25 00:00,2026-04-29 17:00,-0.5443478551734786,-0.1164309052061161,0.994124029246173,-0.11711909357467562,0.2388751545117429,3.5514682500004384,1.1146102140683471,-0.5475653330563272,3236,42.46795505617977,2021-01,-0.6885474755689496
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-0.3400096016156269,-0.06334379125039735,0.5368632068782602,-0.11798869886935887,0.4426229508196721,1.1322888182235562,0.8991705321187065,-0.6333263245822095,305,4.0026966292134825,2023-02,-0.10235315571160597
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",full,2019-12-16 06:00,2026-04-29 16:45,-0.881902159384352,-0.28477512515829706,0.9860841118090515,-0.28879394946933473,0.24533974744437764,3.2886346302331835,1.069133808075808,-0.8943478034205731,3326,43.48510560179817,2022-01,-0.5610117828271657
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9600824831133907,-0.3966985239074312,0.9634003826612205,-0.4117691159843873,0.544392523364486,0.7041742996742577,0.8413980093543695,-0.9965560533216058,1284,16.787394946695386,2025-12,-0.19072871016726123
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9727337073756209,-0.43171922261159335,0.9745262373680516,-0.44300420661588097,0.4621212121212121,0.9367097109219714,0.8047787657216938,-0.998160613923262,1584,20.709683485642906,2020-05,-0.21534435469933366
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9894634747305636,-0.5117883170864241,0.9900404060207642,-0.5169367977044872,0.4764749813293503,0.9021549757423155,0.8210768538139762,-0.9994172649048544,1339,17.57249438202247,2022-08,-0.334308570397455
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9937311588381679,-0.5501226581046461,0.9937970963459449,-0.5535563145911488,0.4151480637813212,1.0887947936092808,0.7728640745288858,-0.9999336509353675,1756,23.045033707865166,2022-08,-0.37972154382401724
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999624333387679,-0.7990416800708078,0.999964842594045,-0.7990697732912138,0.25167410714285715,2.9389956401513535,0.9884317924744671,-0.9999975906600168,5376,70.55244943820225,2025-11,-0.5522329325712911
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999831696216224,-0.8217561683212675,0.9999905486939551,-0.8217639350637145,0.25905992106207393,2.711937924886784,0.9481933083623525,-0.9999926208579247,5574,72.87612105364492,2022-01,-0.6330994016653446
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999998456470421,-0.9154125552308765,0.9999999131297375,-0.9154126347530124,0.26351658337119493,2.6953995143090155,0.9644242555824979,-0.9999999325172988,8804,115.54013483146066,2022-09,-0.6467650097054145
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999999986109543,-0.9592275188214064,0.9999999989462685,-0.9592275198321747,0.2631232876712329,2.488091668227145,0.8884455823041902,-0.9999999996646859,9125,119.30294305965373,2021-01,-0.6943508554922505
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999999999999462,-0.9917161928916075,0.9999999999999541,-0.991716192891653,0.27366035723806986,2.0074096552503207,0.7563244672837051,-0.999999999999992,7502,98.08336206394765,2021-01,-0.7367179353337692
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-0.9999999999999736,-0.9925915963258162,0.9999999999999749,-0.992591596325841,0.35896406344107606,1.398751800707077,0.7832659629390083,-0.9999999999999987,9962,130.2461280833173,2021-01,-0.6657587927725409
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5251694094869312,0.6981945011707055,0.7722130823345724,-1.0,30990,406.7002247191011,2021-03,-0.7646142773662596
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5536560173807743,0.6354098400094029,0.7881779415054396,-1.0,28077,368.47119101123593,2021-03,-0.7472872685915312
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5217471095613874,0.6992235061058377,0.7628136714730993,-1.0,32694,429.0628314606741,2021-03,-0.7781393899140645
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5497036409822185,0.6376320093746091,0.7783954503309444,-1.0,29525,387.47415730337076,2021-03,-0.7409590023510295
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5259450647473163,0.6780172174410011,0.7522330911642666,-1.0,32511,426.661213483146,2021-03,-0.7785073750404788
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5573186195551595,0.6094336779515712,0.7672532686264962,-1.0,29179,382.9333932584269,2021-03,-0.7634768722429255
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5233674869369764,0.6810152582131297,0.747790455934787,-1.0,34257,449.575011235955,2021-03,-0.7872707532503879
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.5543595263724435,0.6116596654313629,0.7608809847757291,-1.0,30657,402.3300674157303,2021-03,-0.7564858862760676
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.3057555934253202,1.7603310487213417,0.7752760545560301,-1.0,18191,238.7313258426966,2021-05,-0.8734680824201303
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.2929466277672902,1.8273326380505852,0.7571011682408613,-1.0,11654,152.9423820224719,2022-06,-0.8222826995621771
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.22673510377147957,2.631114463800068,0.7714898398905826,-1.0,13443,176.42049438202244,2021-05,-0.9055011061344436
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-25 00:00,2026-04-29 17:00,-1.0,-1.0,1.0,-1.0,0.2127849798837729,2.7805884434719967,0.7515957405409827,-1.0,8948,117.42993258426965,2021-05,-0.8489376796192458
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5030696125698033,0.6664835144678734,0.6747174491409251,-1.0,28831,376.94500288798645,2024-04,-0.7338178023350337
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5157562244518766,0.6429913752178401,0.6848344176692811,-1.0,26910,351.8292819435925,2024-04,-0.7123335109662512
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5003456790123457,0.6722613301925932,0.6731915198172913,-1.0,30375,397.1317145684364,2024-04,-0.7464477960005055
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5127688172043011,0.6486004374006368,0.6825960465333598,-1.0,28272,369.63647191041423,2024-04,-0.7319389969178521
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5057353136188835,0.6524949567837527,0.6676377064683177,-1.0,30164,394.37303829604326,2022-05,-0.769752670034696
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5198966593706269,0.6313160069278104,0.6836425728233965,-1.0,27869,364.36753097309474,2022-05,-0.7691949653096348
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5032906130931764,0.6579566146990428,0.6666743104307594,-1.0,31757,415.2003904378546,2022-05,-0.7936275744261018
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.5167356148928168,0.6351024539456328,0.6790900947247468,-1.0,29249,382.41005825225335,2022-05,-0.7936384699852795
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.37305260413271624,1.313519889175563,0.781583939046761,-1.0,15341,200.57276158664632,2021-01,-0.8714999656351985
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",full,2019-12-16 06:00,2026-04-29 16:45,-1.0,-1.0,1.0,-1.0,0.28562421185372006,1.915356858330902,0.7658046397386572,-1.0,11102,145.15082453131788,2021-01,-0.7824457070474309
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,0.6890622856131521,0.19072823795527305,0.16587757680602497,1.1498132636595488,0.5847457627118644,0.9806283597876341,1.3808848331703418,4.154041184354486,118,3.2747871046228707,2026-04,-0.08469754568560972
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,0.0505161993858958,0.01654765278985293,0.25032900795738294,0.06610361669579289,0.48951048951048953,1.1013130019776218,1.0560535635401853,0.2017992233424897,143,3.9685979318734788,2023-11,-0.0926558591262927
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.03337697757389413,-0.011241578760720294,0.2361337369230561,-0.04760683038012205,0.5867768595041323,0.7099256710679572,1.0080944529164992,-0.1413477718551076,121,3.3580444038929436,2024-01,-0.1378237075608011
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.20354135880975954,-0.07298989266709688,0.261129477967957,-0.27951609766574653,0.47586206896551725,0.957147056922519,0.8689887753638659,-0.7794652690828568,145,4.024102798053527,2024-01,-0.12876451748306117
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.7853455706946303,-0.4009682241977266,0.7948656595338508,-0.5044477886148391,0.4913907284768212,0.8437947143507182,0.8152287474586366,-0.9880230215948648,755,20.95308698296837,2024-01,-0.18923231405509244
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.8370060004636392,-0.45344968866229984,0.8533471602202192,-0.5313777437839956,0.43905472636815923,1.0455893597188428,0.8183881241258347,-0.9808505136967199,804,22.31295620437956,2024-09,-0.19652125683382138
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.8552451048970381,-0.47462867129155173,0.8679352917872069,-0.5468479917601015,0.5,0.8277083575752956,0.8277083575752955,-0.9853788790359731,630,17.484032846715326,2026-04,-0.2017355150586786
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9005772387568242,-0.5364105887795878,0.9718933338610589,-0.5519233130744702,0.25191815856777494,3.0502934186426565,1.0271928264488945,-0.9266214793130477,1564,43.40480535279805,2025-12,-0.5345466340479484
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.8866397703979356,-0.5157074237950012,0.8937899553510731,-0.5769895048691118,0.5575079872204473,0.5981998071229262,0.7536885656530731,-0.992000150694993,626,17.373023114355227,2025-12,-0.19072871016726123
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9756668295941634,-0.7098937749073186,0.9860841118090515,-0.7199119896627892,0.24984500929944203,2.785614156657045,0.9277706653989992,-0.9894357062545336,1613,44.76467457420924,2025-06,-0.3796383806887398
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9964644322022018,-0.8473962079041542,0.997501824008856,-0.8495184545112479,0.2665112665112665,2.466025817178289,0.8960242111145692,-0.9989600101155856,2574,71.43476277372262,2024-03,-0.5902245467765788
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.997471738908506,-0.863521616556105,0.9978123892722112,-0.8654148072724817,0.28173008744977546,2.340479489694138,0.9180163052699613,-0.9996586027921004,4231,117.42054440389293,2024-12,-0.5151721250708
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9978400244794506,-0.8704928835043116,0.9985148644962758,-0.8717876062300306,0.26687847498014294,2.562230750845835,0.9327297207846159,-0.999324156263647,2518,69.88062652068126,2025-11,-0.5522329325712911
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9988636159007531,-0.8954307713918342,0.9990775380008786,-0.8962575349092142,0.27529182879377434,2.506975328107664,0.9523141179254616,-0.9997858803826642,4112,114.11800486618003,2024-01,-0.5780057087029229
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9997995504635305,-0.9413241063030355,0.9998370780581638,-0.9414774936444952,0.39711869715001563,1.2128542274444405,0.7989086547530133,-0.9999624662903018,3193,88.61351885644768,2024-08,-0.5563608272795834
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9997995504635305,-0.9413241063030355,0.9998370780581638,-0.9414774936444952,0.39711869715001563,1.2128542274444405,0.7989086547530133,-0.9999624662903018,3193,88.61351885644768,2024-08,-0.5563608272795834
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999548362026869,-0.9642794323090721,0.9999591347716987,-0.9643188394186002,0.39294436906377206,1.2314067078583808,0.7970840022257198,-0.999995701255319,3685,102.26771593673965,2024-08,-0.5615317550824144
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999548362026869,-0.9642794323090721,0.9999591347716987,-0.9643188394186002,0.39294436906377206,1.2314067078583808,0.7970840022257198,-0.999995701255319,3685,102.26771593673965,2024-08,-0.5615317550824144
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999783691633122,-0.972046048148526,0.9999809169851471,-0.972064598071689,0.3318639798488665,1.5640500659935757,0.776865584145725,-0.999997452129544,3176,88.14172749391726,2024-08,-0.5563565479784245
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999984292400192,-0.9883282731306554,0.9999987268289288,-0.9883295314432237,0.2597402597402597,2.276333849325146,0.7987136313421564,-0.9999997024107116,3773,104.70993004866179,2025-08,-0.734082784028703
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999991548385389,-0.9905050299415887,0.999999154838539,-0.9905058670789745,0.41133754977746545,1.0581673378000862,0.739411796727796,-0.9999999999999999,4269,118.47513686131386,2024-04,-0.5520567533730457
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999997029568326,-0.9932971678935896,0.999999759148779,-0.9932974071304829,0.40205128205128204,1.123178825592635,0.7552077180657166,-0.99999994380804,4875,135.2931113138686,2024-08,-0.616758081870902
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999997029568326,-0.9932971678935896,0.999999759148779,-0.9932974071304829,0.40205128205128204,1.123178825592635,0.7552077180657166,-0.99999994380804,4875,135.2931113138686,2024-08,-0.616758081870902
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999059171771,-0.9954293939508848,0.9999999103569795,-0.9954294831841903,0.3490415335463259,1.455079428400735,0.7802082333878787,-0.9999999955601971,5008,138.98418491484182,2025-08,-0.7418957559087636
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999167165529,-0.995611265126672,0.9999999201681236,-0.9956113446081938,0.39442867281760113,1.1969765153064662,0.77963046982897,-0.9999999965484291,5636,156.4127128953771,2024-08,-0.6359172954588543
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999167165529,-0.995611265126672,0.9999999201681236,-0.9956113446081938,0.39442867281760113,1.1969765153064662,0.77963046982897,-0.9999999965484291,5636,156.4127128953771,2024-08,-0.6359172954588543
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999312871468,-0.9958835342102957,0.9999999376489896,-0.9958835963046442,0.3440836783612988,1.4370722270883247,0.7538661284293903,-0.9999999936381567,4589,127.35591545012164,2024-08,-0.604423649298166
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999935703371,-0.9981298024004784,0.9999999935703371,-0.9981298088181166,0.4309545875810936,1.0031613726540103,0.759723189387809,-1.0,6474,179.6692518248175,2024-08,-0.7060029609931908
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999989562854,-0.9989792356622315,0.9999999991053243,-0.9989792365559939,0.2737902500449721,2.068073714346812,0.7796899165805915,-0.9999999998509611,5559,154.27577554744522,2025-08,-0.8329506977537593
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999997504356,-0.9993661573990867,0.9999999997547455,-0.9993661576441858,0.4859359844810863,0.624629223073903,0.5904513976604253,-0.9999999999956901,12372,343.353102189781,2024-04,-0.7123335109662512
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999998589169,-0.9994758113505792,0.9999999998602724,-0.9994758114902335,0.49106302916274697,0.6167487322647807,0.5950884255863503,-0.9999999999986444,12756,354.0100364963503,2024-03,-0.6539630177927938
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999998639939,-0.9994821704061264,0.9999999998663657,-0.9994821705396916,0.4829864044857516,0.6399175597473109,0.5978014582812496,-0.9999999999976282,13019,361.3089263990267,2024-04,-0.7338178023350337
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999999280396,-0.9995810944727184,0.9999999999292822,-0.9995810945434065,0.4824534400492535,0.6305854856940422,0.5878275702328551,-0.9999999999987573,12994,360.61511557177613,2024-04,-0.7319389969178521
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.999999999948944,-0.999626337752383,0.9999999999496675,-0.9996263378026967,0.5289044289044289,0.6031128656011814,0.6771217674661457,-0.9999999999992765,12870,357.1738138686131,2024-04,-0.6607588279296712
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999999592815,-0.9996534567557558,0.9999999999594035,-0.9996534567963382,0.4886464169861398,0.625891325121152,0.5980979963816315,-0.999999999999878,13564,376.43400243309,2024-04,-0.7026830659950587
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999999639397,-0.9996671981532056,0.9999999999642861,-0.9996671981889076,0.48789780367548186,0.6214853881044059,0.5921110240276988,-0.9999999999996536,13386,371.49406934306563,2024-04,-0.678603544644314
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999999666054,-0.9996756018265858,0.9999999999671821,-0.999675601859393,0.4800379534340559,0.6439594808792497,0.5945145291609806,-0.9999999999994232,13701,380.2360857664233,2024-04,-0.7464477960005055
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.999999999974793,-0.9997046093110925,0.999999999974889,-0.9997046093361961,0.5374915559558658,0.588054293845402,0.6833912363237462,-0.9999999999999041,13323,369.74566605839414,2024-04,-0.6547363725051951
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999873626,-0.9997652885054694,0.9999999999876786,-0.9997652885177879,0.5262104248535627,0.6068024034551398,0.6739400089704425,-0.9999999999996839,13487,374.2970650851581,2025-01,-0.6522186761584952
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999904576,-0.9997862511813993,0.9999999999905438,-0.9997862511908535,0.5140120102945381,0.6382847908574443,0.6750908570557552,-0.9999999999999138,13988,388.2010340632603,2024-04,-0.7092111427473501
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 16:45,2026-04-29 16:45,-0.9999999999906821,-0.9997879391334026,0.9999999999907089,-0.9997879391426917,0.48601079868171937,0.6293390600173234,0.5950817223710871,-0.9999999999999732,14261,395.77744829683695,2024-04,-0.7258798123449188
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999936812,-0.9998136689967536,0.9999999999937027,-0.9998136690030497,0.5348737083811711,0.5917616786863477,0.6804985425683486,-0.9999999999999785,13936,386.757907542579,2025-03,-0.64053558981705
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999980017,-0.9998730076004262,0.9999999999980569,-0.9998730076023691,0.5114441416893732,0.641313482037784,0.6713582854349809,-0.9999999999999448,14680,407.4057177615571,2024-04,-0.7012984136065235
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999980705,-0.9998744814746707,0.9999999999982029,-0.9998744814764676,0.35400651465798044,1.3760572205960173,0.7540837975714761,-0.9999999999998677,7675,212.99992396593672,2025-08,-0.8054025445180765
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999982964,-0.9998795782394094,0.9999999999983022,-0.999879578241107,0.5192728266812466,0.6243081888972603,0.674366451413333,-0.9999999999999941,14632,406.07360097323595,2024-04,-0.7151029414307521
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3y,2023-04-29 17:00,2026-04-29 17:00,-0.9999999999996126,-0.9999264676173649,0.9999999999996141,-0.9999264676177508,0.5167960341791142,0.6284170041182701,0.672104201353814,-0.9999999999999986,15331,425.47255170316294,2025-03,-0.7152321501051344
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,0.10135326830194602,0.10135326830194602,0.1344368396797741,0.7539099293271658,0.525,1.083161543611787,1.1971785482025015,0.7539099293271658,40,3.3333333333333335,2026-04,-0.08469754568560972
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.0066886294323020845,-0.0066886294323020845,0.11089347635785468,-0.06031580623117803,0.46808510638297873,1.1463943839410569,1.0088270578681302,-0.06031580623117803,47,3.9166666666666665,2025-08,-0.0740441464703464
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.11007960161936281,-0.11007960161936281,0.19490638046140943,-0.564781929451294,0.4666666666666667,0.878399248478684,0.7685993424188484,-0.564781929451294,45,3.75,2026-03,-0.09265585912629248
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.23624818062095787,-0.23624818062095787,0.3645375987794411,-0.6480763065647362,0.5185185185185185,0.882029376301653,0.9498777898633187,-0.6480763065647362,216,18.0,2026-04,-0.2017355150586786
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.31391248834855245,-0.31391248834855245,0.42258814714287,-0.7428331591194011,0.44912280701754387,1.1055480333650651,0.9013385240173778,-0.7428331591194011,285,23.75,2025-11,-0.17223827572316686
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.2063761843691061,-0.2063761843691061,0.2768658877164538,-0.745401270164643,0.5418502202643172,0.7633388115338653,0.9027949405640906,-0.745401270164643,227,18.916666666666668,2025-11,-0.11709241842098472
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.7635526394442514,-0.7635526394442514,0.9393547875764696,-0.8128479777211901,0.23443223443223443,3.196297004895714,0.9787703747049077,-0.8128479777211901,546,45.5,2025-12,-0.5345466340479484
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.7574206847288101,-0.7574206847288101,0.9308638656929615,-0.8136750309509163,0.2729948491537896,2.684633832876612,1.008096307689497,-0.8136750309509163,1359,113.25,2025-11,-0.40156931233376114
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.1846269560389867,-0.1846269560389867,0.21893788067237827,-0.8432846589725836,0.5526315789473685,0.5098144880024822,0.6297708381207133,-0.8432846589725836,38,3.1666666666666665,2026-03,-0.10275929478517232
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.8369666605650427,-0.8369666605650427,0.9428138309118321,-0.8877326924187986,0.25849514563106796,2.777607305499407,0.9682984551086312,-0.8877326924187986,824,68.66666666666667,2025-11,-0.5522329325712911
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.3479678691060931,-0.3479678691060931,0.37648211125191916,-0.9242613625093437,0.5959595959595959,0.560892970302571,0.8273171311962921,-0.9242613625093437,198,16.5,2025-12,-0.19072871016726123
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.8366984804255282,-0.8366984804255282,0.8708468456795393,-0.9607871746640313,0.3726899383983573,1.4857999734574383,0.882725679811866,-0.9607871746640313,974,81.16666666666667,2026-03,-0.37805218625144943
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.7981427966805527,-0.7981427966805527,0.8163717182344353,-0.9776708071253297,0.3036231884057971,2.1343411730610526,0.930581635288846,-0.9776708071253297,1380,115.0,2026-01,-0.4337105454565089
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.8567774219348021,-0.8567774219348021,0.8732610135520728,-0.9811240953604214,0.25650557620817843,2.424660445446316,0.8365078536789791,-0.9811240953604214,538,44.833333333333336,2025-06,-0.3796383806887398
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.870325144395313,-0.870325144395313,0.8847152854771599,-0.983734720855325,0.2741176470588235,2.3032472415084717,0.8697838043297794,-0.983734720855325,850,70.83333333333333,2025-06,-0.3291898917017565
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9284263905094807,-0.9284263905094807,0.9361694489838501,-0.9917289989725963,0.396871945259042,1.223739164395069,0.8052481373491055,-0.9917289989725963,1023,85.25,2025-11,-0.514523381857702
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9284263905094807,-0.9284263905094807,0.9361694489838501,-0.9917289989725963,0.396871945259042,1.223739164395069,0.8052481373491055,-0.9917289989725963,1023,85.25,2025-11,-0.514523381857702
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9663920610688338,-0.9663920610688338,0.969885140179871,-0.9963984610482954,0.3949771689497717,1.2370069622928024,0.8075554885911503,-0.9963984610482954,1314,109.5,2026-01,-0.4611277637282104
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9663920610688338,-0.9663920610688338,0.969885140179871,-0.9963984610482954,0.3949771689497717,1.2370069622928024,0.8075554885911503,-0.9963984610482954,1314,109.5,2026-01,-0.4611277637282104
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9784273572105444,-0.9784273572105444,0.9805056907352716,-0.9978803452704403,0.3714689265536723,1.372752155670134,0.8113119481825737,-0.9978803452704403,1416,118.0,2026-02,-0.5364290617064242
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9886468387199763,-0.9886468387199763,0.9897569391256932,-0.9988784110908103,0.40891472868217055,1.1094341602886661,0.7675101895767494,-0.9988784110908103,1548,129.0,2025-11,-0.5988017467288627
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9886468387199763,-0.9886468387199763,0.9897569391256932,-0.9988784110908103,0.40891472868217055,1.1094341602886661,0.7675101895767494,-0.9988784110908103,1548,129.0,2025-11,-0.5988017467288627
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.979916302846774,-0.979916302846774,0.9809299433401428,-0.9989666535309165,0.4337078651685393,0.9861042182689208,0.7552306116107211,-0.9989666535309165,1335,111.25,2025-11,-0.5383190334670975
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.99677820455782,-0.99677820455782,0.9976859612203066,-0.9990901378812864,0.22247191011235956,2.6634559493981897,0.7620871069087306,-0.9990901378812864,1335,111.25,2025-08,-0.734082784028703
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9940197395360341,-0.9940197395360341,0.9947238563575741,-0.9992921484520153,0.399701343952215,1.2140106169599687,0.8083337690040256,-0.9992921484520153,2009,167.41666666666666,2026-02,-0.6069299854968835
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9940197395360341,-0.9940197395360341,0.9947238563575741,-0.9992921484520153,0.399701343952215,1.2140106169599687,0.8083337690040256,-0.9992921484520153,2009,167.41666666666666,2026-02,-0.6069299854968835
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9986264706236648,-0.9986264706236648,0.9987920393701428,-0.9998342310111098,0.31875,1.6119445819734344,0.7542126025747262,-0.9998342310111098,1760,146.66666666666666,2025-08,-0.7418957559087636
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9969174622721323,-0.9969174622721323,0.9970443315209405,-0.9998727546561398,0.4543222003929273,0.9029969959942885,0.7518201811833635,-0.9998727546561398,2036,169.66666666666666,2025-10,-0.5695621834715443
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9998589553720524,-0.9998589553720524,0.9998851574178802,-0.9999737949447159,0.23781094527363184,2.3948640347187693,0.7472225904670834,-0.9999737949447159,2010,167.5,2025-08,-0.8329506977537593
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9984659860236981,-0.9984659860236981,0.9984881511346152,-0.9999778013280458,0.4770528404862317,0.6666124795554516,0.6081099611883933,-0.9999778013280458,4031,335.9166666666667,2025-11,-0.5161033432308773
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9992297707734039,-0.9992297707734039,0.9992490417159452,-0.999980714574909,0.5538081330038194,0.5911693023832854,0.7337524322128894,-0.999980714574909,4451,370.9166666666667,2025-12,-0.6472614939472632
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9988844963864143,-0.9988844963864143,0.9989006144020944,-0.9999838642449032,0.47602256699576867,0.6702958149159766,0.6089497645602748,-0.9999838642449032,4254,354.5,2026-03,-0.5211711276506905
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.998898223061616,-0.998898223061616,0.9989143294977543,-0.9999838760585742,0.4755376979437485,0.6716453140587337,0.6089907038693881,-0.9999838760585742,4231,352.5833333333333,2026-04,-0.545963415039694
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9988737674388724,-0.9988737674388724,0.9988897278575722,-0.9999840218411955,0.556791292001893,0.584434098738215,0.7342089878969673,-0.9999840218411955,4226,352.1666666666667,2025-12,-0.6402406241970402
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9992601862427558,-0.9992601862427558,0.9992708758806864,-0.9999893025623096,0.47429593205185516,0.6733803511723409,0.6075310821376306,-0.9999893025623096,4474,372.8333333333333,2026-04,-0.5568679901885223
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9988003281950153,-0.9988003281950153,0.9988084447470269,-0.9999918737651305,0.4803921568627451,0.6532018329570497,0.6039035814131215,-0.9999918737651305,4182,348.5,2025-12,-0.5893826150460291
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9992565431208889,-0.9992565431208889,0.9992615730852529,-0.9999949663186302,0.4785373608903021,0.6534337170434238,0.5996449659453371,-0.9999949663186302,4403,366.9166666666667,2025-12,-0.5877068640336626
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9998846176229188,-0.9998846176229188,0.9998878015668071,-0.999996815698838,0.5279465370595383,0.6220734567166385,0.6957295159417746,-0.999996815698838,4938,411.5,2025-10,-0.6876743614164327
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9999868525265491,-0.9999868525265491,0.9999886267092117,-0.9999982257971588,0.3249097472924188,1.5101851457006112,0.7268270754708823,-0.9999982257971588,2770,230.83333333333334,2025-08,-0.8054025445180765
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9998249499767907,-0.9998249499767907,0.9998265310084098,-0.9999984186940734,0.5302156737134316,0.6153296964133073,0.6944834709973827,-0.9999984186940734,4683,390.25,2025-10,-0.6742802844122124
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9993067767250821,-0.9993067767250821,0.9993068705863425,-0.9999999060736364,0.48254897545597836,0.6476345828754936,0.6039516584430735,-0.9999999060736364,4441,370.0833333333333,2026-04,-0.5837436900743416
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.999900551974873,-0.999900551974873,0.9999006035389937,-0.9999999484307536,0.5370406003463537,0.6125893056130722,0.7106137788720219,-0.9999999484307536,5197,433.0833333333333,2025-10,-0.6724957487539592
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9991370719486775,-0.9991370719486775,0.9991370719486775,-1.0,0.5654332129963899,0.5701687183691871,0.741870616943501,-1.0,4432,369.3333333333333,2025-05,-0.637247831741699
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9992916103673279,-0.9992916103673279,0.9992916103673279,-1.0,0.5645057075166918,0.5762185925011795,0.7469183634745753,-1.0,4643,386.9166666666667,2025-05,-0.6172339242393516
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 16:45,2026-04-29 16:45,-0.9996223431049924,-0.9996223431049924,0.9996223431049924,-1.0,0.48025613660619,0.645511340433106,0.5964683843837735,-1.0,4685,390.4166666666667,2026-04,-0.6073808607340229
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",1y,2025-04-29 17:00,2026-04-29 17:00,-0.9998655059567265,-0.9998655059567265,0.9998655059567264,-1.0000000000000002,0.5378558449424591,0.6071113525460025,0.7065725833038666,-1.0000000000000002,4953,412.75,2025-10,-0.6834128655052578
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,0.1074367339447857,0.22710396872174798,0.1344368396797741,1.6892986272416486,0.5454545454545454,1.1337477556026716,1.360497306723206,0.7991614069528701,22,3.6767399267399266,2026-04,-0.08469754568560972
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,0.06642623573819573,0.13766686103601788,0.09161479789838231,1.5026705749950549,0.5172413793103449,1.170037959830416,1.253612099818303,0.7250601132349237,29,4.846611721611722,2026-03,-0.03152142638785427
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.30498813923083967,-0.5179231710117252,0.7459010353821002,-0.6943590991885545,0.24,3.3017721440758376,1.0426648876028963,-0.4088855287278217,275,45.95924908424908,2025-12,-0.5345466340479484
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.3254929072715056,-0.546023463549588,0.6790194647234664,-0.8041352154344477,0.3072378138847858,2.2578804787938735,1.001362770978946,-0.4793572558395862,677,113.14331501831501,2026-01,-0.4337105454565089
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9958843969318819,-0.9999835653879668,0.9967589176406644,-1.0032351330800584,0.3191489361702128,1.5629898676119485,0.7326515004431008,-0.9991226356812012,1363,227.7907509157509,2026-02,-0.7945406002899376
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9943807672018732,-0.9999693105123861,0.9948075666145079,-1.00518868580327,0.5218382073680212,0.6266795032034077,0.6839218724396204,-0.99957097289269,2633,440.0389194139194,2026-02,-0.6603927710619023
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9937465376831602,-0.9999619695165324,0.9942559145031841,-1.0057390204374088,0.5088566827697263,0.6415945840540658,0.6647340608560157,-0.9994876803722326,2484,415.1373626373626,2026-03,-0.6674516157615888
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9927493475871065,-0.999948832051808,0.9933046271294395,-1.0066889902059246,0.5239616613418531,0.6215972867310108,0.6841741947911796,-0.9994409775942174,2504,418.47985347985343,2026-02,-0.61739495769997
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.991822103508283,-0.9999348650301338,0.9923540250580691,-1.0076392494821806,0.5123299319727891,0.6332235860924178,0.6652436104981373,-0.9994639800551471,2352,393.07692307692304,2026-03,-0.6388260124964085
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9891116252581197,-0.9998843514474306,0.989331068111601,-1.0106670897902492,0.49087893864013266,0.6360906260420413,0.6132991052392319,-0.9997781906779698,2412,403.10439560439556,2026-04,-0.6073808607340229
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9837635575800254,-0.9997422793098236,0.9841276518490448,-1.015866465525525,0.4938434476693052,0.6378011507288881,0.6222855710413043,-0.9996300334937899,2274,380.04120879120876,2026-04,-0.5837436900743416
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9804683790262141,-0.9996266767586695,0.9811385432166152,-1.0188435503526767,0.48946236559139783,0.6708146636522149,0.6431230726505649,-0.9993169525394405,2325,388.5645604395604,2026-04,-0.5568679901885223
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9737984767594274,-0.9993270813476313,0.9807642689730434,-1.018926884840559,0.24471299093655588,2.460128020103575,0.7970814785135583,-0.9928975876936159,993,165.95467032967034,2026-02,-0.7291667132392559
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9804109819411415,-0.9996244733288885,0.9809895259021227,-1.018996071756861,0.49234923492349236,0.6479270680835785,0.6283973514924067,-0.9994102445075046,2222,371.35073260073256,2025-12,-0.5877068640336626
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9788281468868306,-0.99956114745885,0.9801492517297669,-1.019805040604607,0.5508727117922521,0.6010740387010055,0.7372415223498588,-0.9986521391098298,2349,392.57554945054943,2025-12,-0.5502160051089353
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9778368378717485,-0.9995189685060937,0.9792995660698809,-1.0206468001587676,0.5327978580990629,0.6308520239188483,0.7194243711166236,-0.9985063526536597,2241,374.52609890109886,2025-12,-0.6472614939472632
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9752338107061052,-0.9993989737691531,0.9768070639983161,-1.0231283234975417,0.553125,0.5943446205770045,0.7356573275673413,-0.9983893919790351,2240,374.35897435897436,2025-12,-0.5358077234525982
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9758178693056586,-0.99942706252461,0.9767025689371434,-1.0232665442993516,0.49019607843137253,0.6689581814591271,0.6432290206337761,-0.9990941974971486,2193,366.5041208791209,2026-04,-0.545963415039694
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.975502453609673,-0.9994119771499336,0.97627784726846,-1.023696256087548,0.4940504521656354,0.6435326213231733,0.6283977995611043,-0.9992057653864046,2101,351.128663003663,2025-12,-0.5893826150460291
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9709520595898056,-0.9991724651947947,0.9726002154330631,-1.0273208347480163,0.536723163841808,0.6248577426412322,0.7239205554989884,-0.9983054128334491,2124,354.9725274725275,2025-12,-0.6402406241970402
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9704464319708276,-0.999143324000175,0.9715411379386792,-1.0284107229057324,0.4960775265343793,0.6661947029132005,0.6558235399557605,-0.9988732273651589,2167,362.15888278388275,2026-03,-0.5211711276506905
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9662518013276326,-0.9988820698757557,0.969007815318136,-1.030829735411176,0.40982142857142856,1.099187617978049,0.763278542589901,-0.9971558392544042,1120,187.17948717948718,2026-02,-0.5570784736675425
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9657348398001038,-0.9988474619458372,0.9670760749829829,-1.0328530379199106,0.4968246213971666,0.6610577756205274,0.6527143279670643,-0.9986131027149,2047,342.1039377289377,2025-11,-0.5161033432308773
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9526151543194522,-0.9977919839041266,0.9598413484669497,-1.0395384461169457,0.31990794016110474,1.6411703396868786,0.771988755385706,-0.9924714702497042,869,145.2312271062271,2025-11,-0.5663870254491686
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9540417466768205,-0.9979232827119627,0.9569767945790214,-1.0427873365006242,0.38756476683937824,1.1991735460268116,0.7588678616142598,-0.9969329999234808,965,161.27518315018315,2026-02,-0.6069299854968835
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9540417466768205,-0.9979232827119627,0.9569767945790214,-1.0427873365006242,0.38756476683937824,1.1991735460268116,0.7588678616142598,-0.9969329999234808,965,161.27518315018315,2026-02,-0.6069299854968835
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9518629150173581,-0.9977211252698754,0.9557720237796768,-1.043890279738789,0.3854166666666667,1.1600878095899494,0.7275126941496293,-0.9959099987601019,864,144.39560439560438,2025-11,-0.5988017467288627
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.9518629150173581,-0.9977211252698754,0.9557720237796768,-1.043890279738789,0.3854166666666667,1.1600878095899494,0.7275126941496293,-0.9959099987601019,864,144.39560439560438,2025-11,-0.5988017467288627
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.9156477239872856,-0.9929807122935527,0.9313097909565267,-1.0662195565169408,0.2213855421686747,2.823568691200284,0.802832877381899,-0.983182752805428,664,110.97069597069597,2026-03,-0.48876114244028823
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.8990982406364615,-0.9899463353729125,0.904976605615899,-1.093891631263977,0.3967391304347826,1.1623147022749178,0.7644051645591802,-0.9935044011713022,736,123.003663003663,2025-11,-0.5383190334670975
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.8717049259431755,-0.9837250366816731,0.8926233044044466,-1.1020606697446793,0.3175416133162612,1.8039174570574137,0.8393462089122675,-0.9765652785917037,781,130.5242673992674,2026-02,-0.5364290617064242
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.8760912533637224,-0.9848217755126479,0.8882077161045364,-1.108774172590886,0.3795275590551181,1.234789557241023,0.7552900591245851,-0.9863585256904164,635,106.12408424908425,2026-01,-0.4611277637282104
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.8760912533637224,-0.9848217755126479,0.8882077161045364,-1.108774172590886,0.3795275590551181,1.234789557241023,0.7552900591245851,-0.9863585256904164,635,106.12408424908425,2026-01,-0.4611277637282104
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.8615797815262107,-0.9810468946404806,0.8816030736635954,-1.1127988592004743,0.23462088698140202,2.8903634855328963,0.8860179656586822,-0.9772876334763947,699,116.82005494505493,2025-11,-0.40156931233376114
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.7012593204069493,-0.9113444902511565,0.8056317774008425,-1.1312171587761448,0.24,2.613961301278142,0.8254614635615185,-0.8704464497035813,275,45.95924908424908,2025-12,-0.3721312065021847
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.8521717192557583,-0.9783751412072723,0.8646665796237516,-1.1315056742831433,0.38128249566724437,1.2198179684788173,0.7517085520037529,-0.9855495046733155,577,96.4308608058608,2025-11,-0.514523381857702
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.8521717192557583,-0.9783751412072723,0.8646665796237516,-1.1315056742831433,0.38128249566724437,1.2198179684788173,0.7517085520037529,-0.9855495046733155,577,96.4308608058608,2025-11,-0.514523381857702
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.8318960933783068,-0.9720165958031064,0.8514902184992105,-1.141547577042434,0.2589073634204275,2.39640845235634,0.837206799060388,-0.9769884319335586,421,70.35943223443223,2025-11,-0.5522329325712911
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.5872756565025037,-0.8304848910885049,0.719730370377,-1.1538833503072696,0.3187855787476281,1.953148350153331,0.9140081415759321,-0.8159662016136465,527,88.0746336996337,2026-03,-0.37805218625144943
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.5075702201587913,-0.7584549163401286,0.618875291811159,-1.225537562051452,0.2718204488778055,2.53759351436126,0.9472523735115663,-0.8201494337790902,401,67.01694139194139,2025-11,-0.2790009193479326
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.2820985626013688,-0.4855551864768789,0.331369429447024,-1.4652986767281275,0.4864864864864865,0.8882392680393809,0.8414898328794135,-0.8513113689217606,111,18.550824175824175,2026-04,-0.2017355150586786
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 17:00,2026-04-29 17:00,-0.37542413318987167,-0.6109125342126344,0.39700810335102577,-1.5387910953356008,0.41216216216216217,1.0692291672730914,0.7496894161340067,-0.9456334266757522,148,24.734432234432234,2025-11,-0.17223827572316686
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.19463746964524176,-0.3521621627732373,0.21893788067237827,-1.608502656971535,0.4,0.6281782172221835,0.41878547814812234,-0.8890077361098604,20,3.342490842490842,2026-03,-0.10275929478517232
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.2663474786475818,-0.46266916289512605,0.2768658877164538,-1.6710948636942902,0.4728682170542636,0.871123545948225,0.7814490632770842,-0.9620090103709554,129,21.559065934065934,2025-11,-0.11709241842098472
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.2873516253570343,-0.49307673845372313,0.2873516253570343,-1.7159350946460645,0.5327102803738317,0.6812131860096102,0.7765830320509557,-1.0,107,17.882326007326007,2025-12,-0.19072871016726123
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",6m,2025-10-29 16:45,2026-04-29 16:45,-0.15067751477378455,-0.27929832253853426,0.16153899467823452,-1.7289839093951378,0.3333333333333333,1.093191744605869,0.5465958723029345,-0.9327624891681128,27,4.512362637362637,2026-03,-0.09265585912629248
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",3m,2026-01-29 17:00,2026-04-29 17:00,1.3898070095346928,33.23509045981981,0.27502819859833827,120.84248316790821,0.2975206611570248,3.690268486248906,1.5629372412348308,5.053325501231313,121,40.89351851851852,2026-04,-0.08827805466862437
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",3m,2026-01-29 16:45,2026-04-29 16:45,0.11643006507193121,0.5630878969707476,0.45496584588353695,1.2376487203720516,0.2964824120603015,2.659146796532108,1.1206404356813884,0.25590946249124646,199,67.25462962962963,2026-04,-0.17754975508602666
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.21059513458799284,-0.6167398824670876,0.5933938468254109,-1.039343238502683,0.30383480825958703,2.299482431959224,1.0035876715754242,-0.3548994242435318,339,114.56944444444446,2026-03,-0.2121410910268534
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.9598408564479733,-0.9999978244441425,0.9616421945959425,-1.0398855520938493,0.30802292263610315,1.5650518652100458,0.6966586977643062,-0.9981268104102629,698,235.89814814814815,2026-02,-0.7945406002899376
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.947646818267134,-0.9999936232044309,0.9476739635600819,-1.0552085017169852,0.5197319434102755,0.6144577756078866,0.6649481044562866,-0.999971355873442,1343,453.8842592592593,2026-02,-0.6603927710619023
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.9396276783696282,-0.9999886336695191,0.9413743497771847,-1.062264585715776,0.208984375,2.614695163403843,0.690796006133855,-0.9981445517312322,512,173.03703703703704,2026-02,-0.7291667132392559
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.9356355301708945,-0.9999852633603895,0.9356355301708946,-1.0687764958837564,0.52421875,0.6119803904922031,0.674283812841163,-0.9999999999999999,1280,432.5925925925926,2026-02,-0.61739495769997
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.9325919210518839,-0.9999822263655663,0.9344520278240226,-1.0701268728520374,0.5139664804469274,0.6239233192149465,0.6597809812387939,-0.9980094143768192,1253,423.4675925925926,2026-03,-0.6674516157615888
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.9218379056530486,-0.999967604511049,0.933280507012608,-1.071454505904022,0.5074135090609555,0.594969107861489,0.6128778769944435,-0.9877393760251281,1214,410.28703703703707,2026-04,-0.6073808607340229
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.9196282670384208,-0.9999637268110795,0.9203541752603385,-1.0864988215305504,0.5185185185185185,0.6182974392666968,0.6658587807487503,-0.9992112729627023,1188,401.5,2026-03,-0.6388260124964085
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8853945530931799,-0.9998470481755752,0.904287050891823,-1.1056744063619062,0.5046808510638298,0.6391755108571251,0.6512561476602667,-0.9791078532198255,1175,397.1064814814815,2026-04,-0.5568679901885223
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8938593731852167,-0.9998879507623913,0.9031016636489633,-1.107170976435106,0.5157342657342657,0.594461991211368,0.6330912902792547,-0.9897660575373062,1144,386.6296296296297,2026-04,-0.5837436900743416
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8964390308305036,-0.9998985917946454,0.901423268718274,-1.1092442657003878,0.3704974271012007,1.2129292343388902,0.7138766065863769,-0.9944707019879158,583,197.03240740740742,2026-02,-0.5570784736675425
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.893754993758329,-0.9998875032088828,0.8986084499151094,-1.1127065445504558,0.553781512605042,0.5813321157594672,0.7214649044924462,-0.9945989199664894,1190,402.1759259259259,2026-04,-0.5287275418122965
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8645505699419442,-0.9996987867119981,0.8976356919182242,-1.1137021351899095,0.5158658204895739,0.612169581841036,0.6522930563062724,-0.9631419268706016,1103,372.77314814814815,2026-03,-0.5712279780843972
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.8849876786959822,-0.9998448339847403,0.8899093664485291,-1.1235355775329618,0.18208955223880596,2.875771677897807,0.6402265414298037,-0.9944694505551857,335,113.2175925925926,2026-03,-0.48876114244028823
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8703507327936365,-0.9997477740805624,0.8835564220619296,-1.131504167835123,0.5067506750675067,0.636479724350273,0.6539016146153352,-0.9850539377695027,1111,375.47685185185185,2026-04,-0.545963415039694
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.8752448013812227,-0.9997842177863533,0.8807429154095544,-1.1351601021070303,0.5584872471416007,0.5766279378271238,0.7293998815143897,-0.9937574132790213,1137,384.2638888888889,2026-04,-0.5179260527811114
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8203346337365091,-0.9990528062535614,0.8682131151001787,-1.1506999708686567,0.5185185185185185,0.6442007903276213,0.6937546972758999,-0.9448539989422468,1080,365.0,2026-03,-0.5211711276506905
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.8505117437841854,-0.9995506620071671,0.8664633299132625,-1.1535983434027466,0.5432649420160571,0.6175875917723986,0.734591490994904,-0.9815900043563599,1121,378.8564814814815,2026-03,-0.5275568347053954
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8331484426068866,-0.9992983554039706,0.865122791869613,-1.1550942418756434,0.5230326295585412,0.6085940768464099,0.6673717744090412,-0.9630406809724353,1042,352.15740740740745,2026-04,-0.4972164417602334
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.8525767938157918,-0.9995753094256451,0.858105111321506,-1.164863483782623,0.30414746543778803,1.6229872301796633,0.7093851469659456,-0.9935575287540235,434,146.67592592592592,2026-02,-0.4933683490003322
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.851998620307984,-0.9995685139997038,0.8526322295108796,-1.1723325478478752,0.3702213279678068,1.214224734672327,0.7137934542482689,-0.9992568786623759,497,167.9675925925926,2026-02,-0.6069299854968835
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.851998620307984,-0.9995685139997038,0.8526322295108796,-1.1723325478478752,0.3702213279678068,1.214224734672327,0.7137934542482689,-0.9992568786623759,497,167.9675925925926,2026-02,-0.6069299854968835
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8421491799937778,-0.9994396678685712,0.8509794656930085,-1.1744580311989805,0.2622549019607843,2.0402683750186377,0.7252781266677548,-0.989623385692345,408,137.88888888888889,2026-02,-0.5364290617064242
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.7948232460427549,-0.9983770784905697,0.8375110125765989,-1.1920763589950503,0.52297165200391,0.6402604323369975,0.7019248592219132,-0.9490302027163616,1023,345.73611111111114,2026-04,-0.4970793151408053
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.8098035366595395,-0.9988066565897795,0.8330743828178335,-1.1989405474351098,0.5494816211121584,0.6177306822803552,0.7534246606055379,-0.9720663044762203,1061,358.5787037037037,2026-03,-0.48415798147375244
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8024726048078009,-0.9986088385576934,0.8062256492227897,-1.2386220154622507,0.37697516930022573,1.199393885248417,0.7257202131756726,-0.995344920595609,443,149.7175925925926,2026-02,-0.5615269892029204
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.8024726048078009,-0.9986088385576934,0.8062256492227897,-1.2386220154622507,0.37697516930022573,1.199393885248417,0.7257202131756726,-0.995344920595609,443,149.7175925925926,2026-02,-0.5615269892029204
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.5660914477331496,-0.9661586019322542,0.7496636297770894,-1.2887894831173001,0.2433234421364985,2.8653679199609123,0.9214124291639013,-0.7551272667469214,337,113.89351851851852,2026-02,-0.319635665625284
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.7438054740714186,-0.9960058703941325,0.7712217268417568,-1.2914650038101143,0.36283185840707965,1.2365747336379602,0.7041606122105052,-0.9644508812237294,339,114.56944444444446,2026-04,-0.4394571365433827
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.7438054740714186,-0.9960058703941325,0.7712217268417568,-1.2914650038101143,0.36283185840707965,1.2365747336379602,0.7041606122105052,-0.9644508812237294,339,114.56944444444446,2026-04,-0.4394571365433827
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.7591736113404757,-0.9968921037022793,0.7692465643960538,-1.2959331244916943,0.3612565445026178,1.2986508927076676,0.7344828819412218,-0.9869054299079171,382,129.10185185185185,2026-02,-0.46444140335555784
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.26154691177887746,-0.7076007526438135,0.5179023251144944,-1.3662822473086635,0.29457364341085274,2.256883916811106,0.9424350421848574,-0.5050120439622595,129,43.59722222222222,2026-03,-0.28486181940337774
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.657811791432729,-0.9870822761491979,0.6960172014407527,-1.4181866110578039,0.2571428571428571,2.250544898182741,0.779034772447872,-0.9451085261557636,280,94.62962962962963,2026-03,-0.37805218625144943
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.5275178212774057,-0.9521973436295819,0.6471039673557237,-1.4714750514056782,0.26108374384236455,2.4834243928876214,0.8774766188202928,-0.815197940190375,203,68.60648148148148,2026-02,-0.3573932895249785
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.056506553191856046,-0.21013629673989564,0.1344368396797741,-1.5630856634270498,0.38461538461538464,1.289959357874519,0.8062245986715743,-0.4203204517932253,13,4.393518518518519,2026-04,-0.08469754568560972
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.10374474166056213,-0.3586661182297354,0.22828272055071633,-1.5711487814954985,0.48214285714285715,0.9834638601493702,0.9156387663459653,-0.4544572686460241,56,18.925925925925927,2026-04,-0.2017355150586786
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.5688378405464829,-0.9670189246843002,0.5782023459123313,-1.6724576292724387,0.39215686274509803,1.240170821027485,0.8001102071145065,-0.9838041034733742,306,103.41666666666667,2026-02,-0.4028615564268794
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.5688378405464829,-0.9670189246843002,0.5782023459123313,-1.6724576292724387,0.39215686274509803,1.240170821027485,0.8001102071145065,-0.9838041034733742,306,103.41666666666667,2026-02,-0.4028615564268794
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.04581400692456694,-0.1731996528117118,0.09161479789838231,-1.8905204921569778,0.4,1.238805970149245,0.8258706467661634,-0.5000721278169834,20,6.7592592592592595,2026-03,-0.03152142638785427
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.10188589956806526,-0.35325457399745785,0.16561266073075107,-2.133016717675772,0.5272727272727272,0.7898637092749211,0.8810018295758735,-0.6152059819491025,55,18.587962962962965,2026-02,-0.05890752489465756
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.16192699246402664,-0.5114991838656209,0.20586418936545997,-2.4846438102820447,0.4583333333333333,0.9374773507351768,0.793250066006688,-0.7865719286250709,72,24.333333333333336,2026-02,-0.11160840487643753
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.2189378806723783,-0.6329033768493484,0.21893788067237827,-2.890789729514345,0.23076923076923078,0.8350875885142665,0.2505262765542799,-1.0000000000000002,13,4.393518518518519,2026-03,-0.10275929478517232
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",3m,2026-01-29 17:00,2026-04-29 17:00,-0.1745040267729968,-0.5405556769092599,0.1866836968244475,-2.8955698119562334,0.41333333333333333,1.1394672965061536,0.8028065043566082,-0.9347577198296854,75,25.347222222222225,2026-02,-0.16709711635037472
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",3m,2026-01-29 16:45,2026-04-29 16:45,-0.14895588478619082,-0.4801036833910577,0.15983938159215752,-3.003663293793761,0.2631578947368421,1.238805970149242,0.44243070362472925,-0.9319097915822974,19,6.421296296296297,2026-03,-0.09265585912629248

+ 78 - 0
reports/ultrashort/executable-bidir-report.md

@@ -0,0 +1,78 @@
+# Executable bidirectional strategy search
+
+Run command: `rtk .venv/bin/python /home/lxy/okx-codex-trader/scripts/search_executable_bidir_variants.py --symbols ETH-USDT-SWAP BTC-USDT-SWAP --bars 15m`
+Execution safety: local CSV backtest only; no private API, no order submission, no commit.
+Cost model: fixed roundtrip cost on margin `0.0021`; leverage `3x`.
+
+Output files:
+- `reports/ultrashort/executable-bidir-total.csv`
+- `reports/ultrashort/executable-bidir-horizons.csv`
+- `reports/ultrashort/executable-bidir-top.csv`
+- `reports/ultrashort/executable-bidir-top.json`
+- `reports/ultrashort/executable-bidir-report.md`
+
+Eligibility: directly liveable, supports short, no synthetic portfolio bookkeeping, at least 10 trades/month.
+Decision: positive >=10 trades/month candidates found: `0`.
+
+Top executable candidates:
+| family | symbol | bar | name | trades_per_month | net_total_return | net_annualized_return | net_max_drawdown | net_calmar | win_rate | payoff_ratio | profit_factor | risk_reward_ratio | worst_month_return |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 42.468 | -0.544348 | -0.116431 | 0.994124 | -0.117119 | 0.238875 | 3.55147 | 1.11461 | -0.547565 | -0.688547 |
+| MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 43.4851 | -0.881902 | -0.284775 | 0.986084 | -0.288794 | 0.24534 | 3.28863 | 1.06913 | -0.894348 | -0.561012 |
+| BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 16.7874 | -0.960082 | -0.396699 | 0.9634 | -0.411769 | 0.544393 | 0.704174 | 0.841398 | -0.996556 | -0.190729 |
+| BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 20.7097 | -0.972734 | -0.431719 | 0.974526 | -0.443004 | 0.462121 | 0.93671 | 0.804779 | -0.998161 | -0.215344 |
+| BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 17.5725 | -0.989463 | -0.511788 | 0.99004 | -0.516937 | 0.476475 | 0.902155 | 0.821077 | -0.999417 | -0.334309 |
+| BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 23.045 | -0.993731 | -0.550123 | 0.993797 | -0.553556 | 0.415148 | 1.08879 | 0.772864 | -0.999934 | -0.379722 |
+| MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 70.5524 | -0.999962 | -0.799042 | 0.999965 | -0.79907 | 0.251674 | 2.939 | 0.988432 | -0.999998 | -0.552233 |
+| MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 72.8761 | -0.999983 | -0.821756 | 0.999991 | -0.821764 | 0.25906 | 2.71194 | 0.948193 | -0.999993 | -0.633099 |
+| MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f8-s34-sl0.01 | 115.54 | -1 | -0.915413 | 1 | -0.915413 | 0.263517 | 2.6954 | 0.964424 | -1 | -0.646765 |
+| Donchian false breakout | BTC-USDT-SWAP | 15m | donchian-false-l96-r2-sl0.006-tp0.009 | 94.6056 | -1 | -0.953099 | 1 | -0.953099 | 0.394417 | 1.22472 | 0.797659 | -1 | -0.556361 |
+| Donchian false breakout | BTC-USDT-SWAP | 15m | donchian-false-l96-r4-sl0.006-tp0.009 | 94.6056 | -1 | -0.953099 | 1 | -0.953099 | 0.394417 | 1.22472 | 0.797659 | -1 | -0.556361 |
+| MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f8-s34-sl0.01 | 119.303 | -1 | -0.959228 | 1 | -0.959228 | 0.263123 | 2.48809 | 0.888446 | -1 | -0.694351 |
+| Donchian false breakout | ETH-USDT-SWAP | 15m | donchian-false-l96-r2-sl0.006-tp0.009 | 107.666 | -1 | -0.974441 | 1 | -0.974441 | 0.389688 | 1.2346 | 0.788301 | -1 | -0.731506 |
+| Donchian false breakout | ETH-USDT-SWAP | 15m | donchian-false-l96-r4-sl0.006-tp0.009 | 107.666 | -1 | -0.974441 | 1 | -0.974441 | 0.389688 | 1.2346 | 0.788301 | -1 | -0.731506 |
+| Donchian false breakout | BTC-USDT-SWAP | 15m | donchian-false-l48-r2-sl0.006-tp0.009 | 144.262 | -1 | -0.991389 | 1 | -0.991389 | 0.402755 | 1.16592 | 0.786243 | -1 | -0.616758 |
+
+Family leaders:
+| family | symbol | bar | name | trades_per_month | net_calmar | net_annualized_return | net_max_drawdown | profit_factor |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 16.7874 | -0.411769 | -0.396699 | 0.9634 | 0.841398 |
+| Donchian false breakout | BTC-USDT-SWAP | 15m | donchian-false-l96-r2-sl0.006-tp0.009 | 94.6056 | -0.953099 | -0.953099 | 1 | 0.797659 |
+| MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 42.468 | -0.117119 | -0.116431 | 0.994124 | 1.11461 |
+| RSI2 both | ETH-USDT-SWAP | 15m | rsi2-both-t192-e10-x55-sl0.006 | 449.575 | -1 | -1 | 1 | 0.74779 |
+| VWAP reversion | BTC-USDT-SWAP | 15m | vwap-reversion-w96-z2-sl0.006 | 98.0834 | -0.991716 | -0.991716 | 1 | 0.756324 |
+
+Positive but below 10 trades/month:
+| family | symbol | bar | name | trades_per_month | net_total_return | net_annualized_return | net_max_drawdown | net_calmar | profit_factor | worst_month_return |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015 | 3.20216 | 0.530784 | 0.0693523 | 0.339043 | 0.204553 | 1.15463 | -0.122349 |
+| BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015 | 3.15091 | 0.190468 | 0.027731 | 0.270528 | 0.102507 | 1.0889 | -0.137824 |
+
+Recent horizon leaders:
+| horizon | family | symbol | bar | name | trades_per_month | net_total_return | net_annualized_return | net_max_drawdown | net_calmar | worst_month_return |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| full | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 42.468 | -0.544348 | -0.116431 | 0.994124 | -0.117119 | -0.688547 |
+| full | MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 43.4851 | -0.881902 | -0.284775 | 0.986084 | -0.288794 | -0.561012 |
+| full | BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 16.7874 | -0.960082 | -0.396699 | 0.9634 | -0.411769 | -0.190729 |
+| full | BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 20.7097 | -0.972734 | -0.431719 | 0.974526 | -0.443004 | -0.215344 |
+| full | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 17.5725 | -0.989463 | -0.511788 | 0.99004 | -0.516937 | -0.334309 |
+| 3y | BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 20.9531 | -0.785346 | -0.400968 | 0.794866 | -0.504448 | -0.189232 |
+| 3y | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 22.313 | -0.837006 | -0.45345 | 0.853347 | -0.531378 | -0.196521 |
+| 3y | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 17.484 | -0.855245 | -0.474629 | 0.867935 | -0.546848 | -0.201736 |
+| 3y | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 43.4048 | -0.900577 | -0.536411 | 0.971893 | -0.551923 | -0.534547 |
+| 3y | BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 17.373 | -0.88664 | -0.515707 | 0.89379 | -0.57699 | -0.190729 |
+| 1y | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 18 | -0.236248 | -0.236248 | 0.364538 | -0.648076 | -0.201736 |
+| 1y | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 23.75 | -0.313912 | -0.313912 | 0.422588 | -0.742833 | -0.172238 |
+| 1y | BBMR risk-filtered | BTC-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009 | 18.9167 | -0.206376 | -0.206376 | 0.276866 | -0.745401 | -0.117092 |
+| 1y | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 45.5 | -0.763553 | -0.763553 | 0.939355 | -0.812848 | -0.534547 |
+| 1y | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 68.6667 | -0.836967 | -0.836967 | 0.942814 | -0.887733 | -0.552233 |
+| 6m | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 45.9592 | -0.304988 | -0.517923 | 0.745901 | -0.694359 | -0.534547 |
+| 6m | MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 45.9592 | -0.701259 | -0.911344 | 0.805632 | -1.13122 | -0.372131 |
+| 6m | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 70.3594 | -0.831896 | -0.972017 | 0.85149 | -1.14155 | -0.552233 |
+| 6m | MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 67.0169 | -0.50757 | -0.758455 | 0.618875 | -1.22554 | -0.279001 |
+| 6m | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 18.5508 | -0.282099 | -0.485555 | 0.331369 | -1.4653 | -0.201736 |
+| 3m | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 40.8935 | 1.38981 | 33.2351 | 0.275028 | 120.842 | -0.0882781 |
+| 3m | MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 67.2546 | 0.11643 | 0.563088 | 0.454966 | 1.23765 | -0.17755 |
+| 3m | MA cross both | BTC-USDT-SWAP | 15m | ma-cross-both-f21-s89-sl0.01 | 43.5972 | -0.261547 | -0.707601 | 0.517902 | -1.36628 | -0.284862 |
+| 3m | MA cross both | ETH-USDT-SWAP | 15m | ma-cross-both-f13-s55-sl0.01 | 68.6065 | -0.527518 | -0.952197 | 0.647104 | -1.47148 | -0.357393 |
+| 3m | BBMR risk-filtered | ETH-USDT-SWAP | 15m | bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015 | 18.9259 | -0.103745 | -0.358666 | 0.228283 | -1.57115 | -0.201736 |

+ 47 - 0
reports/ultrashort/executable-bidir-top.csv

@@ -0,0 +1,47 @@
+family,symbol,bar,name,first_candle,last_candle,years,directly_liveable,needs_synthetic_bookkeeping,supports_short,long_entries,short_entries,order_intent,params_json,net_total_return,net_annualized_return,net_max_drawdown,net_calmar,win_rate,payoff_ratio,profit_factor,risk_reward_ratio,trades,trades_per_month,worst_month,worst_month_return,candidate_tier
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",0.5307837585122177,0.06935231554835952,0.33904304936044405,0.20455312586169425,0.5327868852459017,1.012518952741183,1.154626875932928,1.565534994784482,244,3.202157303370786,2022-11,-0.12234878289923146,positive_sub10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",0.19046805249684806,0.027731040643869775,0.27052815261333985,0.10250704178468688,0.5809128630705395,0.7855668050547545,1.0889044822541154,0.7040600050564054,241,3.150905126287841,2024-01,-0.1378237075608011,positive_sub10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",-0.5443478551734786,-0.1164309052061161,0.994124029246173,-0.11711909357467562,0.2388751545117429,3.5514682500004384,1.1146102140683471,-0.5475653330563272,3236,42.46795505617977,2021-01,-0.6885474755689496,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",-0.881902159384352,-0.28477512515829706,0.9860841118090515,-0.28879394946933473,0.24533974744437764,3.2886346302331835,1.069133808075808,-0.8943478034205731,3326,43.48510560179817,2022-01,-0.5610117828271657,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",-0.9600824831133907,-0.3966985239074312,0.9634003826612205,-0.4117691159843873,0.544392523364486,0.7041742996742577,0.8413980093543695,-0.9965560533216058,1284,16.787394946695386,2025-12,-0.19072871016726123,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9727337073756209,-0.43171922261159335,0.9745262373680516,-0.44300420661588097,0.4621212121212121,0.9367097109219714,0.8047787657216938,-0.998160613923262,1584,20.709683485642906,2020-05,-0.21534435469933366,nonpositive_10pm
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",-0.9894634747305636,-0.5117883170864241,0.9900404060207642,-0.5169367977044872,0.4764749813293503,0.9021549757423155,0.8210768538139762,-0.9994172649048544,1339,17.57249438202247,2022-08,-0.334308570397455,nonpositive_10pm
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9937311588381679,-0.5501226581046461,0.9937970963459449,-0.5535563145911488,0.4151480637813212,1.0887947936092808,0.7728640745288858,-0.9999336509353675,1756,23.045033707865166,2022-08,-0.37972154382401724,nonpositive_10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",-0.9999624333387679,-0.7990416800708078,0.999964842594045,-0.7990697732912138,0.25167410714285715,2.9389956401513535,0.9884317924744671,-0.9999975906600168,5376,70.55244943820225,2025-11,-0.5522329325712911,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",-0.9999831696216224,-0.8217561683212675,0.9999905486939551,-0.8217639350637145,0.25905992106207393,2.711937924886784,0.9481933083623525,-0.9999926208579247,5574,72.87612105364492,2022-01,-0.6330994016653446,nonpositive_10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",-0.9999998456470421,-0.9154125552308765,0.9999999131297375,-0.9154126347530124,0.26351658337119493,2.6953995143090155,0.9644242555824979,-0.9999999325172988,8804,115.54013483146066,2022-09,-0.6467650097054145,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",-0.9999999986109543,-0.9592275188214064,0.9999999989462685,-0.9592275198321747,0.2631232876712329,2.488091668227145,0.8884455823041902,-0.9999999996646859,9125,119.30294305965373,2021-01,-0.6943508554922505,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-0.9999999999999462,-0.9917161928916075,0.9999999999999541,-0.991716192891653,0.27366035723806986,2.0074096552503207,0.7563244672837051,-0.999999999999992,7502,98.08336206394765,2021-01,-0.7367179353337692,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-0.9999999999999736,-0.9925915963258162,0.9999999999999749,-0.992591596325841,0.35896406344107606,1.398751800707077,0.7832659629390083,-0.9999999999999987,9962,130.2461280833173,2021-01,-0.6657587927725409,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5233674869369764,0.6810152582131297,0.747790455934787,-1.0,34257,449.575011235955,2021-03,-0.7872707532503879,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5217471095613874,0.6992235061058377,0.7628136714730993,-1.0,32694,429.0628314606741,2021-03,-0.7781393899140645,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5259450647473163,0.6780172174410011,0.7522330911642666,-1.0,32511,426.661213483146,2021-03,-0.7785073750404788,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5032906130931764,0.6579566146990428,0.6666743104307594,-1.0,31757,415.2003904378546,2022-05,-0.7936275744261018,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5251694094869312,0.6981945011707055,0.7722130823345724,-1.0,30990,406.7002247191011,2021-03,-0.7646142773662596,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5543595263724435,0.6116596654313629,0.7608809847757291,-1.0,30657,402.3300674157303,2021-03,-0.7564858862760676,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5003456790123457,0.6722613301925932,0.6731915198172913,-1.0,30375,397.1317145684364,2024-04,-0.7464477960005055,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5057353136188835,0.6524949567837527,0.6676377064683177,-1.0,30164,394.37303829604326,2022-05,-0.769752670034696,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5497036409822185,0.6376320093746091,0.7783954503309444,-1.0,29525,387.47415730337076,2021-03,-0.7409590023510295,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5573186195551595,0.6094336779515712,0.7672532686264962,-1.0,29179,382.9333932584269,2021-03,-0.7634768722429255,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5167356148928168,0.6351024539456328,0.6790900947247468,-1.0,29249,382.41005825225335,2022-05,-0.7936384699852795,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5030696125698033,0.6664835144678734,0.6747174491409251,-1.0,28831,376.94500288798645,2024-04,-0.7338178023350337,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5127688172043011,0.6486004374006368,0.6825960465333598,-1.0,28272,369.63647191041423,2024-04,-0.7319389969178521,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5536560173807743,0.6354098400094029,0.7881779415054396,-1.0,28077,368.47119101123593,2021-03,-0.7472872685915312,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5198966593706269,0.6313160069278104,0.6836425728233965,-1.0,27869,364.36753097309474,2022-05,-0.7691949653096348,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5157562244518766,0.6429913752178401,0.6848344176692811,-1.0,26910,351.8292819435925,2024-04,-0.7123335109662512,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.3057555934253202,1.7603310487213417,0.7752760545560301,-1.0,18191,238.7313258426966,2021-05,-0.8734680824201303,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.37305260413271624,1.313519889175563,0.781583939046761,-1.0,15341,200.57276158664632,2021-01,-0.8714999656351985,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.22673510377147957,2.631114463800068,0.7714898398905826,-1.0,13443,176.42049438202244,2021-05,-0.9055011061344436,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.2929466277672902,1.8273326380505852,0.7571011682408613,-1.0,11654,152.9423820224719,2022-06,-0.8222826995621771,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.28562421185372006,1.915356858330902,0.7658046397386572,-1.0,11102,145.15082453131788,2021-01,-0.7824457070474309,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.2127849798837729,2.7805884434719967,0.7515957405409827,-1.0,8948,117.42993258426965,2021-05,-0.8489376796192458,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.12607703313859508,-0.020921231925947303,0.3459093706237499,-0.06048183051017603,0.4880546075085324,1.0235813142830186,0.9758141862831443,-0.3644799587569737,293,3.830768473038744,2024-01,-0.12876451748306117,other
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.3400096016156269,-0.06334379125039735,0.5368632068782602,-0.11798869886935887,0.4426229508196721,1.1322888182235562,0.8991705321187065,-0.6333263245822095,305,4.0026966292134825,2023-02,-0.10235315571160597,other

+ 582 - 0
reports/ultrashort/executable-bidir-top.json

@@ -0,0 +1,582 @@
+[
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 172,
+    "short_entries": 72,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":96,\"stdev_mult\":2.0,\"atr_length\":96,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.01,\"take_profit_pct\":0.015,\"max_hold_bars\":96}",
+    "net_total_return": 0.5307837585122177,
+    "net_annualized_return": 0.06935231554835952,
+    "net_max_drawdown": 0.33904304936044405,
+    "net_calmar": 0.20455312586169425,
+    "win_rate": 0.5327868852459017,
+    "payoff_ratio": 1.012518952741183,
+    "profit_factor": 1.154626875932928,
+    "risk_reward_ratio": 1.565534994784482,
+    "trades": 244,
+    "trades_per_month": 3.202157303370786,
+    "worst_month": "2022-11",
+    "worst_month_return": -0.12234878289923146,
+    "candidate_tier": "positive_sub10pm"
+  },
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 138,
+    "short_entries": 103,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":96,\"stdev_mult\":2.0,\"atr_length\":96,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.01,\"take_profit_pct\":0.015,\"max_hold_bars\":96}",
+    "net_total_return": 0.19046805249684806,
+    "net_annualized_return": 0.027731040643869775,
+    "net_max_drawdown": 0.27052815261333985,
+    "net_calmar": 0.10250704178468688,
+    "win_rate": 0.5809128630705395,
+    "payoff_ratio": 0.7855668050547545,
+    "profit_factor": 1.0889044822541154,
+    "risk_reward_ratio": 0.7040600050564054,
+    "trades": 241,
+    "trades_per_month": 3.150905126287841,
+    "worst_month": "2024-01",
+    "worst_month_return": -0.1378237075608011,
+    "candidate_tier": "positive_sub10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f21-s89-sl0.01",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 1618,
+    "short_entries": 1618,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":21,\"slow\":89,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.5443478551734786,
+    "net_annualized_return": -0.1164309052061161,
+    "net_max_drawdown": 0.994124029246173,
+    "net_calmar": -0.11711909357467562,
+    "win_rate": 0.2388751545117429,
+    "payoff_ratio": 3.5514682500004384,
+    "profit_factor": 1.1146102140683471,
+    "risk_reward_ratio": -0.5475653330563272,
+    "trades": 3236,
+    "trades_per_month": 42.46795505617977,
+    "worst_month": "2021-01",
+    "worst_month_return": -0.6885474755689496,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f21-s89-sl0.01",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 1663,
+    "short_entries": 1663,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":21,\"slow\":89,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.881902159384352,
+    "net_annualized_return": -0.28477512515829706,
+    "net_max_drawdown": 0.9860841118090515,
+    "net_calmar": -0.28879394946933473,
+    "win_rate": 0.24533974744437764,
+    "payoff_ratio": 3.2886346302331835,
+    "profit_factor": 1.069133808075808,
+    "risk_reward_ratio": -0.8943478034205731,
+    "trades": 3326,
+    "trades_per_month": 43.48510560179817,
+    "worst_month": "2022-01",
+    "worst_month_return": -0.5610117828271657,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 714,
+    "short_entries": 570,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":48,\"stdev_mult\":2.0,\"atr_length\":48,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.01,\"take_profit_pct\":0.015,\"max_hold_bars\":48}",
+    "net_total_return": -0.9600824831133907,
+    "net_annualized_return": -0.3966985239074312,
+    "net_max_drawdown": 0.9634003826612205,
+    "net_calmar": -0.4117691159843873,
+    "win_rate": 0.544392523364486,
+    "payoff_ratio": 0.7041742996742577,
+    "profit_factor": 0.8413980093543695,
+    "risk_reward_ratio": -0.9965560533216058,
+    "trades": 1284,
+    "trades_per_month": 16.787394946695386,
+    "worst_month": "2025-12",
+    "worst_month_return": -0.19072871016726123,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 901,
+    "short_entries": 683,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":48,\"stdev_mult\":2.0,\"atr_length\":48,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":48}",
+    "net_total_return": -0.9727337073756209,
+    "net_annualized_return": -0.43171922261159335,
+    "net_max_drawdown": 0.9745262373680516,
+    "net_calmar": -0.44300420661588097,
+    "win_rate": 0.4621212121212121,
+    "payoff_ratio": 0.9367097109219714,
+    "profit_factor": 0.8047787657216938,
+    "risk_reward_ratio": -0.998160613923262,
+    "trades": 1584,
+    "trades_per_month": 20.709683485642906,
+    "worst_month": "2020-05",
+    "worst_month_return": -0.21534435469933366,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 795,
+    "short_entries": 544,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":48,\"stdev_mult\":2.0,\"atr_length\":48,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.01,\"take_profit_pct\":0.015,\"max_hold_bars\":48}",
+    "net_total_return": -0.9894634747305636,
+    "net_annualized_return": -0.5117883170864241,
+    "net_max_drawdown": 0.9900404060207642,
+    "net_calmar": -0.5169367977044872,
+    "win_rate": 0.4764749813293503,
+    "payoff_ratio": 0.9021549757423155,
+    "profit_factor": 0.8210768538139762,
+    "risk_reward_ratio": -0.9994172649048544,
+    "trades": 1339,
+    "trades_per_month": 17.57249438202247,
+    "worst_month": "2022-08",
+    "worst_month_return": -0.334308570397455,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "BBMR risk-filtered",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 1070,
+    "short_entries": 686,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"trend_sma\":192,\"band_length\":48,\"stdev_mult\":2.0,\"atr_length\":48,\"max_atr_pct\":0.01,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":48}",
+    "net_total_return": -0.9937311588381679,
+    "net_annualized_return": -0.5501226581046461,
+    "net_max_drawdown": 0.9937970963459449,
+    "net_calmar": -0.5535563145911488,
+    "win_rate": 0.4151480637813212,
+    "payoff_ratio": 1.0887947936092808,
+    "profit_factor": 0.7728640745288858,
+    "risk_reward_ratio": -0.9999336509353675,
+    "trades": 1756,
+    "trades_per_month": 23.045033707865166,
+    "worst_month": "2022-08",
+    "worst_month_return": -0.37972154382401724,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f13-s55-sl0.01",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 2688,
+    "short_entries": 2688,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":13,\"slow\":55,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.9999624333387679,
+    "net_annualized_return": -0.7990416800708078,
+    "net_max_drawdown": 0.999964842594045,
+    "net_calmar": -0.7990697732912138,
+    "win_rate": 0.25167410714285715,
+    "payoff_ratio": 2.9389956401513535,
+    "profit_factor": 0.9884317924744671,
+    "risk_reward_ratio": -0.9999975906600168,
+    "trades": 5376,
+    "trades_per_month": 70.55244943820225,
+    "worst_month": "2025-11",
+    "worst_month_return": -0.5522329325712911,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f13-s55-sl0.01",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 2787,
+    "short_entries": 2787,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":13,\"slow\":55,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.9999831696216224,
+    "net_annualized_return": -0.8217561683212675,
+    "net_max_drawdown": 0.9999905486939551,
+    "net_calmar": -0.8217639350637145,
+    "win_rate": 0.25905992106207393,
+    "payoff_ratio": 2.711937924886784,
+    "profit_factor": 0.9481933083623525,
+    "risk_reward_ratio": -0.9999926208579247,
+    "trades": 5574,
+    "trades_per_month": 72.87612105364492,
+    "worst_month": "2022-01",
+    "worst_month_return": -0.6330994016653446,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f8-s34-sl0.01",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 4402,
+    "short_entries": 4402,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":8,\"slow\":34,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.9999998456470421,
+    "net_annualized_return": -0.9154125552308765,
+    "net_max_drawdown": 0.9999999131297375,
+    "net_calmar": -0.9154126347530124,
+    "win_rate": 0.26351658337119493,
+    "payoff_ratio": 2.6953995143090155,
+    "profit_factor": 0.9644242555824979,
+    "risk_reward_ratio": -0.9999999325172988,
+    "trades": 8804,
+    "trades_per_month": 115.54013483146066,
+    "worst_month": "2022-09",
+    "worst_month_return": -0.6467650097054145,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l96-r2-sl0.006-tp0.009",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 3506,
+    "short_entries": 3730,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":96,\"reclaim_bars\":2,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":96}",
+    "net_total_return": -0.9999999966090639,
+    "net_annualized_return": -0.9530993581503862,
+    "net_max_drawdown": 0.9999999966827124,
+    "net_calmar": -0.9530993613120908,
+    "win_rate": 0.39441680486456604,
+    "payoff_ratio": 1.2247168843179286,
+    "profit_factor": 0.7976590570158302,
+    "risk_reward_ratio": -0.9999999999263515,
+    "trades": 7236,
+    "trades_per_month": 94.60559955941417,
+    "worst_month": "2024-08",
+    "worst_month_return": -0.5563608272795834,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l96-r4-sl0.006-tp0.009",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 3506,
+    "short_entries": 3730,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":96,\"reclaim_bars\":4,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":96}",
+    "net_total_return": -0.9999999966090639,
+    "net_annualized_return": -0.9530993581503862,
+    "net_max_drawdown": 0.9999999966827124,
+    "net_calmar": -0.9530993613120908,
+    "win_rate": 0.39441680486456604,
+    "payoff_ratio": 1.2247168843179286,
+    "profit_factor": 0.7976590570158302,
+    "risk_reward_ratio": -0.9999999999263515,
+    "trades": 7236,
+    "trades_per_month": 94.60559955941417,
+    "worst_month": "2024-08",
+    "worst_month_return": -0.5563608272795834,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "MA cross both",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "ma-cross-both-f8-s34-sl0.01",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 4562,
+    "short_entries": 4563,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"fast\":8,\"slow\":34,\"stop_loss_pct\":0.01}",
+    "net_total_return": -0.9999999986109543,
+    "net_annualized_return": -0.9592275188214064,
+    "net_max_drawdown": 0.9999999989462685,
+    "net_calmar": -0.9592275198321747,
+    "win_rate": 0.2631232876712329,
+    "payoff_ratio": 2.488091668227145,
+    "profit_factor": 0.8884455823041902,
+    "risk_reward_ratio": -0.9999999996646859,
+    "trades": 9125,
+    "trades_per_month": 119.30294305965373,
+    "worst_month": "2021-01",
+    "worst_month_return": -0.6943508554922505,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l96-r2-sl0.006-tp0.009",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 3722,
+    "short_entries": 4482,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":96,\"reclaim_bars\":2,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":96}",
+    "net_total_return": -0.9999999999227114,
+    "net_annualized_return": -0.9744407194762232,
+    "net_max_drawdown": 0.9999999999247124,
+    "net_calmar": -0.9744407195495864,
+    "win_rate": 0.3896879570941004,
+    "payoff_ratio": 1.2346028169941978,
+    "profit_factor": 0.7883014191992113,
+    "risk_reward_ratio": -0.9999999999979989,
+    "trades": 8204,
+    "trades_per_month": 107.66597752808987,
+    "worst_month": "2021-05",
+    "worst_month_return": -0.7315056872336693,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "ETH-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l96-r4-sl0.006-tp0.009",
+    "first_candle": "2019-12-25 00:00",
+    "last_candle": "2026-04-29 17:00",
+    "years": 6.349885844748859,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 3722,
+    "short_entries": 4482,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":96,\"reclaim_bars\":4,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":96}",
+    "net_total_return": -0.9999999999227114,
+    "net_annualized_return": -0.9744407194762232,
+    "net_max_drawdown": 0.9999999999247124,
+    "net_calmar": -0.9744407195495864,
+    "win_rate": 0.3896879570941004,
+    "payoff_ratio": 1.2346028169941978,
+    "profit_factor": 0.7883014191992113,
+    "risk_reward_ratio": -0.9999999999979989,
+    "trades": 8204,
+    "trades_per_month": 107.66597752808987,
+    "worst_month": "2021-05",
+    "worst_month_return": -0.7315056872336693,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l48-r2-sl0.006-tp0.009",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 5456,
+    "short_entries": 5578,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":48,\"reclaim_bars\":2,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":48}",
+    "net_total_return": -0.999999999999931,
+    "net_annualized_return": -0.9913886297388445,
+    "net_max_drawdown": 0.9999999999999326,
+    "net_calmar": -0.9913886297389113,
+    "win_rate": 0.40275512053652346,
+    "payoff_ratio": 1.165918535846566,
+    "profit_factor": 0.7862430915481244,
+    "risk_reward_ratio": -0.9999999999999984,
+    "trades": 11034,
+    "trades_per_month": 144.26177246248977,
+    "worst_month": "2024-08",
+    "worst_month_return": -0.616758081870902,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "Donchian false breakout",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "donchian-false-l48-r4-sl0.006-tp0.009",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 5456,
+    "short_entries": 5578,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"lookback\":48,\"reclaim_bars\":4,\"stop_loss_pct\":0.006,\"take_profit_pct\":0.009,\"max_hold_bars\":48}",
+    "net_total_return": -0.999999999999931,
+    "net_annualized_return": -0.9913886297388445,
+    "net_max_drawdown": 0.9999999999999326,
+    "net_calmar": -0.9913886297389113,
+    "win_rate": 0.40275512053652346,
+    "payoff_ratio": 1.165918535846566,
+    "profit_factor": 0.7862430915481244,
+    "risk_reward_ratio": -0.9999999999999984,
+    "trades": 11034,
+    "trades_per_month": 144.26177246248977,
+    "worst_month": "2024-08",
+    "worst_month_return": -0.616758081870902,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "VWAP reversion",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "vwap-reversion-w96-z2-sl0.006",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 3672,
+    "short_entries": 3830,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"window\":96,\"entry_z\":2.0,\"exit_z\":0.25,\"stop_loss_pct\":0.006,\"max_hold_bars\":96}",
+    "net_total_return": -0.9999999999999462,
+    "net_annualized_return": -0.9917161928916075,
+    "net_max_drawdown": 0.9999999999999541,
+    "net_calmar": -0.991716192891653,
+    "win_rate": 0.27366035723806986,
+    "payoff_ratio": 2.0074096552503207,
+    "profit_factor": 0.7563244672837051,
+    "risk_reward_ratio": -0.999999999999992,
+    "trades": 7502,
+    "trades_per_month": 98.08336206394765,
+    "worst_month": "2021-01",
+    "worst_month_return": -0.7367179353337692,
+    "candidate_tier": "nonpositive_10pm"
+  },
+  {
+    "family": "VWAP reversion",
+    "symbol": "BTC-USDT-SWAP",
+    "bar": "15m",
+    "name": "vwap-reversion-w48-z2-sl0.006",
+    "first_candle": "2019-12-16 06:00",
+    "last_candle": "2026-04-29 16:45",
+    "years": 6.373829908675798,
+    "directly_liveable": true,
+    "needs_synthetic_bookkeeping": false,
+    "supports_short": true,
+    "long_entries": 4836,
+    "short_entries": 5126,
+    "order_intent": "single_symbol_long_short_entry_exit",
+    "params_json": "{\"window\":48,\"entry_z\":2.0,\"exit_z\":0.25,\"stop_loss_pct\":0.006,\"max_hold_bars\":48}",
+    "net_total_return": -0.9999999999999736,
+    "net_annualized_return": -0.9925915963258162,
+    "net_max_drawdown": 0.9999999999999749,
+    "net_calmar": -0.992591596325841,
+    "win_rate": 0.35896406344107606,
+    "payoff_ratio": 1.398751800707077,
+    "profit_factor": 0.7832659629390083,
+    "risk_reward_ratio": -0.9999999999999987,
+    "trades": 9962,
+    "trades_per_month": 130.2461280833173,
+    "worst_month": "2021-01",
+    "worst_month_return": -0.6657587927725409,
+    "candidate_tier": "nonpositive_10pm"
+  }
+]

+ 47 - 0
reports/ultrashort/executable-bidir-total.csv

@@ -0,0 +1,47 @@
+family,symbol,bar,name,first_candle,last_candle,years,directly_liveable,needs_synthetic_bookkeeping,supports_short,long_entries,short_entries,order_intent,params_json,net_total_return,net_annualized_return,net_max_drawdown,net_calmar,win_rate,payoff_ratio,profit_factor,risk_reward_ratio,trades,trades_per_month,worst_month,worst_month_return,candidate_tier
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,172,72,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",0.5307837585122177,0.06935231554835952,0.33904304936044405,0.20455312586169425,0.5327868852459017,1.012518952741183,1.154626875932928,1.565534994784482,244,3.202157303370786,2022-11,-0.12234878289923146,positive_sub10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,138,103,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":96}",0.19046805249684806,0.027731040643869775,0.27052815261333985,0.10250704178468688,0.5809128630705395,0.7855668050547545,1.0889044822541154,0.7040600050564054,241,3.150905126287841,2024-01,-0.1378237075608011,positive_sub10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1618,1618,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",-0.5443478551734786,-0.1164309052061161,0.994124029246173,-0.11711909357467562,0.2388751545117429,3.5514682500004384,1.1146102140683471,-0.5475653330563272,3236,42.46795505617977,2021-01,-0.6885474755689496,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f21-s89-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,1663,1663,single_symbol_long_short_entry_exit,"{""fast"":21,""slow"":89,""stop_loss_pct"":0.01}",-0.881902159384352,-0.28477512515829706,0.9860841118090515,-0.28879394946933473,0.24533974744437764,3.2886346302331835,1.069133808075808,-0.8943478034205731,3326,43.48510560179817,2022-01,-0.5610117828271657,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,714,570,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",-0.9600824831133907,-0.3966985239074312,0.9634003826612205,-0.4117691159843873,0.544392523364486,0.7041742996742577,0.8413980093543695,-0.9965560533216058,1284,16.787394946695386,2025-12,-0.19072871016726123,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,901,683,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9727337073756209,-0.43171922261159335,0.9745262373680516,-0.44300420661588097,0.4621212121212121,0.9367097109219714,0.8047787657216938,-0.998160613923262,1584,20.709683485642906,2020-05,-0.21534435469933366,nonpositive_10pm
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.01-tp0.015,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,795,544,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.01,""take_profit_pct"":0.015,""max_hold_bars"":48}",-0.9894634747305636,-0.5117883170864241,0.9900404060207642,-0.5169367977044872,0.4764749813293503,0.9021549757423155,0.8210768538139762,-0.9994172649048544,1339,17.57249438202247,2022-08,-0.334308570397455,nonpositive_10pm
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l48-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,1070,686,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":48,""stdev_mult"":2.0,""atr_length"":48,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9937311588381679,-0.5501226581046461,0.9937970963459449,-0.5535563145911488,0.4151480637813212,1.0887947936092808,0.7728640745288858,-0.9999336509353675,1756,23.045033707865166,2022-08,-0.37972154382401724,nonpositive_10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,2688,2688,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",-0.9999624333387679,-0.7990416800708078,0.999964842594045,-0.7990697732912138,0.25167410714285715,2.9389956401513535,0.9884317924744671,-0.9999975906600168,5376,70.55244943820225,2025-11,-0.5522329325712911,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f13-s55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,2787,2787,single_symbol_long_short_entry_exit,"{""fast"":13,""slow"":55,""stop_loss_pct"":0.01}",-0.9999831696216224,-0.8217561683212675,0.9999905486939551,-0.8217639350637145,0.25905992106207393,2.711937924886784,0.9481933083623525,-0.9999926208579247,5574,72.87612105364492,2022-01,-0.6330994016653446,nonpositive_10pm
+MA cross both,ETH-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4402,4402,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",-0.9999998456470421,-0.9154125552308765,0.9999999131297375,-0.9154126347530124,0.26351658337119493,2.6953995143090155,0.9644242555824979,-0.9999999325172988,8804,115.54013483146066,2022-09,-0.6467650097054145,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3506,3730,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999966090639,-0.9530993581503862,0.9999999966827124,-0.9530993613120908,0.39441680486456604,1.2247168843179286,0.7976590570158302,-0.9999999999263515,7236,94.60559955941417,2024-08,-0.5563608272795834,nonpositive_10pm
+MA cross both,BTC-USDT-SWAP,15m,ma-cross-both-f8-s34-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4562,4563,single_symbol_long_short_entry_exit,"{""fast"":8,""slow"":34,""stop_loss_pct"":0.01}",-0.9999999986109543,-0.9592275188214064,0.9999999989462685,-0.9592275198321747,0.2631232876712329,2.488091668227145,0.8884455823041902,-0.9999999996646859,9125,119.30294305965373,2021-01,-0.6943508554922505,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l96-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,3722,4482,single_symbol_long_short_entry_exit,"{""lookback"":96,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.9999999999227114,-0.9744407194762232,0.9999999999247124,-0.9744407195495864,0.3896879570941004,1.2346028169941978,0.7883014191992113,-0.9999999999979989,8204,107.66597752808987,2021-05,-0.7315056872336693,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902,nonpositive_10pm
+Donchian false breakout,BTC-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5456,5578,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.999999999999931,-0.9913886297388445,0.9999999999999326,-0.9913886297389113,0.40275512053652346,1.165918535846566,0.7862430915481244,-0.9999999999999984,11034,144.26177246248977,2024-08,-0.616758081870902,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,3672,3830,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-0.9999999999999462,-0.9917161928916075,0.9999999999999541,-0.991716192891653,0.27366035723806986,2.0074096552503207,0.7563244672837051,-0.999999999999992,7502,98.08336206394765,2021-01,-0.7367179353337692,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,4836,5126,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-0.9999999999999736,-0.9925915963258162,0.9999999999999749,-0.992591596325841,0.35896406344107606,1.398751800707077,0.7832659629390083,-0.9999999999999987,9962,130.2461280833173,2021-01,-0.6657587927725409,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r2-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":2,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853,nonpositive_10pm
+Donchian false breakout,ETH-USDT-SWAP,15m,donchian-false-l48-r4-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5892,6509,single_symbol_long_short_entry_exit,"{""lookback"":48,""reclaim_bars"":4,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":48}",-0.9999999999999997,-0.9963477578438725,0.9999999999999997,-0.9963477578438729,0.3917426014031127,1.2147856166174233,0.7823715399081854,-1.0,12401,162.74570786516853,2021-05,-0.7644632298557853,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17938,16319,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5233674869369764,0.6810152582131297,0.747790455934787,-1.0,34257,449.575011235955,2021-03,-0.7872707532503879,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16958,15736,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5217471095613874,0.6992235061058377,0.7628136714730993,-1.0,32694,429.0628314606741,2021-03,-0.7781393899140645,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,17004,15507,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5259450647473163,0.6780172174410011,0.7522330911642666,-1.0,32511,426.661213483146,2021-03,-0.7785073750404788,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,16709,15048,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5032906130931764,0.6579566146990428,0.6666743104307594,-1.0,31757,415.2003904378546,2022-05,-0.7936275744261018,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16042,14948,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5251694094869312,0.6981945011707055,0.7722130823345724,-1.0,30990,406.7002247191011,2021-03,-0.7646142773662596,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,16096,14561,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5543595263724435,0.6116596654313629,0.7608809847757291,-1.0,30657,402.3300674157303,2021-03,-0.7564858862760676,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15839,14536,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5003456790123457,0.6722613301925932,0.6731915198172913,-1.0,30375,397.1317145684364,2024-04,-0.7464477960005055,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15849,14315,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5057353136188835,0.6524949567837527,0.6676377064683177,-1.0,30164,394.37303829604326,2022-05,-0.769752670034696,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15341,14184,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5497036409822185,0.6376320093746091,0.7783954503309444,-1.0,29525,387.47415730337076,2021-03,-0.7409590023510295,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,15299,13880,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5573186195551595,0.6094336779515712,0.7672532686264962,-1.0,29179,382.9333932584269,2021-03,-0.7634768722429255,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15409,13840,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5167356148928168,0.6351024539456328,0.6790900947247468,-1.0,29249,382.41005825225335,2022-05,-0.7936384699852795,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,15023,13808,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5030696125698033,0.6664835144678734,0.6747174491409251,-1.0,28831,376.94500288798645,2024-04,-0.7338178023350337,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e10-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14766,13506,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":10.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5127688172043011,0.6486004374006368,0.6825960465333598,-1.0,28272,369.63647191041423,2024-04,-0.7319389969178521,nonpositive_10pm
+RSI2 both,ETH-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,14564,13513,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5536560173807743,0.6354098400094029,0.7881779415054396,-1.0,28077,368.47119101123593,2021-03,-0.7472872685915312,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t192-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14665,13204,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5198966593706269,0.6313160069278104,0.6836425728233965,-1.0,27869,364.36753097309474,2022-05,-0.7691949653096348,nonpositive_10pm
+RSI2 both,BTC-USDT-SWAP,15m,rsi2-both-t96-e5-x55-sl0.01,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,14041,12869,single_symbol_long_short_entry_exit,"{""trend_sma"":96,""entry_rsi"":5.0,""exit_rsi"":55.0,""stop_loss_pct"":0.01,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.5157562244518766,0.6429913752178401,0.6848344176692811,-1.0,26910,351.8292819435925,2024-04,-0.7123335109662512,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,9005,9186,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.3057555934253202,1.7603310487213417,0.7752760545560301,-1.0,18191,238.7313258426966,2021-05,-0.8734680824201303,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w48-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,7662,7679,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.37305260413271624,1.313519889175563,0.781583939046761,-1.0,15341,200.57276158664632,2021-01,-0.8714999656351985,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,6743,6700,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.22673510377147957,2.631114463800068,0.7714898398905826,-1.0,13443,176.42049438202244,2021-05,-0.9055011061344436,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w48-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,5691,5963,single_symbol_long_short_entry_exit,"{""window"":48,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":48}",-1.0,-1.0,1.0,-1.0,0.2929466277672902,1.8273326380505852,0.7571011682408613,-1.0,11654,152.9423820224719,2022-06,-0.8222826995621771,nonpositive_10pm
+VWAP reversion,BTC-USDT-SWAP,15m,vwap-reversion-w96-z1.5-sl0.006,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,5539,5563,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":1.5,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.28562421185372006,1.915356858330902,0.7658046397386572,-1.0,11102,145.15082453131788,2021-01,-0.7824457070474309,nonpositive_10pm
+VWAP reversion,ETH-USDT-SWAP,15m,vwap-reversion-w96-z2-sl0.006,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,4373,4575,single_symbol_long_short_entry_exit,"{""window"":96,""entry_z"":2.0,""exit_z"":0.25,""stop_loss_pct"":0.006,""max_hold_bars"":96}",-1.0,-1.0,1.0,-1.0,0.2127849798837729,2.7805884434719967,0.7515957405409827,-1.0,8948,117.42993258426965,2021-05,-0.8489376796192458,nonpositive_10pm
+BBMR risk-filtered,BTC-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-16 06:00,2026-04-29 16:45,6.373829908675798,True,False,True,166,127,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.12607703313859508,-0.020921231925947303,0.3459093706237499,-0.06048183051017603,0.4880546075085324,1.0235813142830186,0.9758141862831443,-0.3644799587569737,293,3.830768473038744,2024-01,-0.12876451748306117,other
+BBMR risk-filtered,ETH-USDT-SWAP,15m,bbmr-risk-t192-l96-atr0.01-sl0.006-tp0.009,2019-12-25 00:00,2026-04-29 17:00,6.349885844748859,True,False,True,218,87,single_symbol_long_short_entry_exit,"{""trend_sma"":192,""band_length"":96,""stdev_mult"":2.0,""atr_length"":96,""max_atr_pct"":0.01,""stop_loss_pct"":0.006,""take_profit_pct"":0.009,""max_hold_bars"":96}",-0.3400096016156269,-0.06334379125039735,0.5368632068782602,-0.11798869886935887,0.4426229508196721,1.1322888182235562,0.8991705321187065,-0.6333263245822095,305,4.0026966292134825,2023-02,-0.10235315571160597,other

+ 633 - 0
scripts/search_executable_bidir_variants.py

@@ -0,0 +1,633 @@
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from dataclasses import dataclass
+from pathlib import Path
+from typing import Callable
+
+import pandas as pd
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+from okx_codex_trader.models import Candle
+
+
+DATA_DIR = Path("data/okx-candles")
+OUTPUT_DIR = Path("reports/ultrashort")
+SYMBOLS = ("ETH-USDT-SWAP", "BTC-USDT-SWAP")
+BARS = ("15m",)
+INITIAL_EQUITY = 10_000.0
+LEVERAGE = 3
+ROUNDTRIP_COST = 0.0021
+HORIZONS = (
+    ("full", None),
+    ("3y", pd.DateOffset(years=3)),
+    ("1y", pd.DateOffset(years=1)),
+    ("6m", pd.DateOffset(months=6)),
+    ("3m", pd.DateOffset(months=3)),
+)
+
+
+@dataclass(frozen=True)
+class Strategy:
+    family: str
+    name: str
+    warmup_bars: int
+    params: dict[str, object]
+    build_signals: Callable[[list[Candle]], tuple[list[str | None], list[str | None], list[float | None], list[float | None]]]
+
+
+@dataclass(frozen=True)
+class BacktestResult:
+    trades: list[dict[str, object]]
+    equity: pd.DataFrame
+    long_entries: int
+    short_entries: int
+
+
+def load_candles(symbol: str, bar: str) -> list[Candle]:
+    frame = pd.read_csv(DATA_DIR / symbol / f"{bar}.csv")
+    return [
+        Candle(
+            symbol=symbol,
+            ts=int(row.ts),
+            open=float(row.open),
+            high=float(row.high),
+            low=float(row.low),
+            close=float(row.close),
+            volume=float(row.volume),
+        )
+        for row in frame.itertuples(index=False)
+    ]
+
+
+def format_ts(ts: int) -> str:
+    return pd.to_datetime(ts, unit="ms", utc=True).strftime("%Y-%m-%d %H:%M")
+
+
+def rsi(values: pd.Series, length: int) -> pd.Series:
+    delta = values.diff()
+    gain = delta.clip(lower=0).rolling(length).mean()
+    loss = (-delta.clip(upper=0)).rolling(length).mean()
+    rs = gain / loss
+    return 100.0 - (100.0 / (1.0 + rs))
+
+
+def crossing_up(left: pd.Series, right: pd.Series) -> pd.Series:
+    return (left.shift(1) <= right.shift(1)) & (left > right)
+
+
+def crossing_down(left: pd.Series, right: pd.Series) -> pd.Series:
+    return (left.shift(1) >= right.shift(1)) & (left < right)
+
+
+def build_rsi2_signals(
+    candles: list[Candle],
+    *,
+    trend_sma: int,
+    entry_rsi: float,
+    exit_rsi: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    close = pd.Series([candle.close for candle in candles], dtype=float)
+    trend = close.rolling(trend_sma).mean()
+    rsi2 = rsi(close, 2)
+    entries: list[str | None] = [None] * len(candles)
+    exits: list[str | None] = [None] * len(candles)
+    stops: list[float | None] = [stop_loss_pct] * len(candles)
+    takes: list[float | None] = [None] * len(candles)
+    for index, candle in enumerate(candles):
+        if trend.iloc[index] != trend.iloc[index] or rsi2.iloc[index] != rsi2.iloc[index]:
+            continue
+        if candle.close > float(trend.iloc[index]) and float(rsi2.iloc[index]) <= entry_rsi:
+            entries[index] = "long"
+        elif candle.close < float(trend.iloc[index]) and float(rsi2.iloc[index]) >= 100.0 - entry_rsi:
+            entries[index] = "short"
+        if float(rsi2.iloc[index]) >= exit_rsi:
+            exits[index] = "long"
+        elif float(rsi2.iloc[index]) <= 100.0 - exit_rsi:
+            exits[index] = "short"
+    return with_max_hold(entries, exits, stops, takes, max_hold_bars)
+
+
+def build_ma_cross_signals(
+    candles: list[Candle],
+    *,
+    fast: int,
+    slow: int,
+    stop_loss_pct: float,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    close = pd.Series([candle.close for candle in candles], dtype=float)
+    fast_ma = close.rolling(fast).mean()
+    slow_ma = close.rolling(slow).mean()
+    entries: list[str | None] = [None] * len(candles)
+    exits: list[str | None] = [None] * len(candles)
+    stops: list[float | None] = [stop_loss_pct] * len(candles)
+    takes: list[float | None] = [None] * len(candles)
+    up = crossing_up(fast_ma, slow_ma)
+    down = crossing_down(fast_ma, slow_ma)
+    for index in range(len(candles)):
+        if up.iloc[index]:
+            entries[index] = "long"
+            exits[index] = "both"
+        elif down.iloc[index]:
+            entries[index] = "short"
+            exits[index] = "both"
+    return entries, exits, stops, takes
+
+
+def build_vwap_reversion_signals(
+    candles: list[Candle],
+    *,
+    window: int,
+    entry_z: float,
+    exit_z: float,
+    stop_loss_pct: float,
+    max_hold_bars: int,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    close = pd.Series([candle.close for candle in candles], dtype=float)
+    volume = pd.Series([candle.volume for candle in candles], dtype=float)
+    vwap = (close * volume).rolling(window).sum() / volume.rolling(window).sum()
+    stdev = close.rolling(window).std(ddof=0)
+    z = (close - vwap) / stdev
+    entries: list[str | None] = [None] * len(candles)
+    exits: list[str | None] = [None] * len(candles)
+    stops: list[float | None] = [stop_loss_pct] * len(candles)
+    takes: list[float | None] = [None] * len(candles)
+    for index in range(len(candles)):
+        if z.iloc[index] != z.iloc[index]:
+            continue
+        if float(z.iloc[index]) <= -entry_z:
+            entries[index] = "long"
+        elif float(z.iloc[index]) >= entry_z:
+            entries[index] = "short"
+        if abs(float(z.iloc[index])) <= exit_z:
+            exits[index] = "both"
+    return with_max_hold(entries, exits, stops, takes, max_hold_bars)
+
+
+def build_bbmr_signals(
+    candles: list[Candle],
+    *,
+    trend_sma: int,
+    band_length: int,
+    stdev_mult: float,
+    atr_length: int,
+    max_atr_pct: float,
+    stop_loss_pct: float,
+    take_profit_pct: float,
+    max_hold_bars: int,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    close = pd.Series([candle.close for candle in candles], dtype=float)
+    high = pd.Series([candle.high for candle in candles], dtype=float)
+    low = pd.Series([candle.low for candle in candles], dtype=float)
+    trend = close.rolling(trend_sma).mean()
+    middle = close.rolling(band_length).mean()
+    stdev = close.rolling(band_length).std(ddof=0)
+    upper = middle + stdev_mult * stdev
+    lower = middle - stdev_mult * stdev
+    true_range = pd.concat([(high - low), (high - close.shift(1)).abs(), (low - close.shift(1)).abs()], axis=1).max(axis=1)
+    atr_pct = true_range.rolling(atr_length).mean() / close
+    entries: list[str | None] = [None] * len(candles)
+    exits: list[str | None] = [None] * len(candles)
+    stops: list[float | None] = [stop_loss_pct] * len(candles)
+    takes: list[float | None] = [take_profit_pct] * len(candles)
+    for index, candle in enumerate(candles):
+        values = (trend.iloc[index], middle.iloc[index], upper.iloc[index], lower.iloc[index], atr_pct.iloc[index])
+        if any(value != value for value in values):
+            continue
+        if float(atr_pct.iloc[index]) > max_atr_pct:
+            continue
+        if candle.close > float(trend.iloc[index]) and candle.close <= float(lower.iloc[index]):
+            entries[index] = "long"
+        elif candle.close < float(trend.iloc[index]) and candle.close >= float(upper.iloc[index]):
+            entries[index] = "short"
+        if candle.close >= float(middle.iloc[index]):
+            exits[index] = "long"
+        elif candle.close <= float(middle.iloc[index]):
+            exits[index] = "short"
+    return with_max_hold(entries, exits, stops, takes, max_hold_bars)
+
+
+def build_donchian_false_breakout_signals(
+    candles: list[Candle],
+    *,
+    lookback: int,
+    reclaim_bars: int,
+    stop_loss_pct: float,
+    take_profit_pct: float,
+    max_hold_bars: int,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    close = pd.Series([candle.close for candle in candles], dtype=float)
+    high = pd.Series([candle.high for candle in candles], dtype=float)
+    low = pd.Series([candle.low for candle in candles], dtype=float)
+    prior_high = high.shift(1).rolling(lookback).max()
+    prior_low = low.shift(1).rolling(lookback).min()
+    entries: list[str | None] = [None] * len(candles)
+    exits: list[str | None] = [None] * len(candles)
+    stops: list[float | None] = [stop_loss_pct] * len(candles)
+    takes: list[float | None] = [take_profit_pct] * len(candles)
+    broke_high_at: int | None = None
+    broke_low_at: int | None = None
+    for index, candle in enumerate(candles):
+        if prior_high.iloc[index] != prior_high.iloc[index] or prior_low.iloc[index] != prior_low.iloc[index]:
+            continue
+        if candle.high > float(prior_high.iloc[index]):
+            broke_high_at = index
+        if candle.low < float(prior_low.iloc[index]):
+            broke_low_at = index
+        if broke_high_at is not None and index - broke_high_at <= reclaim_bars and candle.close < float(prior_high.iloc[index]):
+            entries[index] = "short"
+            broke_high_at = None
+        if broke_low_at is not None and index - broke_low_at <= reclaim_bars and candle.close > float(prior_low.iloc[index]):
+            entries[index] = "long"
+            broke_low_at = None
+        if broke_high_at is not None and index - broke_high_at > reclaim_bars:
+            broke_high_at = None
+        if broke_low_at is not None and index - broke_low_at > reclaim_bars:
+            broke_low_at = None
+    return with_max_hold(entries, exits, stops, takes, max_hold_bars)
+
+
+def with_max_hold(
+    entries: list[str | None],
+    exits: list[str | None],
+    stops: list[float | None],
+    takes: list[float | None],
+    max_hold_bars: int,
+) -> tuple[list[str | None], list[str | None], list[float | None], list[float | None]]:
+    return entries, exits, stops, takes
+
+
+def exit_equity(side: str, margin: float, entry_price: float, exit_price: float) -> float:
+    if side == "long":
+        price_return = exit_price / entry_price - 1.0
+    else:
+        price_return = (entry_price - exit_price) / entry_price
+    return margin * (1.0 + LEVERAGE * price_return)
+
+
+def run_strategy(candles: list[Candle], strategy: Strategy) -> BacktestResult:
+    entries, exits, stops, takes = strategy.build_signals(candles)
+    trades: list[dict[str, object]] = []
+    equity_points: list[dict[str, object]] = [{"ts": pd.to_datetime(candles[0].ts, unit="ms", utc=True), "equity": INITIAL_EQUITY}]
+    equity = INITIAL_EQUITY
+    position: dict[str, object] | None = None
+    pending_entry: str | None = None
+    pending_exit = False
+    long_entries = 0
+    short_entries = 0
+
+    for index in range(strategy.warmup_bars, len(candles)):
+        candle = candles[index]
+        if pending_exit and position is not None:
+            equity = close_position(trades, position, candle.ts, candle.open, "signal")
+            position = None
+            pending_exit = False
+            equity_points.append({"ts": pd.to_datetime(candle.ts, unit="ms", utc=True), "equity": equity})
+        if pending_entry is not None and position is None and equity > 0.0:
+            position = {
+                "side": pending_entry,
+                "entry_index": index,
+                "entry_ts": candle.ts,
+                "entry_price": candle.open,
+                "margin": equity,
+                "stop_price": candle.open * (1.0 - float(stops[index]) if pending_entry == "long" else 1.0 + float(stops[index]))
+                if stops[index] is not None
+                else None,
+                "take_price": candle.open * (1.0 + float(takes[index]) if pending_entry == "long" else 1.0 - float(takes[index]))
+                if takes[index] is not None
+                else None,
+            }
+            long_entries += 1 if pending_entry == "long" else 0
+            short_entries += 1 if pending_entry == "short" else 0
+            pending_entry = None
+
+        if position is not None:
+            side = str(position["side"])
+            stop_price = position["stop_price"]
+            take_price = position["take_price"]
+            stop_hit = stop_price is not None and (
+                (side == "long" and candle.low <= float(stop_price)) or (side == "short" and candle.high >= float(stop_price))
+            )
+            take_hit = take_price is not None and (
+                (side == "long" and candle.high >= float(take_price)) or (side == "short" and candle.low <= float(take_price))
+            )
+            if stop_hit or take_hit:
+                exit_price = float(stop_price if stop_hit else take_price)
+                equity = close_position(trades, position, candle.ts, exit_price, "stop" if stop_hit else "take_profit")
+                position = None
+                equity_points.append({"ts": pd.to_datetime(candle.ts, unit="ms", utc=True), "equity": equity})
+
+        if index == len(candles) - 1 or equity <= 0.0:
+            continue
+        entry_side = entries[index]
+        if position is not None:
+            max_hold = int(strategy.params.get("max_hold_bars", 0) or 0)
+            reverse = entry_side is not None and entry_side != position["side"]
+            stale = max_hold > 0 and index - int(position["entry_index"]) >= max_hold
+            exit_signal = exits[index] in ("both", position["side"])
+            if exit_signal or reverse or stale:
+                pending_exit = True
+                pending_entry = entry_side if reverse else None
+            continue
+        if entry_side is not None:
+            pending_entry = entry_side
+
+    if position is not None:
+        equity = close_position(trades, position, candles[-1].ts, candles[-1].close, "final")
+        equity_points.append({"ts": pd.to_datetime(candles[-1].ts, unit="ms", utc=True), "equity": equity})
+
+    return BacktestResult(trades=trades, equity=pd.DataFrame(equity_points), long_entries=long_entries, short_entries=short_entries)
+
+
+def close_position(
+    trades: list[dict[str, object]],
+    position: dict[str, object],
+    exit_ts: int,
+    exit_price: float,
+    reason: str,
+) -> float:
+    margin = float(position["margin"])
+    gross = exit_equity(str(position["side"]), margin, float(position["entry_price"]), exit_price)
+    net = gross - margin * ROUNDTRIP_COST
+    pnl = net - margin
+    trades.append(
+        {
+            "side": str(position["side"]),
+            "entry_time": format_ts(int(position["entry_ts"])),
+            "exit_time": format_ts(exit_ts),
+            "entry_ts": int(position["entry_ts"]),
+            "exit_ts": exit_ts,
+            "entry_price": float(position["entry_price"]),
+            "exit_price": exit_price,
+            "return": pnl / margin,
+            "pnl": pnl,
+            "exit_reason": reason,
+        }
+    )
+    return net
+
+
+def max_drawdown(values: list[float]) -> float:
+    peak = values[0]
+    drawdown = 0.0
+    for value in values:
+        peak = max(peak, value)
+        drawdown = max(drawdown, (peak - value) / peak if peak > 0.0 else 0.0)
+    return drawdown
+
+
+def metrics_for(equity: pd.DataFrame, trades: list[dict[str, object]], first_ts: int, last_ts: int) -> dict[str, object]:
+    years = (last_ts - first_ts) / 86_400_000 / 365
+    total_return = float(equity["equity"].iloc[-1] / equity["equity"].iloc[0] - 1.0)
+    annualized = (1.0 + total_return) ** (1.0 / years) - 1.0 if total_return > -1.0 and years > 0.0 else -1.0
+    dd = max_drawdown([float(value) for value in equity["equity"]])
+    wins = [float(trade["return"]) for trade in trades if float(trade["return"]) > 0.0]
+    losses = [float(trade["return"]) for trade in trades if float(trade["return"]) < 0.0]
+    avg_win = sum(wins) / len(wins) if wins else 0.0
+    avg_loss = abs(sum(losses) / len(losses)) if losses else 0.0
+    months = max(years * 12.0, 1.0 / 30.0)
+    worst_month_label, worst_month_return = worst_month(equity)
+    return {
+        "net_total_return": total_return,
+        "net_annualized_return": annualized,
+        "net_max_drawdown": dd,
+        "net_calmar": annualized / dd if dd else 0.0,
+        "win_rate": len(wins) / len(trades) if trades else 0.0,
+        "payoff_ratio": avg_win / avg_loss if avg_loss else 0.0,
+        "profit_factor": sum(wins) / abs(sum(losses)) if losses else 0.0,
+        "risk_reward_ratio": total_return / dd if dd else 0.0,
+        "trades": len(trades),
+        "trades_per_month": len(trades) / months,
+        "worst_month": worst_month_label,
+        "worst_month_return": worst_month_return,
+    }
+
+
+def worst_month(equity: pd.DataFrame) -> tuple[str, float]:
+    monthly = equity.set_index("ts")["equity"].resample("ME").last().ffill().pct_change().dropna()
+    if not len(monthly):
+        return "", 0.0
+    index = monthly.idxmin()
+    return index.strftime("%Y-%m"), float(monthly.loc[index])
+
+
+def horizon_slice(equity: pd.DataFrame, trades: list[dict[str, object]], last_ts: int, offset: pd.DateOffset | None) -> tuple[pd.DataFrame, list[dict[str, object]], int]:
+    if offset is None:
+        return equity.copy(), trades, int(equity["ts"].iloc[0].timestamp() * 1000)
+    cutoff = pd.to_datetime(last_ts, unit="ms", utc=True) - offset
+    before = equity[equity["ts"] <= cutoff]
+    start_equity = float(before["equity"].iloc[-1]) if len(before) else float(equity["equity"].iloc[0])
+    frame = pd.concat(
+        [
+            pd.DataFrame([{"ts": cutoff, "equity": start_equity}]),
+            equity[equity["ts"] > cutoff][["ts", "equity"]],
+        ],
+        ignore_index=True,
+    )
+    return frame, [trade for trade in trades if int(trade["exit_ts"]) >= int(cutoff.timestamp() * 1000)], int(cutoff.timestamp() * 1000)
+
+
+def build_strategies() -> list[Strategy]:
+    strategies: list[Strategy] = []
+    for trend in (96, 192):
+        for entry in (5.0, 10.0):
+            for exit_level in (55.0,):
+                for stop in (0.006, 0.01):
+                    params = {"trend_sma": trend, "entry_rsi": entry, "exit_rsi": exit_level, "stop_loss_pct": stop, "max_hold_bars": 96}
+                    strategies.append(Strategy("RSI2 both", f"rsi2-both-t{trend}-e{entry:g}-x{exit_level:g}-sl{stop:g}", trend, params, lambda c, p=params: build_rsi2_signals(c, **p)))
+    for fast, slow in ((8, 34), (13, 55), (21, 89)):
+        for stop in (0.01,):
+            params = {"fast": fast, "slow": slow, "stop_loss_pct": stop}
+            strategies.append(Strategy("MA cross both", f"ma-cross-both-f{fast}-s{slow}-sl{stop:g}", slow, params, lambda c, p=params: build_ma_cross_signals(c, **p)))
+    for window in (48, 96):
+        for entry_z in (1.5, 2.0):
+            for stop in (0.006,):
+                params = {"window": window, "entry_z": entry_z, "exit_z": 0.25, "stop_loss_pct": stop, "max_hold_bars": window}
+                strategies.append(Strategy("VWAP reversion", f"vwap-reversion-w{window}-z{entry_z:g}-sl{stop:g}", window, params, lambda c, p=params: build_vwap_reversion_signals(c, **p)))
+    for trend in (192,):
+        for length in (48, 96):
+            for max_atr in (0.01,):
+                for stop, take in ((0.006, 0.009), (0.01, 0.015)):
+                    params = {
+                        "trend_sma": trend,
+                        "band_length": length,
+                        "stdev_mult": 2.0,
+                        "atr_length": length,
+                        "max_atr_pct": max_atr,
+                        "stop_loss_pct": stop,
+                        "take_profit_pct": take,
+                        "max_hold_bars": length,
+                    }
+                    strategies.append(Strategy("BBMR risk-filtered", f"bbmr-risk-t{trend}-l{length}-atr{max_atr:g}-sl{stop:g}-tp{take:g}", max(trend, length), params, lambda c, p=params: build_bbmr_signals(c, **p)))
+    for lookback in (48, 96):
+        for reclaim in (2, 4):
+            for stop, take in ((0.006, 0.009),):
+                params = {"lookback": lookback, "reclaim_bars": reclaim, "stop_loss_pct": stop, "take_profit_pct": take, "max_hold_bars": lookback}
+                strategies.append(Strategy("Donchian false breakout", f"donchian-false-l{lookback}-r{reclaim}-sl{stop:g}-tp{take:g}", lookback, params, lambda c, p=params: build_donchian_false_breakout_signals(c, **p)))
+    return strategies
+
+
+def markdown_table(frame: pd.DataFrame) -> str:
+    columns = list(frame.columns)
+    rows = [columns, ["---" for _ in columns]]
+    for record in frame.to_dict("records"):
+        rows.append([record[column] for column in columns])
+    return "\n".join("| " + " | ".join(format_cell(value) for value in row) + " |" for row in rows)
+
+
+def format_cell(value: object) -> str:
+    if isinstance(value, float):
+        return f"{value:.6g}"
+    return str(value).replace("|", "\\|")
+
+
+def write_report(total: pd.DataFrame, horizons: pd.DataFrame, report_files: list[Path], command: str) -> str:
+    executable = total[total["directly_liveable"] & (total["supports_short"]) & (total["trades_per_month"] >= 10.0)]
+    positive_fast = executable[executable["net_total_return"] > 0.0]
+    positive_slow = total[
+        (total["directly_liveable"])
+        & (total["supports_short"])
+        & (~total["needs_synthetic_bookkeeping"])
+        & (total["net_total_return"] > 0.0)
+        & (total["trades_per_month"] < 10.0)
+    ].head(10)
+    top = executable.head(15)
+    family_best = executable.sort_values(["family", "net_calmar", "net_annualized_return"], ascending=[True, False, False]).groupby("family", as_index=False).head(1)
+    lines = [
+        "# Executable bidirectional strategy search",
+        "",
+        f"Run command: `{command}`",
+        "Execution safety: local CSV backtest only; no private API, no order submission, no commit.",
+        f"Cost model: fixed roundtrip cost on margin `{ROUNDTRIP_COST}`; leverage `{LEVERAGE}x`.",
+        "",
+        "Output files:",
+        *[f"- `{path}`" for path in report_files],
+        "",
+        "Eligibility: directly liveable, supports short, no synthetic portfolio bookkeeping, at least 10 trades/month.",
+        f"Decision: positive >=10 trades/month candidates found: `{len(positive_fast)}`.",
+        "",
+        "Top executable candidates:",
+        markdown_table(top[["family", "symbol", "bar", "name", "trades_per_month", "net_total_return", "net_annualized_return", "net_max_drawdown", "net_calmar", "win_rate", "payoff_ratio", "profit_factor", "risk_reward_ratio", "worst_month_return"]]),
+        "",
+        "Family leaders:",
+        markdown_table(family_best[["family", "symbol", "bar", "name", "trades_per_month", "net_calmar", "net_annualized_return", "net_max_drawdown", "profit_factor"]]),
+        "",
+        "Positive but below 10 trades/month:",
+        markdown_table(positive_slow[["family", "symbol", "bar", "name", "trades_per_month", "net_total_return", "net_annualized_return", "net_max_drawdown", "net_calmar", "profit_factor", "worst_month_return"]]),
+        "",
+        "Recent horizon leaders:",
+        markdown_table(
+            horizons[horizons["name"].isin(set(top.head(8)["name"]))]
+            .sort_values(["horizon", "net_calmar", "net_annualized_return"], ascending=[True, False, False])
+            .groupby("horizon", observed=True)
+            .head(5)[["horizon", "family", "symbol", "bar", "name", "trades_per_month", "net_total_return", "net_annualized_return", "net_max_drawdown", "net_calmar", "worst_month_return"]]
+        ),
+    ]
+    return "\n".join(lines) + "\n"
+
+
+def main() -> int:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--output-dir", type=Path, default=OUTPUT_DIR)
+    parser.add_argument("--symbols", nargs="+", default=list(SYMBOLS))
+    parser.add_argument("--bars", nargs="+", default=list(BARS))
+    args = parser.parse_args()
+
+    strategies = build_strategies()
+    total_rows: list[dict[str, object]] = []
+    horizon_rows: list[dict[str, object]] = []
+    for symbol in args.symbols:
+        for bar in args.bars:
+            candles = load_candles(symbol, bar)
+            for index, strategy in enumerate(strategies, start=1):
+                result = run_strategy(candles, strategy)
+                if not len(result.equity):
+                    continue
+                full_metrics = metrics_for(result.equity, result.trades, candles[0].ts, candles[-1].ts)
+                row_base = {
+                    "family": strategy.family,
+                    "symbol": symbol,
+                    "bar": bar,
+                    "name": strategy.name,
+                    "first_candle": format_ts(candles[0].ts),
+                    "last_candle": format_ts(candles[-1].ts),
+                    "years": (candles[-1].ts - candles[0].ts) / 86_400_000 / 365,
+                    "directly_liveable": True,
+                    "needs_synthetic_bookkeeping": False,
+                    "supports_short": result.short_entries > 0,
+                    "long_entries": result.long_entries,
+                    "short_entries": result.short_entries,
+                    "order_intent": "single_symbol_long_short_entry_exit",
+                    "params_json": json.dumps(strategy.params, separators=(",", ":")),
+                }
+                total_rows.append({**row_base, **full_metrics})
+                for horizon, offset in HORIZONS:
+                    frame, trades, start_ts = horizon_slice(result.equity, result.trades, candles[-1].ts, offset)
+                    horizon_rows.append(
+                        {
+                            **row_base,
+                            "horizon": horizon,
+                            "horizon_start": format_ts(start_ts),
+                            "horizon_end": format_ts(candles[-1].ts),
+                            **metrics_for(frame, trades, start_ts, candles[-1].ts),
+                        }
+                    )
+                print(f"done {symbol} {bar} {index}/{len(strategies)} {strategy.family} {strategy.name}")
+
+    total = pd.DataFrame(total_rows).sort_values(
+        ["directly_liveable", "supports_short", "trades_per_month", "net_calmar", "net_annualized_return", "profit_factor"],
+        ascending=[False, False, False, False, False, False],
+    )
+    total["candidate_tier"] = "other"
+    total.loc[
+        (total["directly_liveable"]) & (total["supports_short"]) & (total["trades_per_month"] >= 10.0) & (total["net_total_return"] > 0.0),
+        "candidate_tier",
+    ] = "positive_10pm"
+    total.loc[
+        (total["directly_liveable"]) & (total["supports_short"]) & (total["trades_per_month"] < 10.0) & (total["net_total_return"] > 0.0),
+        "candidate_tier",
+    ] = "positive_sub10pm"
+    total.loc[
+        (total["directly_liveable"]) & (total["supports_short"]) & (total["trades_per_month"] >= 10.0) & (total["net_total_return"] <= 0.0),
+        "candidate_tier",
+    ] = "nonpositive_10pm"
+    total["candidate_tier"] = pd.Categorical(
+        total["candidate_tier"],
+        categories=["positive_10pm", "positive_sub10pm", "nonpositive_10pm", "other"],
+        ordered=True,
+    )
+    executable = total[(total["directly_liveable"]) & (total["supports_short"]) & (total["trades_per_month"] >= 10.0)]
+    executable = executable.sort_values(["net_calmar", "net_annualized_return", "profit_factor"], ascending=[False, False, False])
+    total = total.sort_values(
+        ["candidate_tier", "net_calmar", "net_annualized_return", "trades_per_month", "profit_factor"],
+        ascending=[True, False, False, False, False],
+    ).reset_index(drop=True)
+    horizons = pd.DataFrame(horizon_rows)
+    horizons["horizon"] = pd.Categorical(horizons["horizon"], categories=[label for label, _ in HORIZONS], ordered=True)
+    horizons = horizons.sort_values(["horizon", "net_calmar", "net_annualized_return"], ascending=[True, False, False])
+
+    args.output_dir.mkdir(parents=True, exist_ok=True)
+    total_path = args.output_dir / "executable-bidir-total.csv"
+    horizon_path = args.output_dir / "executable-bidir-horizons.csv"
+    top_path = args.output_dir / "executable-bidir-top.csv"
+    json_path = args.output_dir / "executable-bidir-top.json"
+    report_path = args.output_dir / "executable-bidir-report.md"
+    output_files = [total_path, horizon_path, top_path, json_path, report_path]
+
+    total.to_csv(total_path, index=False)
+    horizons.to_csv(horizon_path, index=False)
+    total.head(50).to_csv(top_path, index=False)
+    json_path.write_text(json.dumps(total.head(20).to_dict("records"), indent=2), encoding="utf-8")
+    command = f"rtk .venv/bin/python {Path(__file__).as_posix()} --symbols {' '.join(args.symbols)} --bars {' '.join(args.bars)}"
+    report_path.write_text(write_report(total, horizons, output_files, command), encoding="utf-8")
+    print(total.head(20).to_string(index=False))
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())