Ver Fonte

Add recent strategy activity diagnostics

lxy há 2 semanas atrás
pai
commit
e4df75f8d9

+ 15 - 0
reports/eth-exploration/current-strategy-recent-activity-report.md

@@ -0,0 +1,15 @@
+# Current Strategy Recent Activity
+
+Scope: current live BB squeeze, selected T-gated BB squeeze observer, and crash-follow short observer.
+
+| strategy | window_days | total_return | trades | last_candle | reentry_entries_full | max_drawdown | profit_factor | win_rate |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| live_bb_squeeze_mxbuf0.0005 | 30 | 4.60% | 21 | 2026-05-19T07:45:00+00:00 |  |  |  |  |
+| live_bb_squeeze_mxbuf0.0005 | 14 | -4.04% | 11 | 2026-05-19T07:45:00+00:00 |  |  |  |  |
+| live_bb_squeeze_mxbuf0.0005 | 7 | 3.36% | 5 | 2026-05-19T07:45:00+00:00 |  |  |  |  |
+| bb_squeeze_t_gated_tre96 | 30 | -10.22% | 0 | 2026-05-19T07:45:00+00:00 | 32.0 |  |  |  |
+| bb_squeeze_t_gated_tre96 | 14 | -9.32% | 0 | 2026-05-19T07:45:00+00:00 | 32.0 |  |  |  |
+| bb_squeeze_t_gated_tre96 | 7 | -9.32% | 0 | 2026-05-19T07:45:00+00:00 | 32.0 |  |  |  |
+| crash_follow_short | 30 | 0.00% | 0 | 2026-05-19T00:00:00+00:00 |  | 0.00% | 0.000 | 0.00% |
+| crash_follow_short | 14 | 0.00% | 0 | 2026-05-19T00:00:00+00:00 |  | 0.00% | 0.000 | 0.00% |
+| crash_follow_short | 7 | 0.00% | 0 | 2026-05-19T00:00:00+00:00 |  | 0.00% | 0.000 | 0.00% |

+ 10 - 0
reports/eth-exploration/current-strategy-recent-activity.csv

@@ -0,0 +1,10 @@
+strategy,window_days,total_return,trades,last_candle,reentry_entries_full,max_drawdown,profit_factor,win_rate
+live_bb_squeeze_mxbuf0.0005,30,0.04599530586268963,21,2026-05-19T07:45:00+00:00,,,,
+live_bb_squeeze_mxbuf0.0005,14,-0.04043563931842753,11,2026-05-19T07:45:00+00:00,,,,
+live_bb_squeeze_mxbuf0.0005,7,0.03362544576375481,5,2026-05-19T07:45:00+00:00,,,,
+bb_squeeze_t_gated_tre96,30,-0.10223785436994537,0,2026-05-19T07:45:00+00:00,32.0,,,
+bb_squeeze_t_gated_tre96,14,-0.09324184616099995,0,2026-05-19T07:45:00+00:00,32.0,,,
+bb_squeeze_t_gated_tre96,7,-0.09324184616099995,0,2026-05-19T07:45:00+00:00,32.0,,,
+crash_follow_short,30,0.0,0,2026-05-19T00:00:00+00:00,,0.0,0.0,0.0
+crash_follow_short,14,0.0,0,2026-05-19T00:00:00+00:00,,0.0,0.0,0.0
+crash_follow_short,7,0.0,0,2026-05-19T00:00:00+00:00,,0.0,0.0,0.0

+ 49 - 0
reports/eth-exploration/eth-filtered-recent-short-bidir-candidates.csv

@@ -0,0 +1,49 @@
+symbol,bar,family,name,params_json,first_time,last_time,full_total_return,full_annualized_return,full_max_drawdown,full_calmar,full_trades,full_short_trades,full_long_trades,full_profit_factor,full_win_rate,3y_total_return,3y_annualized_return,3y_max_drawdown,3y_calmar,3y_trades,3y_short_trades,3y_long_trades,3y_profit_factor,3y_win_rate,1y_total_return,1y_annualized_return,1y_max_drawdown,1y_calmar,1y_trades,1y_short_trades,1y_long_trades,1y_profit_factor,1y_win_rate,3m_total_return,3m_annualized_return,3m_max_drawdown,3m_calmar,3m_trades,3m_short_trades,3m_long_trades,3m_profit_factor,3m_win_rate,1m_total_return,1m_annualized_return,1m_max_drawdown,1m_calmar,1m_trades,1m_short_trades,1m_long_trades,1m_profit_factor,1m_win_rate,2w_total_return,2w_annualized_return,2w_max_drawdown,2w_calmar,2w_trades,2w_short_trades,2w_long_trades,2w_profit_factor,2w_win_rate,recent_trigger_score,readonly_observe
+ETH-USDT-SWAP,15m,range_breakout_bidir,range_breakout_bidir-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-05-25 17:45,2026-05-19 07:45,-0.9695495906035988,-0.6895310322332573,0.977111590077831,-0.7056829938721055,1585,812,773,0.8928992074297134,0.3583596214511041,-0.9695495906035988,-0.6895310322332573,0.977111590077831,-0.7056829938721055,1585,812,773,0.8928992074297134,0.3583596214511041,-0.6194594706190417,-0.6194594706190417,0.6611325817365341,-0.9369670891002927,558,291,267,0.9276157352547594,0.3727598566308244,-0.10691599727983458,-0.3710685757912928,0.33364704386747673,-1.1121590393550131,116,52,64,0.967782326242007,0.3879310344827586,-0.17505528396464987,-0.9038013562909281,0.22858465898899846,-3.953902069755377,32,20,12,0.473465228182811,0.3125,-0.12105579247050702,-0.9654067588790456,0.12105579247050696,-7.974891074413059,15,10,5,0.16805531573205545,0.13333333333333333,240,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatenone,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.9645563890997202,-0.6733301271944585,0.9672932650297306,-0.6960971936197272,971,971,0,0.8125479099355702,0.3707518022657055,-0.9645563890997202,-0.6733301271944585,0.9672932650297306,-0.6960971936197272,971,971,0,0.8125479099355702,0.3707518022657055,-0.7132460933795325,-0.7132460933795325,0.7614268545510585,-0.9367230602866855,338,338,0,0.8074776355935873,0.34615384615384615,-0.47493398502871564,-0.9287864457137979,0.5257867731892053,-1.766469780287859,78,78,0,0.4689048651828751,0.32051282051282054,-0.09299449923287773,-0.6950321638330431,0.1796024293945796,-3.8698372075250957,38,38,0,0.7484141598028515,0.39473684210526316,0.0358120333307812,1.5026277135342205,0.07451377327895868,20.16577133879402,17,17,0,1.3445362123735185,0.47058823529411764,222,no
+ETH-USDT-SWAP,15m,range_breakout_bidir,range_breakout_bidir-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-05-25 17:45,2026-05-19 07:45,-0.8435990954149083,-0.46287192182664727,0.8994791345873185,-0.5145999546048537,1245,627,618,0.9411146254809212,0.3751004016064257,-0.8435990954149083,-0.46287192182664727,0.8994791345873185,-0.5145999546048537,1245,627,618,0.9411146254809212,0.3751004016064257,-0.1866654596144579,-0.1866654596144579,0.41409400930583806,-0.4507803914559703,449,226,223,1.0092520566492158,0.39643652561247217,0.0277612930830875,0.11884936039109917,0.26555395529274306,0.447552589680245,94,40,54,1.0600148347419505,0.4148936170212766,-0.18186084392602342,-0.913024419126535,0.24148993611454705,-3.780796971570094,24,14,10,0.3253641965965929,0.25,-0.12024565521907438,-0.9645657908408826,0.13691908512024223,-7.044786999517282,13,8,5,0.15206022247425227,0.07692307692307693,194,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatenone,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.8219473182438382,-0.43902834336882524,0.872803353031055,-0.5030094600853398,1111,1111,0,0.938094713451938,0.38883888388838883,-0.8219473182438382,-0.43902834336882524,0.872803353031055,-0.5030094600853398,1111,1111,0,0.938094713451938,0.38883888388838883,-0.29945830996872036,-0.29945830996872036,0.5689418074595333,-0.5263425996164287,377,377,0,0.980103532823927,0.40848806366047746,-0.09814121531157938,-0.345337284418346,0.32264447679409114,-1.0703337861219215,71,71,0,0.9238349947405204,0.4084507042253521,-0.08158826647301898,-0.6449507058032523,0.1834923212083823,-3.5148648268001184,29,29,0,0.7726756035122488,0.41379310344827586,0.04256635003142839,1.9647591110058746,0.08104406684300243,24.243096225809865,15,15,0,1.3368512150983207,0.5333333333333333,189,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8023651361108168,-0.41907371948564587,0.853412546066703,-0.4910564315196872,1028,1028,0,0.9378547375561046,0.38715953307393,-0.8023651361108168,-0.41907371948564587,0.853412546066703,-0.4910564315196872,1028,1028,0,0.9378547375561046,0.38715953307393,-0.19077548085981522,-0.19077548085981522,0.5454642137182283,-0.34974884889215585,353,353,0,1.0022908435022977,0.41359773371104813,-0.19496910239865684,-0.5891099514752756,0.35949163216390684,-1.6387306372869241,68,68,0,0.8109749824012665,0.36764705882352944,-0.14500219998939934,-0.8513240234143881,0.19476625005636786,-4.3710038221098575,28,28,0,0.5805150136662752,0.35714285714285715,-0.048176307754793535,-0.7239818738914303,0.10559681651644617,-6.856095645446601,15,15,0,0.7507721082096271,0.4,184,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatenone,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.7688639055962175,-0.38778807508759816,0.8290664653851227,-0.4677406351340729,992,992,0,0.9666478288789867,0.35080645161290325,-0.7688639055962175,-0.38778807508759816,0.8290664653851227,-0.4677406351340729,992,992,0,0.9666478288789867,0.35080645161290325,-0.1989696789806984,-0.1989696789806984,0.5419647930868882,-0.3671265763361116,342,342,0,1.015447679931266,0.37719298245614036,-0.22443695432256983,-0.6473806708123745,0.4447384961455367,-1.4556434318663636,67,67,0,0.7985742483283772,0.40298507462686567,-0.01853592302596374,-0.20358645868266145,0.14502783919384885,-1.403775025638638,28,28,0,0.9781382792045269,0.4642857142857143,0.011989967387743938,0.3644295361026668,0.07754394709422105,4.699651613811465,14,14,0,1.1225765095328406,0.5714285714285714,179,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8935791294659174,-0.5278681681115569,0.9050024229446191,-0.5832781821666564,776,776,0,0.8497690685184057,0.3865979381443299,-0.8935791294659174,-0.5278681681115569,0.9050024229446191,-0.5832781821666564,776,776,0,0.8497690685184057,0.3865979381443299,-0.5807984223400133,-0.5807984223400133,0.6587077482835365,-0.8817239873881253,269,269,0,0.8431687778157786,0.36059479553903345,-0.36673662321156675,-0.846441808739044,0.45098432802994814,-1.876876326138843,61,61,0,0.5165127685960845,0.3442622950819672,-0.031544458901061945,-0.322925888868567,0.12016722448804255,-2.687304214975027,29,29,0,0.8967313763386392,0.4482758620689655,0.061858181871909945,3.7817994241058965,0.042446568645873595,89.09552750086763,15,15,0,1.7658846685564358,0.5333333333333333,179,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.7570227898841186,-0.37745560061407557,0.8261615324706026,-0.45687869233672723,919,919,0,0.9641144674626407,0.352557127312296,-0.7570227898841186,-0.37745560061407557,0.8261615324706026,-0.45687869233672723,919,919,0,0.9641144674626407,0.352557127312296,-0.15194695775888656,-0.15194695775888656,0.4972414060224407,-0.3055798570242743,317,317,0,1.0224868503110116,0.38801261829652994,-0.2552329543347245,-0.7013654473039701,0.43164763307768833,-1.624856465221802,64,64,0,0.7592330909236447,0.40625,-0.06464676088809296,-0.5565236509369177,0.13149967871073484,-4.232129358742581,27,27,0,0.834591785550234,0.4444444444444444,-0.05419264528659262,-0.7660400726718601,0.08761648867577378,-8.74310400073899,14,14,0,0.6445774233908472,0.5,174,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast48-slow192-stop0.012-take0.024-hold24-gatenone,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.9178660271682102,-0.5671120213870946,0.9227686769794559,-0.6145765840724572,758,758,0,0.8284127338677685,0.37730870712401055,-0.9178660271682102,-0.5671120213870946,0.9227686769794559,-0.6145765840724572,758,758,0,0.8284127338677685,0.37730870712401055,-0.4873960125257112,-0.4873960125257112,0.5726387645784926,-0.8511404443331272,254,254,0,0.8803311317227204,0.39763779527559057,-0.3391479434556802,-0.8170951262939036,0.38969730323678137,-2.0967430862549077,54,54,0,0.5494745028420308,0.37037037037037035,-0.0704942150057104,-0.5891021702686264,0.16589022852787402,-3.551156541867331,27,27,0,0.8444173173703928,0.48148148148148145,0.012083778680898938,0.36773094725624933,0.05609049854063199,6.556029217495095,10,10,0,1.4852097465501215,0.6,148,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatenone,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.8081422031875097,-0.4248184171327568,0.8402686996936162,-0.5055744874082024,845,845,0,0.9167534325356285,0.38224852071005916,-0.8081422031875097,-0.4248184171327568,0.8402686996936162,-0.5055744874082024,845,845,0,0.9167534325356285,0.38224852071005916,-0.1369519245533204,-0.1369519245533204,0.5299861253016768,-0.25840662239103923,293,293,0,1.0086560806531173,0.3993174061433447,-0.18404962830271343,-0.5657677263207446,0.2800303336774927,-2.020380145574986,53,53,0,0.7463035330850791,0.32075471698113206,-0.1622236664865384,-0.8839286414887705,0.18516192762820094,-4.773814211222029,21,21,0,0.3296010271406846,0.2857142857142857,-0.12165491723910804,-0.9660163035059494,0.13572869622923264,-7.1172591378498264,11,11,0,0.020163693083189133,0.18181818181818182,139,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8127965589907202,-0.42953094785011525,0.846611002773293,-0.5073533729694932,819,819,0,0.911388191965193,0.3797313797313797,-0.8127965589907202,-0.42953094785011525,0.846611002773293,-0.5073533729694932,819,819,0,0.911388191965193,0.3797313797313797,-0.06062491244389334,-0.06062491244389334,0.5117366545478486,-0.11846896622533176,287,287,0,1.0265204104094072,0.40418118466898956,-0.1795899698054213,-0.5559515616349735,0.27609526734064055,-2.01362220725447,52,52,0,0.7520161028066702,0.3269230769230769,-0.16222366648653874,-0.883928641488771,0.18516192762820138,-4.77381421122202,21,21,0,0.3296010271406846,0.2857142857142857,-0.12165491723910826,-0.9660163035059496,0.13572869622923298,-7.117259137849811,11,11,0,0.020163693083189133,0.18181818181818182,138,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatenone,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.55294999397397,-0.23638818768973102,0.7427721498140781,-0.3182512803541448,758,758,0,0.9921982826968255,0.36807387862796836,-0.55294999397397,-0.23638818768973102,0.7427721498140781,-0.3182512803541448,758,758,0,0.9921982826968255,0.36807387862796836,0.07993581416130291,0.07993581416130291,0.4959826768463379,0.16116654450427126,265,265,0,1.0673700513571835,0.39622641509433965,-0.26497457511156086,-0.7170631843970365,0.3854222102692284,-1.8604615024550544,51,51,0,0.669174959287067,0.37254901960784315,-0.13633172747013877,-0.8319050175201023,0.1599789082062848,-5.200091854905038,21,21,0,0.4966060574159854,0.38095238095238093,-0.1069749165635906,-0.9476465436671793,0.12128391413595248,-7.8134561406463225,11,11,0,0.16701767547010696,0.36363636363636365,137,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.5666950636913277,-0.24433494246241028,0.7607734237507239,-0.3211665061297796,736,736,0,0.9884691767645721,0.36277173913043476,-0.5666950636913277,-0.24433494246241028,0.7607734237507239,-0.3211665061297796,736,736,0,0.9884691767645721,0.36277173913043476,0.21710634282729568,0.21710634282729568,0.47282341177377246,0.45917003562245895,259,259,0,1.0937248175398848,0.4015444015444015,-0.26040542246905163,-0.709780194085307,0.38160179857067783,-1.860002224161022,50,50,0,0.6741268788336551,0.38,-0.13633172747013844,-0.8319050175201015,0.15997890820628435,-5.200091854905048,21,21,0,0.4966060574159854,0.38095238095238093,-0.10697491656359048,-0.947646543667179,0.12128391413595245,-7.8134561406463225,11,11,0,0.16701767547010696,0.36363636363636365,136,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast48-slow192-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.7909170176922974,-0.40801151691820303,0.8417689953560691,-0.48470722866861327,557,557,0,0.862163784952134,0.3895870736086176,-0.7909170176922974,-0.40801151691820303,0.8417689953560691,-0.48470722866861327,557,557,0,0.862163784952134,0.3895870736086176,-0.19253221926184916,-0.19253221926184916,0.4354546362592512,-0.442140703600693,193,193,0,0.9787803290553443,0.41450777202072536,-0.173635165174306,-0.5425839185660144,0.28578788043013054,-1.8985546824077637,42,42,0,0.7380311520581483,0.42857142857142855,-0.015168793483292142,-0.16969958673367946,0.12306022846385306,-1.3789961944002562,21,21,0,1.0678677525846947,0.5714285714285714,0.038664150654970086,1.6886266235650194,0.051425483939737865,32.83637788501533,8,8,0,2.2109023886842554,0.75,116,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.6464009879249835,-0.29407995236469864,0.7889480628675594,-0.3727494447426837,640,640,0,0.9396178240974773,0.390625,-0.6464009879249835,-0.29407995236469864,0.7889480628675594,-0.3727494447426837,640,640,0,0.9396178240974773,0.390625,0.4054685741394124,0.4054685741394124,0.2716850168863342,1.4924215504642633,228,228,0,1.1384875757101827,0.4342105263157895,-0.0540225269750324,-0.2036863556907802,0.21395164687326598,-0.9520205086873371,40,40,0,0.9254932395735421,0.375,-0.13142950397178732,-0.8199215593946476,0.1687530377059911,-4.85870696338605,15,15,0,0.12740340892385918,0.26666666666666666,-0.06470807718155802,-0.8251959149840813,0.09444699476995405,-8.737132578903365,8,8,0,0.03829304383483148,0.25,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatenone,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.6513202994024581,-0.29738517820439336,0.7918842424982269,-0.37554122464440787,643,643,0,0.9388909093668912,0.39035769828926903,-0.6513202994024581,-0.29738517820439336,0.7918842424982269,-0.37554122464440787,643,643,0,0.9388909093668912,0.39035769828926903,0.40546857413941106,0.40546857413941106,0.27168501688633434,1.4924215504642575,228,228,0,1.1384875757101827,0.4342105263157895,-0.05402252697503307,-0.20368635569078242,0.2139516468732664,-0.9520205086873457,40,40,0,0.9254932395735421,0.375,-0.13142950397178765,-0.8199215593946485,0.16875303770599126,-4.858706963386051,15,15,0,0.12740340892385918,0.26666666666666666,-0.06470807718155813,-0.8251959149840817,0.09444699476995409,-8.737132578903367,8,8,0,0.03829304383483148,0.25,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.6929167193071427,-0.32665797697880306,0.7378548228971923,-0.44271307422804146,677,677,0,0.9356514040638004,0.38404726735598227,-0.6929167193071427,-0.32665797697880306,0.7378548228971923,-0.44271307422804146,677,677,0,0.9356514040638004,0.38404726735598227,-0.22521658915021914,-0.22521658915021914,0.5643333615660002,-0.39908430812109535,244,244,0,0.9776755313742052,0.4057377049180328,-0.15198525937092078,-0.49140334404991937,0.2746652439663804,-1.7890991118995314,46,46,0,0.8020219377294813,0.3695652173913043,-0.06243810201697908,-0.5436135736340086,0.08810848537838945,-6.169820889547852,14,14,0,0.648172740632225,0.35714285714285715,-0.027966409306082074,-0.5226541040144755,0.07004313722359434,-7.461888840673133,7,7,0,0.6754182250698818,0.2857142857142857,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatenone,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.024896846156891694,-0.008410218477811537,0.6915002611364974,-0.012162278093704751,575,575,0,1.0489793584409701,0.3826086956521739,-0.024896846156891694,-0.008410218477811537,0.6915002611364974,-0.012162278093704751,575,575,0,1.0489793584409701,0.3826086956521739,0.5490459780903723,0.5490459780903723,0.3457701723519302,1.5878928316915226,202,202,0,1.1729490621373169,0.4158415841584158,-0.20202290709266546,-0.6036757766586286,0.3457701723519302,-1.7458873694987147,37,37,0,0.6775597426231057,0.3783783783783784,-0.1482100051610037,-0.857970299883765,0.18463913140190893,-4.6467414213306615,15,15,0,0.23149196961839816,0.3333333333333333,-0.06162222512911808,-0.8095208164972583,0.09126608363874919,-8.869897602942139,8,8,0,0.24430052755160012,0.375,99,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.09328728001681752,-0.03227322132359012,0.6955516048829445,-0.046399463529411926,574,574,0,1.0420791425120661,0.38153310104529614,-0.09328728001681752,-0.03227322132359012,0.6955516048829445,-0.046399463529411926,574,574,0,1.0420791425120661,0.38153310104529614,0.5490459780903716,0.5490459780903716,0.34577017235193036,1.58789283169152,202,202,0,1.1729490621373169,0.4158415841584158,-0.20202290709266568,-0.603675776658629,0.34577017235193036,-1.7458873694987151,37,37,0,0.6775597426231057,0.3783783783783784,-0.1482100051610038,-0.8579702998837653,0.18463913140190893,-4.646741421330662,15,15,0,0.23149196961839816,0.3333333333333333,-0.06162222512911819,-0.8095208164972588,0.09126608363874925,-8.86989760294214,8,8,0,0.24430052755160012,0.375,99,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.2665342253893779,-0.09862909015098253,0.5642783673652839,-0.17478800509666764,610,610,0,1.0248631487490207,0.37540983606557377,-0.2665342253893779,-0.09862909015098253,0.5642783673652839,-0.17478800509666764,610,610,0,1.0248631487490207,0.37540983606557377,0.07650745474018983,0.07650745474018983,0.43498090697504327,0.17588692633026165,220,220,0,1.0702369372151168,0.39090909090909093,-0.09063827400095215,-0.3227110517464459,0.34602261031208864,-0.9326299557574653,43,43,0,0.9091890507011379,0.4418604651162791,0.027697324392883527,0.3943129075612526,0.06729177995435202,5.859748513544124,13,13,0,1.2748709009516916,0.5384615384615384,0.011011513920943905,0.3304494026130165,0.06641434760299447,4.975572516172955,6,6,0,1.317485854434259,0.6666666666666666,93,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.6299783833984982,-0.2832623720117453,0.7307995487513166,-0.3876061123679436,603,603,0,0.9411803752076612,0.37976782752902155,-0.6299783833984982,-0.2832623720117453,0.7307995487513166,-0.3876061123679436,603,603,0,0.9411803752076612,0.37976782752902155,0.07556037191138043,0.07556037191138043,0.4664299173846812,0.16199726710296572,218,218,0,1.061624403094641,0.40825688073394495,-0.1177601302047171,-0.40180297229932294,0.22153850686819326,-1.8136936010784797,39,39,0,0.8095906388938907,0.358974358974359,-0.0770440112353209,-0.6229762247530461,0.10231448575894316,-6.088836982681045,12,12,0,0.42543483430010803,0.3333333333333333,-0.04310933950983398,-0.6830044010853373,0.07200891395458969,-9.484997947838153,5,5,0,0.02962241306541913,0.2,83,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.04207709532498882,-0.014297370009986321,0.5613553812914447,-0.025469373745191565,546,546,0,1.0477414869148811,0.3772893772893773,-0.04207709532498882,-0.014297370009986321,0.5613553812914447,-0.025469373745191565,546,546,0,1.0477414869148811,0.3772893772893773,0.3589133528432662,0.3589133528432662,0.35675856055108723,1.006039917553346,198,198,0,1.1364970631966222,0.398989898989899,-0.09050683169985063,-0.32230947120253794,0.27507441003693495,-1.171717395155953,38,38,0,0.8857985282884437,0.4473684210526316,-0.012614287287576964,-0.14311368878581898,0.07343535249702583,-1.9488391342795715,12,12,0,0.929069847785868,0.5,-0.028645593854180196,-0.5312740634373829,0.06642374046218076,-7.99825574020287,5,5,0,0.26339617552951855,0.6,82,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.5053680680754427,-0.21007211886470578,0.6513128379370422,-0.3225364320010716,504,504,0,0.9575098287220533,0.3888888888888889,-0.5053680680754427,-0.21007211886470578,0.6513128379370422,-0.3225364320010716,504,504,0,0.9575098287220533,0.3888888888888889,0.15884757837582564,0.15884757837582564,0.3126538154380827,0.5080621778219863,182,182,0,1.0912646040513936,0.4230769230769231,-0.05439666507701546,-0.2049771939190269,0.18919259958722304,-1.0834313517877676,31,31,0,0.9081342938917443,0.3870967741935484,-0.107140450646948,-0.7481192569697499,0.14550771463135811,-5.141440499324041,9,9,0,0.019449902524443802,0.2222222222222222,-0.041266483009202215,-0.6666976476210578,0.06534359283325598,-10.202953628863648,4,4,0,0.03094960383290564,0.25,65,no
+ETH-USDT-SWAP,1H,range_breakout_bidir,range_breakout_bidir-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-06-10 23:00,2026-05-19 07:00,-0.8397806684942115,-0.46351982884914367,0.8704761763883649,-0.5324899651732034,500,256,244,0.8579755367013214,0.35,-0.8397806684942115,-0.46351982884914367,0.8704761763883649,-0.5324899651732034,500,256,244,0.8579755367013214,0.35,-0.46002628238127474,-0.46002628238127474,0.4916412774921709,-0.9356949943825666,162,100,62,0.8531977359676686,0.35185185185185186,-0.017860783498798827,-0.07124594817054697,0.2049419709073672,-0.3476396164978319,25,10,15,0.9990469870228174,0.4,-0.04202876128418076,-0.4069084681977443,0.11581921566655348,-3.5133070609737533,8,5,3,0.6595980092844688,0.375,-0.09333236049318605,-0.9222658994768462,0.09842762884847524,-9.369990014659722,6,5,1,0.1766802296487291,0.16666666666666666,65,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,0.3964618421967314,0.11836444882285058,0.5593669200670762,0.21160430582605236,457,457,0,1.090620846032325,0.3916849015317287,0.3964618421967314,0.11836444882285058,0.5593669200670762,0.21160430582605236,457,457,0,1.090620846032325,0.3916849015317287,0.3112917460009137,0.3112917460009137,0.27171244440082576,1.1456661349735648,162,162,0,1.141968735851976,0.4012345679012346,-0.08284776691769757,-0.29859694456317243,0.24063277769299204,-1.240882258127499,29,29,0,0.8602008011559038,0.41379310344827586,-0.08056396581807335,-0.6401027743551531,0.11988615974215401,-5.339254970981292,9,9,0,0.27006946792375836,0.3333333333333333,-0.03072513198073945,-0.556745980230975,0.054866055571775985,-10.147366608168829,4,4,0,0.20754767508919988,0.5,63,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatenone,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6613476248300603,-0.3080301135389718,0.7403727478895495,-0.41604734158168183,345,345,0,0.8835844124900832,0.3536231884057971,-0.6613476248300603,-0.3080301135389718,0.7403727478895495,-0.41604734158168183,345,345,0,0.8835844124900832,0.3536231884057971,0.0356057657543134,0.0356057657543134,0.25596781507601385,0.13910251077362865,117,117,0,1.0587508807290456,0.4017094017094017,-0.08959724946224468,-0.31952559307120887,0.15544317329108184,-2.0555781660019727,17,17,0,0.7175100876259568,0.35294117647058826,0.00478305178588867,0.059773352588205375,0.10809573582439848,0.5529667949650409,8,8,0,1.081431644753701,0.5,-0.045437816991040436,-0.7025134798664626,0.10809573582439848,-6.498993457130407,7,7,0,0.5618924499423754,0.42857142857142855,61,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6167617907139802,-0.2783052911508115,0.6472757051200713,-0.4299640616036796,320,320,0,0.8899902680220343,0.353125,-0.6167617907139802,-0.2783052911508115,0.6472757051200713,-0.4299640616036796,320,320,0,0.8899902680220343,0.353125,-0.12374512615028255,-0.12374512615028255,0.2897601961410901,-0.42706047206714526,113,113,0,0.9807216275633417,0.3805309734513274,-0.17527825839919475,-0.5463023991379561,0.22090243582528835,-2.4730483260493625,16,16,0,0.4438433213442305,0.25,-0.0897803989384316,-0.6816203996420045,0.12396436647598703,-5.498518800352521,7,7,0,0.31386505333570985,0.2857142857142857,-0.0897803989384316,-0.913923887855547,0.12396436647598703,-7.372472540587556,7,7,0,0.31386505333570985,0.2857142857142857,58,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatenone,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6766419006600031,-0.31881979592779475,0.704907672416418,-0.4522858927537034,313,313,0,0.904295460770876,0.329073482428115,-0.6766419006600031,-0.31881979592779475,0.704907672416418,-0.4522858927537034,313,313,0,0.904295460770876,0.329073482428115,-0.15016515215332715,-0.15016515215332715,0.34157139140666365,-0.4396303552675039,103,103,0,0.9858840563693163,0.34951456310679613,-0.13923085236048505,-0.4592926447571424,0.21808356232669673,-2.1060397209997244,16,16,0,0.5821341608891538,0.3125,-0.010546756824739156,-0.12102633721724321,0.1419145519515476,-0.852811325920713,7,7,0,0.960711749512332,0.42857142857142855,-0.07648506887669704,-0.8743756971741126,0.1419145519515476,-6.161282864583482,6,6,0,0.3915864640474882,0.3333333333333333,54,no
+ETH-USDT-SWAP,1H,range_breakout_bidir,range_breakout_bidir-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-06-10 23:00,2026-05-19 07:00,-0.47012887524220626,-0.19424918427169158,0.6472215388725882,-0.30012781189275506,392,187,205,0.9587625259228963,0.375,-0.47012887524220626,-0.19424918427169158,0.6472215388725882,-0.30012781189275506,392,187,205,0.9587625259228963,0.375,-0.24830243581023126,-0.24830243581023126,0.3976670490910715,-0.624397813139822,126,71,55,0.9278505352211269,0.36507936507936506,-0.04313706746385215,-0.16543074823779425,0.18176653222141528,-0.9101276578037923,19,5,14,0.9159560633420447,0.3684210526315789,-0.10922392730173447,-0.7551779079614229,0.11422988862328025,-6.6110360174816485,6,4,2,0.1539072093501626,0.16666666666666666,-0.07940778669728588,-0.8843400222499398,0.08458130802768048,-10.455501846347973,5,4,1,0.2029993597522381,0.2,51,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6396029937355465,-0.2932300595638093,0.6711064555061306,-0.4369352390488675,289,289,0,0.9063604995227574,0.33217993079584773,-0.6396029937355465,-0.2932300595638093,0.6711064555061306,-0.4369352390488675,289,289,0,0.9063604995227574,0.33217993079584773,-0.2990904298752416,-0.2990904298752416,0.4019220426079993,-0.7441503529751641,100,100,0,0.9034551266320738,0.34,-0.21812775616459645,-0.6354671324350836,0.2897529363221966,-2.193134400986581,15,15,0,0.33881899805148097,0.26666666666666666,-0.10123866598475173,-0.7270980583618143,0.15095902052176693,-4.816526073425161,6,6,0,0.3233052315014795,0.3333333333333333,-0.10123866598475173,-0.938135320244887,0.15095902052176693,-6.214503227447851,6,6,0,0.3233052315014795,0.3333333333333333,51,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatenone,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6533741035966636,-0.30253220072795484,0.6732067856737851,-0.4493897078371882,265,265,0,0.844794345958835,0.3433962264150943,-0.6533741035966636,-0.30253220072795484,0.6732067856737851,-0.4493897078371882,265,265,0,0.844794345958835,0.3433962264150943,-0.13158946499563196,-0.13158946499563196,0.2819275105151008,-0.4667492886920082,93,93,0,0.9622844608107444,0.3763440860215054,-0.06372739064967081,-0.2366611386312225,0.11552263926925592,-2.048612636693847,11,11,0,0.6411035879755749,0.36363636363636365,-0.013764906249350117,-0.15518392571288142,0.07850185011197677,-1.9768187054384532,6,6,0,0.8228470541493952,0.5,-0.013764906249350117,-0.30327436540911223,0.07850185011197677,-3.86327666133365,6,6,0,0.8228470541493952,0.5,47,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6466089611084607,-0.29793257558064135,0.6505978295980511,-0.4579366269400383,256,256,0,0.841662068507175,0.33984375,-0.6466089611084607,-0.29793257558064135,0.6505978295980511,-0.4579366269400383,256,256,0,0.841662068507175,0.33984375,-0.1444541886031152,-0.1444541886031152,0.3131965952614074,-0.4612252840186449,92,92,0,0.9539707445111223,0.3695652173913043,-0.10722036119072653,-0.3719471480713814,0.15660954858425347,-2.3749966169609364,11,11,0,0.4655482857855941,0.2727272727272727,-0.05957880003485383,-0.5263880347534953,0.0948970108641359,-5.546940098114631,6,6,0,0.41340302987048977,0.3333333333333333,-0.05957880003485383,-0.7984062140696647,0.0948970108641359,-8.413396868872333,6,6,0,0.41340302987048977,0.3333333333333333,47,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.6005407732090036,-0.26805932512193253,0.6387927191998612,-0.4196342836494727,281,281,0,0.8774488689827394,0.35231316725978645,-0.6005407732090036,-0.26805932512193253,0.6387927191998612,-0.4196342836494727,281,281,0,0.8774488689827394,0.35231316725978645,-0.024480316115315648,-0.024480316115315648,0.2519855128818513,-0.09714969656526945,102,102,0,1.0293151581226112,0.39215686274509803,-0.11964081762321821,-0.4070154152943579,0.1683428967723459,-2.417775998263678,14,14,0,0.5505500333089427,0.2857142857142857,-0.028375095073277956,-0.2954690144329696,0.06219966531864255,-4.750331258525458,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864255,-8.48652609665276,5,5,0,0.6053960421433899,0.4,44,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatenone,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.4706430989974525,-0.19451518327409345,0.5616809706533679,-0.3463090142573751,242,242,0,0.9447042371281237,0.3347107438016529,-0.4706430989974525,-0.19451518327409345,0.5616809706533679,-0.3463090142573751,242,242,0,0.9447042371281237,0.3347107438016529,-0.13271417177162215,-0.13271417177162215,0.2617116166888629,-0.5071008060349114,82,82,0,0.979047913071695,0.34146341463414637,-0.06233246204349663,-0.2319862306940914,0.14822962345776766,-1.5650463468942628,10,10,0,0.6756331060599521,0.3,-0.040017720402424795,-0.3915814221988042,0.10803085391904965,-3.62471838362239,5,5,0,0.5616553392900642,0.4,-0.040017720402424795,-0.655192491751758,0.10803085391904965,-6.0648645084552495,5,5,0,0.5616553392900642,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.5128551401604091,-0.21695925263169313,0.5755672924985404,-0.3769485435662474,233,233,0,0.926178142481839,0.33047210300429186,-0.5128551401604091,-0.21695925263169313,0.5755672924985404,-0.3769485435662474,233,233,0,0.926178142481839,0.33047210300429186,-0.21220838546184062,-0.21220838546184062,0.27952684502063546,-0.7591699661124669,81,81,0,0.9297065295002889,0.3333333333333333,-0.08746540107204603,-0.3129669499227493,0.17106020260591076,-1.8295719586148507,10,10,0,0.5882603532606531,0.3,-0.06574877658700273,-0.5628390288874736,0.11743246645738409,-4.792874116220035,5,5,0,0.43107364200197296,0.4,-0.06574877658700273,-0.830196820240262,0.11743246645738409,-7.069568112507779,5,5,0,0.43107364200197296,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.6912513117446604,-0.3294455643972386,0.6929864099796212,-0.4753997476038912,237,237,0,0.800926823268994,0.3291139240506329,-0.6912513117446604,-0.3294455643972386,0.6929864099796212,-0.4753997476038912,237,237,0,0.800926823268994,0.3291139240506329,-0.13638499831590922,-0.13638499831590922,0.3035069004902209,-0.4493637478937768,84,84,0,0.9511489970634209,0.36904761904761907,-0.0775974300550405,-0.28198312302956663,0.1286253784971024,-2.192282163320662,10,10,0,0.5530748157028904,0.3,-0.028375095073277956,-0.2954690144329696,0.062199665318642405,-4.75033125852547,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.062199665318642405,-8.48652609665278,5,5,0,0.6053960421433899,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.5660650937872496,-0.24716146785739046,0.578649820267791,-0.42713478722417575,254,254,0,0.9164107170557702,0.3346456692913386,-0.5660650937872496,-0.24716146785739046,0.578649820267791,-0.42713478722417575,254,254,0,0.9164107170557702,0.3346456692913386,-0.1992547977202359,-0.1992547977202359,0.34824612537547056,-0.572166589090989,91,91,0,0.9485102311741892,0.3516483516483517,-0.15516015887833667,-0.49916726453552107,0.23255362859382642,-2.1464608725041945,13,13,0,0.43047253095745586,0.3076923076923077,-0.028857478159074912,-0.29971288032306775,0.08258203067869029,-3.6292747690982434,4,4,0,0.6466104630029604,0.5,-0.028857478159074912,-0.5339324478741041,0.08258203067869029,-6.465479759773958,4,4,0,0.6466104630029604,0.5,37,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast32-slow128-stop0.012-take0.024-hold24-gatenone,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.786542222414658,-0.40854131041842623,0.861017540282295,-0.4744866292555213,302,302,0,0.8229175644222094,0.32781456953642385,-0.786542222414658,-0.40854131041842623,0.861017540282295,-0.4744866292555213,302,302,0,0.8229175644222094,0.32781456953642385,-0.11481998757692913,-0.11481998757692913,0.44441925225290974,-0.2583596164992138,85,85,0,0.9986126727451927,0.35294117647058826,-0.18747945699332602,-0.5732048008000883,0.23426585214358728,-2.4468132916305576,11,11,0,0.3772729791764065,0.2727272727272727,-0.09864819288927706,-0.7173725147076937,0.14684612660436308,-4.885198753934168,7,7,0,0.5472261236790572,0.2857142857142857,0.0409667543076464,1.8484187618947594,0.06186449016771104,29.878509576071888,3,3,0,2.584222840354499,0.6666666666666666,37,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatenone,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.28627729281695624,-0.10835713789170365,0.5214813833709976,-0.2077871643111277,196,196,0,0.9540491202175713,0.3673469387755102,-0.28627729281695624,-0.10835713789170365,0.5214813833709976,-0.2077871643111277,196,196,0,0.9540491202175713,0.3673469387755102,-0.11121034151288833,-0.11121034151288833,0.2951828877605197,-0.3767506387535333,72,72,0,0.9571006274762208,0.375,-0.05957880003485383,-0.22269419724925088,0.08041497227577686,-2.7693126161324604,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277845,-0.2954690144329687,0.062199665318642516,-4.7503312585254465,5,5,0,0.6053960421433899,0.4,-0.028375095073277845,-0.5278590829297262,0.062199665318642516,-8.48652609665274,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.29945237454041773,-0.11398881169365283,0.530314676492871,-0.21494561011868427,194,194,0,0.9483744085667555,0.36597938144329895,-0.29945237454041773,-0.11398881169365283,0.530314676492871,-0.21494561011868427,194,194,0,0.9483744085667555,0.36597938144329895,-0.11121034151288833,-0.11121034151288833,0.2951828877605197,-0.3767506387535333,72,72,0,0.9571006274762208,0.375,-0.05957880003485394,-0.22269419724925132,0.08041497227577692,-2.769312616132464,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277956,-0.2954690144329696,0.06219966531864256,-4.750331258525458,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864256,-8.486526096652758,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.3851138314550674,-0.15242705016447144,0.48199294844789037,-0.3162433198562671,180,180,0,0.9058531726981328,0.35555555555555557,-0.3851138314550674,-0.15242705016447144,0.48199294844789037,-0.3162433198562671,180,180,0,0.9058531726981328,0.35555555555555557,-0.0859546368639783,-0.0859546368639783,0.30819357518911517,-0.27889821133109094,66,66,0,0.9708469882808072,0.3787878787878788,-0.05957880003485383,-0.22269419724925088,0.08041497227577693,-2.7693126161324577,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277956,-0.2954690144329696,0.06219966531864269,-4.750331258525448,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864269,-8.48652609665274,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.574036589986727,-0.25189327295979647,0.6109241922625275,-0.41231510578574765,217,217,0,0.8924669161351116,0.3225806451612903,-0.574036589986727,-0.25189327295979647,0.6109241922625275,-0.41231510578574765,217,217,0,0.8924669161351116,0.3225806451612903,-0.19871719343179806,-0.19871719343179806,0.31091201108737104,-0.6391428646864192,75,75,0,0.928866478074751,0.3333333333333333,-0.05143163909111159,-0.19470382309438528,0.13832739511465103,-1.4075579384185417,9,9,0,0.7221544828914285,0.3333333333333333,-0.0288574781590748,-0.29971288032306675,0.08258203067869027,-3.6292747690982323,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869027,-6.465479759773942,4,4,0,0.6466104630029604,0.5,33,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast32-slow128-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.7212738988967229,-0.3523715236426809,0.7838575077187531,-0.4495351772137536,236,236,0,0.8142901217928814,0.3347457627118644,-0.7212738988967229,-0.3523715236426809,0.7838575077187531,-0.4495351772137536,236,236,0,0.8142901217928814,0.3347457627118644,-0.2378941345508072,-0.2378941345508072,0.4037132144415617,-0.5892651665610585,79,79,0,0.9163572187137603,0.34177215189873417,-0.27834596272944034,-0.7375842447796426,0.28147864981670984,-2.6203914409136697,11,11,0,0.11487871977096797,0.18181818181818182,-0.19944895399743123,-0.9332322835084876,0.19944895399743126,-4.679053285586582,7,7,0,0.11744615856175482,0.14285714285714285,-0.028404477890228597,-0.5282311888937412,0.07491596304639149,-7.050983093771825,2,2,0,0.7046769513705278,0.5,33,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatenone,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,0.12590617074365174,0.041151542023509124,0.4255948904977289,0.09669181407554685,179,179,0,1.084258707079674,0.3687150837988827,0.12590617074365174,0.041151542023509124,0.4255948904977289,0.09669181407554685,179,179,0,1.084258707079674,0.3687150837988827,-0.24471654805063436,-0.24471654805063436,0.34241158916592057,-0.7146853546830547,64,64,0,0.8741952168566461,0.328125,-0.041027778531412706,-0.15786005298160122,0.0842216737902042,-1.8743400110383686,5,5,0,0.5550551598960721,0.4,-0.0288574781590748,-0.29971288032306675,0.08258203067869027,-3.6292747690982323,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869027,-6.465479759773942,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,0.09237094310278393,0.030500556515579147,0.4427036039995951,0.0688961107161148,177,177,0,1.0770145768219808,0.3672316384180791,0.09237094310278393,0.030500556515579147,0.4427036039995951,0.0688961107161148,177,177,0,1.0770145768219808,0.3672316384180791,-0.24471654805063403,-0.24471654805063403,0.34241158916592046,-0.7146853546830539,64,64,0,0.8741952168566461,0.328125,-0.041027778531412706,-0.15786005298160122,0.08422167379020422,-1.8743400110383681,5,5,0,0.5550551598960721,0.4,-0.028857478159074912,-0.29971288032306775,0.08258203067869023,-3.629274769098246,4,4,0,0.6466104630029604,0.5,-0.028857478159074912,-0.5339324478741041,0.08258203067869023,-6.465479759773962,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.12348675138008713,-0.04383172613707009,0.4504772734676288,-0.09730063805365274,166,166,0,1.020782507129253,0.35542168674698793,-0.12348675138008713,-0.04383172613707009,0.4504772734676288,-0.09730063805365274,166,166,0,1.020782507129253,0.35542168674698793,-0.2081981726238067,-0.2081981726238067,0.27759422315453497,-0.7500090248920781,60,60,0,0.8930877091528084,0.3333333333333333,-0.041027778531412484,-0.15786005298160044,0.08422167379020397,-1.8743400110383646,5,5,0,0.5550551598960721,0.4,-0.0288574781590748,-0.29971288032306675,0.08258203067869019,-3.629274769098236,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869019,-6.465479759773948,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast48-slow192-stop0.012-take0.024-hold24-gatenone,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,0.12697993261130458,0.0414890945441575,0.654296820018723,0.06341020355711077,251,251,0,1.0759942698259573,0.38645418326693226,0.12697993261130458,0.0414890945441575,0.654296820018723,0.06341020355711077,251,251,0,1.0759942698259573,0.38645418326693226,0.801026807463237,0.801026807463237,0.3682987822227841,2.1749374315842713,62,62,0,1.5711306312096098,0.46774193548387094,0.0542297347711409,0.24182483731800652,0.0901421110614849,2.682706611486618,5,5,0,1.763622791099004,0.6,0.08232242047532679,1.6182189953658614,0.03798752252964448,42.598697877784616,3,3,0,3.198014055629825,0.6666666666666666,0.12506068873589915,20.58888071602216,0.025576816624588883,804.9821452849824,2,2,0,999.0,1.0,19,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast48-slow192-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,0.08129624020590609,0.02693582339643763,0.5287881782583804,0.050938777574706,178,178,0,1.074450557535977,0.39325842696629215,0.08129624020590609,0.02693582339643763,0.5287881782583804,0.050938777574706,178,178,0,1.074450557535977,0.39325842696629215,0.4594306491345608,0.4594306491345608,0.3629126977803245,1.2659536355287844,52,52,0,1.4284006234134197,0.46153846153846156,-0.016025357832036402,-0.06410714177432553,0.09014211106148484,-0.7111786158480227,4,4,0,0.8238498466070183,0.5,0.010195198704735953,0.13135217801295274,0.037987522529644435,3.4577716383175305,2,2,0,1.318468166645854,0.5,0.050085339185078404,2.5756542277995784,0.0011346875283837123,2269.9238013732543,1,1,0,999.0,1.0,12,no

+ 32 - 0
reports/eth-exploration/eth-filtered-recent-short-bidir-report.md

@@ -0,0 +1,32 @@
+# ETH filtered recent short/bidirectional search
+
+Run command: `rtk .venv/bin/python /home/lxy/okx-codex-trader/scripts/search_eth_filtered_recent_short_bidir_candidates.py --bars 15m 1H --years 3`
+Scope: 15m/1H only, local ETH/BTC candle cache, taker-fee model, no live path touched.
+
+Output files:
+- `reports/eth-exploration/eth-filtered-recent-short-bidir-candidates.csv`
+- `reports/eth-exploration/eth-filtered-recent-short-bidir-top.csv`
+- `reports/eth-exploration/eth-filtered-recent-short-bidir-report.md`
+
+Selection rule: recent activity plus positive 3y/1y return, bounded 3y/1y drawdown, and 1y profit factor >= 1.05.
+
+## Read-only observation candidates
+
+No candidates passed the read-only observation rule.
+
+## Top recent filtered candidates
+
+| family | bar | name | 3y_total_return | 3y_max_drawdown | 3y_trades | 1y_total_return | 1y_max_drawdown | 1y_profit_factor | 3m_total_return | 3m_trades | 1m_trades | 2w_trades | readonly_observe |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| range_breakout_bidir | 15m | range_breakout_bidir-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_trend | -0.9695 | 0.9771 | 1585 | -0.6195 | 0.6611 | 0.9276 | -0.1069 | 116 | 32 | 15 | no |
+| failed_rebound_short | 15m | failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatenone | -0.9646 | 0.9673 | 971 | -0.7132 | 0.7614 | 0.8075 | -0.4749 | 78 | 38 | 17 | no |
+| range_breakout_bidir | 15m | range_breakout_bidir-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_trend | -0.8436 | 0.8995 | 1245 | -0.1867 | 0.4141 | 1.0093 | 0.0278 | 94 | 24 | 13 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatenone | -0.8219 | 0.8728 | 1111 | -0.2995 | 0.5689 | 0.9801 | -0.0981 | 71 | 29 | 15 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatebtc_down | -0.8024 | 0.8534 | 1028 | -0.1908 | 0.5455 | 1.0023 | -0.1950 | 68 | 28 | 15 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatenone | -0.7689 | 0.8291 | 992 | -0.1990 | 0.5420 | 1.0154 | -0.2244 | 67 | 28 | 14 | no |
+| failed_rebound_short | 15m | failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatebtc_down | -0.8936 | 0.9050 | 776 | -0.5808 | 0.6587 | 0.8432 | -0.3667 | 61 | 29 | 15 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatebtc_down | -0.7570 | 0.8262 | 919 | -0.1519 | 0.4972 | 1.0225 | -0.2552 | 64 | 27 | 14 | no |
+| failed_rebound_short | 15m | failed_rebound_short-15m-fast48-slow192-stop0.012-take0.024-hold24-gatenone | -0.9179 | 0.9228 | 758 | -0.4874 | 0.5726 | 0.8803 | -0.3391 | 54 | 27 | 10 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatenone | -0.8081 | 0.8403 | 845 | -0.1370 | 0.5300 | 1.0087 | -0.1840 | 53 | 21 | 11 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_down | -0.8128 | 0.8466 | 819 | -0.0606 | 0.5117 | 1.0265 | -0.1796 | 52 | 21 | 11 | no |
+| filtered_breakdown_short | 15m | filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatenone | -0.5529 | 0.7428 | 758 | 0.0799 | 0.4960 | 1.0674 | -0.2650 | 51 | 21 | 11 | no |

+ 49 - 0
reports/eth-exploration/eth-filtered-recent-short-bidir-top.csv

@@ -0,0 +1,49 @@
+symbol,bar,family,name,params_json,first_time,last_time,full_total_return,full_annualized_return,full_max_drawdown,full_calmar,full_trades,full_short_trades,full_long_trades,full_profit_factor,full_win_rate,3y_total_return,3y_annualized_return,3y_max_drawdown,3y_calmar,3y_trades,3y_short_trades,3y_long_trades,3y_profit_factor,3y_win_rate,1y_total_return,1y_annualized_return,1y_max_drawdown,1y_calmar,1y_trades,1y_short_trades,1y_long_trades,1y_profit_factor,1y_win_rate,3m_total_return,3m_annualized_return,3m_max_drawdown,3m_calmar,3m_trades,3m_short_trades,3m_long_trades,3m_profit_factor,3m_win_rate,1m_total_return,1m_annualized_return,1m_max_drawdown,1m_calmar,1m_trades,1m_short_trades,1m_long_trades,1m_profit_factor,1m_win_rate,2w_total_return,2w_annualized_return,2w_max_drawdown,2w_calmar,2w_trades,2w_short_trades,2w_long_trades,2w_profit_factor,2w_win_rate,recent_trigger_score,readonly_observe
+ETH-USDT-SWAP,15m,range_breakout_bidir,range_breakout_bidir-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-05-25 17:45,2026-05-19 07:45,-0.9695495906035988,-0.6895310322332573,0.977111590077831,-0.7056829938721055,1585,812,773,0.8928992074297134,0.3583596214511041,-0.9695495906035988,-0.6895310322332573,0.977111590077831,-0.7056829938721055,1585,812,773,0.8928992074297134,0.3583596214511041,-0.6194594706190417,-0.6194594706190417,0.6611325817365341,-0.9369670891002927,558,291,267,0.9276157352547594,0.3727598566308244,-0.10691599727983458,-0.3710685757912928,0.33364704386747673,-1.1121590393550131,116,52,64,0.967782326242007,0.3879310344827586,-0.17505528396464987,-0.9038013562909281,0.22858465898899846,-3.953902069755377,32,20,12,0.473465228182811,0.3125,-0.12105579247050702,-0.9654067588790456,0.12105579247050696,-7.974891074413059,15,10,5,0.16805531573205545,0.13333333333333333,240,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatenone,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.9645563890997202,-0.6733301271944585,0.9672932650297306,-0.6960971936197272,971,971,0,0.8125479099355702,0.3707518022657055,-0.9645563890997202,-0.6733301271944585,0.9672932650297306,-0.6960971936197272,971,971,0,0.8125479099355702,0.3707518022657055,-0.7132460933795325,-0.7132460933795325,0.7614268545510585,-0.9367230602866855,338,338,0,0.8074776355935873,0.34615384615384615,-0.47493398502871564,-0.9287864457137979,0.5257867731892053,-1.766469780287859,78,78,0,0.4689048651828751,0.32051282051282054,-0.09299449923287773,-0.6950321638330431,0.1796024293945796,-3.8698372075250957,38,38,0,0.7484141598028515,0.39473684210526316,0.0358120333307812,1.5026277135342205,0.07451377327895868,20.16577133879402,17,17,0,1.3445362123735185,0.47058823529411764,222,no
+ETH-USDT-SWAP,15m,range_breakout_bidir,range_breakout_bidir-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-05-25 17:45,2026-05-19 07:45,-0.8435990954149083,-0.46287192182664727,0.8994791345873185,-0.5145999546048537,1245,627,618,0.9411146254809212,0.3751004016064257,-0.8435990954149083,-0.46287192182664727,0.8994791345873185,-0.5145999546048537,1245,627,618,0.9411146254809212,0.3751004016064257,-0.1866654596144579,-0.1866654596144579,0.41409400930583806,-0.4507803914559703,449,226,223,1.0092520566492158,0.39643652561247217,0.0277612930830875,0.11884936039109917,0.26555395529274306,0.447552589680245,94,40,54,1.0600148347419505,0.4148936170212766,-0.18186084392602342,-0.913024419126535,0.24148993611454705,-3.780796971570094,24,14,10,0.3253641965965929,0.25,-0.12024565521907438,-0.9645657908408826,0.13691908512024223,-7.044786999517282,13,8,5,0.15206022247425227,0.07692307692307693,194,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatenone,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.8219473182438382,-0.43902834336882524,0.872803353031055,-0.5030094600853398,1111,1111,0,0.938094713451938,0.38883888388838883,-0.8219473182438382,-0.43902834336882524,0.872803353031055,-0.5030094600853398,1111,1111,0,0.938094713451938,0.38883888388838883,-0.29945830996872036,-0.29945830996872036,0.5689418074595333,-0.5263425996164287,377,377,0,0.980103532823927,0.40848806366047746,-0.09814121531157938,-0.345337284418346,0.32264447679409114,-1.0703337861219215,71,71,0,0.9238349947405204,0.4084507042253521,-0.08158826647301898,-0.6449507058032523,0.1834923212083823,-3.5148648268001184,29,29,0,0.7726756035122488,0.41379310344827586,0.04256635003142839,1.9647591110058746,0.08104406684300243,24.243096225809865,15,15,0,1.3368512150983207,0.5333333333333333,189,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8023651361108168,-0.41907371948564587,0.853412546066703,-0.4910564315196872,1028,1028,0,0.9378547375561046,0.38715953307393,-0.8023651361108168,-0.41907371948564587,0.853412546066703,-0.4910564315196872,1028,1028,0,0.9378547375561046,0.38715953307393,-0.19077548085981522,-0.19077548085981522,0.5454642137182283,-0.34974884889215585,353,353,0,1.0022908435022977,0.41359773371104813,-0.19496910239865684,-0.5891099514752756,0.35949163216390684,-1.6387306372869241,68,68,0,0.8109749824012665,0.36764705882352944,-0.14500219998939934,-0.8513240234143881,0.19476625005636786,-4.3710038221098575,28,28,0,0.5805150136662752,0.35714285714285715,-0.048176307754793535,-0.7239818738914303,0.10559681651644617,-6.856095645446601,15,15,0,0.7507721082096271,0.4,184,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatenone,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.7688639055962175,-0.38778807508759816,0.8290664653851227,-0.4677406351340729,992,992,0,0.9666478288789867,0.35080645161290325,-0.7688639055962175,-0.38778807508759816,0.8290664653851227,-0.4677406351340729,992,992,0,0.9666478288789867,0.35080645161290325,-0.1989696789806984,-0.1989696789806984,0.5419647930868882,-0.3671265763361116,342,342,0,1.015447679931266,0.37719298245614036,-0.22443695432256983,-0.6473806708123745,0.4447384961455367,-1.4556434318663636,67,67,0,0.7985742483283772,0.40298507462686567,-0.01853592302596374,-0.20358645868266145,0.14502783919384885,-1.403775025638638,28,28,0,0.9781382792045269,0.4642857142857143,0.011989967387743938,0.3644295361026668,0.07754394709422105,4.699651613811465,14,14,0,1.1225765095328406,0.5714285714285714,179,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast32-slow128-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8935791294659174,-0.5278681681115569,0.9050024229446191,-0.5832781821666564,776,776,0,0.8497690685184057,0.3865979381443299,-0.8935791294659174,-0.5278681681115569,0.9050024229446191,-0.5832781821666564,776,776,0,0.8497690685184057,0.3865979381443299,-0.5807984223400133,-0.5807984223400133,0.6587077482835365,-0.8817239873881253,269,269,0,0.8431687778157786,0.36059479553903345,-0.36673662321156675,-0.846441808739044,0.45098432802994814,-1.876876326138843,61,61,0,0.5165127685960845,0.3442622950819672,-0.031544458901061945,-0.322925888868567,0.12016722448804255,-2.687304214975027,29,29,0,0.8967313763386392,0.4482758620689655,0.061858181871909945,3.7817994241058965,0.042446568645873595,89.09552750086763,15,15,0,1.7658846685564358,0.5333333333333333,179,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.7570227898841186,-0.37745560061407557,0.8261615324706026,-0.45687869233672723,919,919,0,0.9641144674626407,0.352557127312296,-0.7570227898841186,-0.37745560061407557,0.8261615324706026,-0.45687869233672723,919,919,0,0.9641144674626407,0.352557127312296,-0.15194695775888656,-0.15194695775888656,0.4972414060224407,-0.3055798570242743,317,317,0,1.0224868503110116,0.38801261829652994,-0.2552329543347245,-0.7013654473039701,0.43164763307768833,-1.624856465221802,64,64,0,0.7592330909236447,0.40625,-0.06464676088809296,-0.5565236509369177,0.13149967871073484,-4.232129358742581,27,27,0,0.834591785550234,0.4444444444444444,-0.05419264528659262,-0.7660400726718601,0.08761648867577378,-8.74310400073899,14,14,0,0.6445774233908472,0.5,174,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast48-slow192-stop0.012-take0.024-hold24-gatenone,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.9178660271682102,-0.5671120213870946,0.9227686769794559,-0.6145765840724572,758,758,0,0.8284127338677685,0.37730870712401055,-0.9178660271682102,-0.5671120213870946,0.9227686769794559,-0.6145765840724572,758,758,0,0.8284127338677685,0.37730870712401055,-0.4873960125257112,-0.4873960125257112,0.5726387645784926,-0.8511404443331272,254,254,0,0.8803311317227204,0.39763779527559057,-0.3391479434556802,-0.8170951262939036,0.38969730323678137,-2.0967430862549077,54,54,0,0.5494745028420308,0.37037037037037035,-0.0704942150057104,-0.5891021702686264,0.16589022852787402,-3.551156541867331,27,27,0,0.8444173173703928,0.48148148148148145,0.012083778680898938,0.36773094725624933,0.05609049854063199,6.556029217495095,10,10,0,1.4852097465501215,0.6,148,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatenone,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.8081422031875097,-0.4248184171327568,0.8402686996936162,-0.5055744874082024,845,845,0,0.9167534325356285,0.38224852071005916,-0.8081422031875097,-0.4248184171327568,0.8402686996936162,-0.5055744874082024,845,845,0,0.9167534325356285,0.38224852071005916,-0.1369519245533204,-0.1369519245533204,0.5299861253016768,-0.25840662239103923,293,293,0,1.0086560806531173,0.3993174061433447,-0.18404962830271343,-0.5657677263207446,0.2800303336774927,-2.020380145574986,53,53,0,0.7463035330850791,0.32075471698113206,-0.1622236664865384,-0.8839286414887705,0.18516192762820094,-4.773814211222029,21,21,0,0.3296010271406846,0.2857142857142857,-0.12165491723910804,-0.9660163035059494,0.13572869622923264,-7.1172591378498264,11,11,0,0.020163693083189133,0.18181818181818182,139,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.8127965589907202,-0.42953094785011525,0.846611002773293,-0.5073533729694932,819,819,0,0.911388191965193,0.3797313797313797,-0.8127965589907202,-0.42953094785011525,0.846611002773293,-0.5073533729694932,819,819,0,0.911388191965193,0.3797313797313797,-0.06062491244389334,-0.06062491244389334,0.5117366545478486,-0.11846896622533176,287,287,0,1.0265204104094072,0.40418118466898956,-0.1795899698054213,-0.5559515616349735,0.27609526734064055,-2.01362220725447,52,52,0,0.7520161028066702,0.3269230769230769,-0.16222366648653874,-0.883928641488771,0.18516192762820138,-4.77381421122202,21,21,0,0.3296010271406846,0.2857142857142857,-0.12165491723910826,-0.9660163035059496,0.13572869622923298,-7.117259137849811,11,11,0,0.020163693083189133,0.18181818181818182,138,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatenone,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.55294999397397,-0.23638818768973102,0.7427721498140781,-0.3182512803541448,758,758,0,0.9921982826968255,0.36807387862796836,-0.55294999397397,-0.23638818768973102,0.7427721498140781,-0.3182512803541448,758,758,0,0.9921982826968255,0.36807387862796836,0.07993581416130291,0.07993581416130291,0.4959826768463379,0.16116654450427126,265,265,0,1.0673700513571835,0.39622641509433965,-0.26497457511156086,-0.7170631843970365,0.3854222102692284,-1.8604615024550544,51,51,0,0.669174959287067,0.37254901960784315,-0.13633172747013877,-0.8319050175201023,0.1599789082062848,-5.200091854905038,21,21,0,0.4966060574159854,0.38095238095238093,-0.1069749165635906,-0.9476465436671793,0.12128391413595248,-7.8134561406463225,11,11,0,0.16701767547010696,0.36363636363636365,137,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.5666950636913277,-0.24433494246241028,0.7607734237507239,-0.3211665061297796,736,736,0,0.9884691767645721,0.36277173913043476,-0.5666950636913277,-0.24433494246241028,0.7607734237507239,-0.3211665061297796,736,736,0,0.9884691767645721,0.36277173913043476,0.21710634282729568,0.21710634282729568,0.47282341177377246,0.45917003562245895,259,259,0,1.0937248175398848,0.4015444015444015,-0.26040542246905163,-0.709780194085307,0.38160179857067783,-1.860002224161022,50,50,0,0.6741268788336551,0.38,-0.13633172747013844,-0.8319050175201015,0.15997890820628435,-5.200091854905048,21,21,0,0.4966060574159854,0.38095238095238093,-0.10697491656359048,-0.947646543667179,0.12128391413595245,-7.8134561406463225,11,11,0,0.16701767547010696,0.36363636363636365,136,no
+ETH-USDT-SWAP,15m,failed_rebound_short,failed_rebound_short-15m-fast48-slow192-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.7909170176922974,-0.40801151691820303,0.8417689953560691,-0.48470722866861327,557,557,0,0.862163784952134,0.3895870736086176,-0.7909170176922974,-0.40801151691820303,0.8417689953560691,-0.48470722866861327,557,557,0,0.862163784952134,0.3895870736086176,-0.19253221926184916,-0.19253221926184916,0.4354546362592512,-0.442140703600693,193,193,0,0.9787803290553443,0.41450777202072536,-0.173635165174306,-0.5425839185660144,0.28578788043013054,-1.8985546824077637,42,42,0,0.7380311520581483,0.42857142857142855,-0.015168793483292142,-0.16969958673367946,0.12306022846385306,-1.3789961944002562,21,21,0,1.0678677525846947,0.5714285714285714,0.038664150654970086,1.6886266235650194,0.051425483939737865,32.83637788501533,8,8,0,2.2109023886842554,0.75,116,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.6464009879249835,-0.29407995236469864,0.7889480628675594,-0.3727494447426837,640,640,0,0.9396178240974773,0.390625,-0.6464009879249835,-0.29407995236469864,0.7889480628675594,-0.3727494447426837,640,640,0,0.9396178240974773,0.390625,0.4054685741394124,0.4054685741394124,0.2716850168863342,1.4924215504642633,228,228,0,1.1384875757101827,0.4342105263157895,-0.0540225269750324,-0.2036863556907802,0.21395164687326598,-0.9520205086873371,40,40,0,0.9254932395735421,0.375,-0.13142950397178732,-0.8199215593946476,0.1687530377059911,-4.85870696338605,15,15,0,0.12740340892385918,0.26666666666666666,-0.06470807718155802,-0.8251959149840813,0.09444699476995405,-8.737132578903365,8,8,0,0.03829304383483148,0.25,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatenone,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.6513202994024581,-0.29738517820439336,0.7918842424982269,-0.37554122464440787,643,643,0,0.9388909093668912,0.39035769828926903,-0.6513202994024581,-0.29738517820439336,0.7918842424982269,-0.37554122464440787,643,643,0,0.9388909093668912,0.39035769828926903,0.40546857413941106,0.40546857413941106,0.27168501688633434,1.4924215504642575,228,228,0,1.1384875757101827,0.4342105263157895,-0.05402252697503307,-0.20368635569078242,0.2139516468732664,-0.9520205086873457,40,40,0,0.9254932395735421,0.375,-0.13142950397178765,-0.8199215593946485,0.16875303770599126,-4.858706963386051,15,15,0,0.12740340892385918,0.26666666666666666,-0.06470807718155813,-0.8251959149840817,0.09444699476995409,-8.737132578903367,8,8,0,0.03829304383483148,0.25,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.6929167193071427,-0.32665797697880306,0.7378548228971923,-0.44271307422804146,677,677,0,0.9356514040638004,0.38404726735598227,-0.6929167193071427,-0.32665797697880306,0.7378548228971923,-0.44271307422804146,677,677,0,0.9356514040638004,0.38404726735598227,-0.22521658915021914,-0.22521658915021914,0.5643333615660002,-0.39908430812109535,244,244,0,0.9776755313742052,0.4057377049180328,-0.15198525937092078,-0.49140334404991937,0.2746652439663804,-1.7890991118995314,46,46,0,0.8020219377294813,0.3695652173913043,-0.06243810201697908,-0.5436135736340086,0.08810848537838945,-6.169820889547852,14,14,0,0.648172740632225,0.35714285714285715,-0.027966409306082074,-0.5226541040144755,0.07004313722359434,-7.461888840673133,7,7,0,0.6754182250698818,0.2857142857142857,102,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatenone,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-05-25 17:45,2026-05-19 07:45,-0.024896846156891694,-0.008410218477811537,0.6915002611364974,-0.012162278093704751,575,575,0,1.0489793584409701,0.3826086956521739,-0.024896846156891694,-0.008410218477811537,0.6915002611364974,-0.012162278093704751,575,575,0,1.0489793584409701,0.3826086956521739,0.5490459780903723,0.5490459780903723,0.3457701723519302,1.5878928316915226,202,202,0,1.1729490621373169,0.4158415841584158,-0.20202290709266546,-0.6036757766586286,0.3457701723519302,-1.7458873694987147,37,37,0,0.6775597426231057,0.3783783783783784,-0.1482100051610037,-0.857970299883765,0.18463913140190893,-4.6467414213306615,15,15,0,0.23149196961839816,0.3333333333333333,-0.06162222512911808,-0.8095208164972583,0.09126608363874919,-8.869897602942139,8,8,0,0.24430052755160012,0.375,99,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-05-25 17:45,2026-05-19 07:45,-0.09328728001681752,-0.03227322132359012,0.6955516048829445,-0.046399463529411926,574,574,0,1.0420791425120661,0.38153310104529614,-0.09328728001681752,-0.03227322132359012,0.6955516048829445,-0.046399463529411926,574,574,0,1.0420791425120661,0.38153310104529614,0.5490459780903716,0.5490459780903716,0.34577017235193036,1.58789283169152,202,202,0,1.1729490621373169,0.4158415841584158,-0.20202290709266568,-0.603675776658629,0.34577017235193036,-1.7458873694987151,37,37,0,0.6775597426231057,0.3783783783783784,-0.1482100051610038,-0.8579702998837653,0.18463913140190893,-4.646741421330662,15,15,0,0.23149196961839816,0.3333333333333333,-0.06162222512911819,-0.8095208164972588,0.09126608363874925,-8.86989760294214,8,8,0,0.24430052755160012,0.375,99,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback24-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.2665342253893779,-0.09862909015098253,0.5642783673652839,-0.17478800509666764,610,610,0,1.0248631487490207,0.37540983606557377,-0.2665342253893779,-0.09862909015098253,0.5642783673652839,-0.17478800509666764,610,610,0,1.0248631487490207,0.37540983606557377,0.07650745474018983,0.07650745474018983,0.43498090697504327,0.17588692633026165,220,220,0,1.0702369372151168,0.39090909090909093,-0.09063827400095215,-0.3227110517464459,0.34602261031208864,-0.9326299557574653,43,43,0,0.9091890507011379,0.4418604651162791,0.027697324392883527,0.3943129075612526,0.06729177995435202,5.859748513544124,13,13,0,1.2748709009516916,0.5384615384615384,0.011011513920943905,0.3304494026130165,0.06641434760299447,4.975572516172955,6,6,0,1.317485854434259,0.6666666666666666,93,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.6299783833984982,-0.2832623720117453,0.7307995487513166,-0.3876061123679436,603,603,0,0.9411803752076612,0.37976782752902155,-0.6299783833984982,-0.2832623720117453,0.7307995487513166,-0.3876061123679436,603,603,0,0.9411803752076612,0.37976782752902155,0.07556037191138043,0.07556037191138043,0.4664299173846812,0.16199726710296572,218,218,0,1.061624403094641,0.40825688073394495,-0.1177601302047171,-0.40180297229932294,0.22153850686819326,-1.8136936010784797,39,39,0,0.8095906388938907,0.358974358974359,-0.0770440112353209,-0.6229762247530461,0.10231448575894316,-6.088836982681045,12,12,0,0.42543483430010803,0.3333333333333333,-0.04310933950983398,-0.6830044010853373,0.07200891395458969,-9.484997947838153,5,5,0,0.02962241306541913,0.2,83,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback48-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.04207709532498882,-0.014297370009986321,0.5613553812914447,-0.025469373745191565,546,546,0,1.0477414869148811,0.3772893772893773,-0.04207709532498882,-0.014297370009986321,0.5613553812914447,-0.025469373745191565,546,546,0,1.0477414869148811,0.3772893772893773,0.3589133528432662,0.3589133528432662,0.35675856055108723,1.006039917553346,198,198,0,1.1364970631966222,0.398989898989899,-0.09050683169985063,-0.32230947120253794,0.27507441003693495,-1.171717395155953,38,38,0,0.8857985282884437,0.4473684210526316,-0.012614287287576964,-0.14311368878581898,0.07343535249702583,-1.9488391342795715,12,12,0,0.929069847785868,0.5,-0.028645593854180196,-0.5312740634373829,0.06642374046218076,-7.99825574020287,5,5,0,0.26339617552951855,0.6,82,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,-0.5053680680754427,-0.21007211886470578,0.6513128379370422,-0.3225364320010716,504,504,0,0.9575098287220533,0.3888888888888889,-0.5053680680754427,-0.21007211886470578,0.6513128379370422,-0.3225364320010716,504,504,0,0.9575098287220533,0.3888888888888889,0.15884757837582564,0.15884757837582564,0.3126538154380827,0.5080621778219863,182,182,0,1.0912646040513936,0.4230769230769231,-0.05439666507701546,-0.2049771939190269,0.18919259958722304,-1.0834313517877676,31,31,0,0.9081342938917443,0.3870967741935484,-0.107140450646948,-0.7481192569697499,0.14550771463135811,-5.141440499324041,9,9,0,0.019449902524443802,0.2222222222222222,-0.041266483009202215,-0.6666976476210578,0.06534359283325598,-10.202953628863648,4,4,0,0.03094960383290564,0.25,65,no
+ETH-USDT-SWAP,1H,range_breakout_bidir,range_breakout_bidir-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-06-10 23:00,2026-05-19 07:00,-0.8397806684942115,-0.46351982884914367,0.8704761763883649,-0.5324899651732034,500,256,244,0.8579755367013214,0.35,-0.8397806684942115,-0.46351982884914367,0.8704761763883649,-0.5324899651732034,500,256,244,0.8579755367013214,0.35,-0.46002628238127474,-0.46002628238127474,0.4916412774921709,-0.9356949943825666,162,100,62,0.8531977359676686,0.35185185185185186,-0.017860783498798827,-0.07124594817054697,0.2049419709073672,-0.3476396164978319,25,10,15,0.9990469870228174,0.4,-0.04202876128418076,-0.4069084681977443,0.11581921566655348,-3.5133070609737533,8,5,3,0.6595980092844688,0.375,-0.09333236049318605,-0.9222658994768462,0.09842762884847524,-9.369990014659722,6,5,1,0.1766802296487291,0.16666666666666666,65,no
+ETH-USDT-SWAP,15m,filtered_breakdown_short,filtered_breakdown_short-15m-lookback96-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-05-25 17:45,2026-05-19 07:45,0.3964618421967314,0.11836444882285058,0.5593669200670762,0.21160430582605236,457,457,0,1.090620846032325,0.3916849015317287,0.3964618421967314,0.11836444882285058,0.5593669200670762,0.21160430582605236,457,457,0,1.090620846032325,0.3916849015317287,0.3112917460009137,0.3112917460009137,0.27171244440082576,1.1456661349735648,162,162,0,1.141968735851976,0.4012345679012346,-0.08284776691769757,-0.29859694456317243,0.24063277769299204,-1.240882258127499,29,29,0,0.8602008011559038,0.41379310344827586,-0.08056396581807335,-0.6401027743551531,0.11988615974215401,-5.339254970981292,9,9,0,0.27006946792375836,0.3333333333333333,-0.03072513198073945,-0.556745980230975,0.054866055571775985,-10.147366608168829,4,4,0,0.20754767508919988,0.5,63,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatenone,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6613476248300603,-0.3080301135389718,0.7403727478895495,-0.41604734158168183,345,345,0,0.8835844124900832,0.3536231884057971,-0.6613476248300603,-0.3080301135389718,0.7403727478895495,-0.41604734158168183,345,345,0,0.8835844124900832,0.3536231884057971,0.0356057657543134,0.0356057657543134,0.25596781507601385,0.13910251077362865,117,117,0,1.0587508807290456,0.4017094017094017,-0.08959724946224468,-0.31952559307120887,0.15544317329108184,-2.0555781660019727,17,17,0,0.7175100876259568,0.35294117647058826,0.00478305178588867,0.059773352588205375,0.10809573582439848,0.5529667949650409,8,8,0,1.081431644753701,0.5,-0.045437816991040436,-0.7025134798664626,0.10809573582439848,-6.498993457130407,7,7,0,0.5618924499423754,0.42857142857142855,61,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6167617907139802,-0.2783052911508115,0.6472757051200713,-0.4299640616036796,320,320,0,0.8899902680220343,0.353125,-0.6167617907139802,-0.2783052911508115,0.6472757051200713,-0.4299640616036796,320,320,0,0.8899902680220343,0.353125,-0.12374512615028255,-0.12374512615028255,0.2897601961410901,-0.42706047206714526,113,113,0,0.9807216275633417,0.3805309734513274,-0.17527825839919475,-0.5463023991379561,0.22090243582528835,-2.4730483260493625,16,16,0,0.4438433213442305,0.25,-0.0897803989384316,-0.6816203996420045,0.12396436647598703,-5.498518800352521,7,7,0,0.31386505333570985,0.2857142857142857,-0.0897803989384316,-0.913923887855547,0.12396436647598703,-7.372472540587556,7,7,0,0.31386505333570985,0.2857142857142857,58,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatenone,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6766419006600031,-0.31881979592779475,0.704907672416418,-0.4522858927537034,313,313,0,0.904295460770876,0.329073482428115,-0.6766419006600031,-0.31881979592779475,0.704907672416418,-0.4522858927537034,313,313,0,0.904295460770876,0.329073482428115,-0.15016515215332715,-0.15016515215332715,0.34157139140666365,-0.4396303552675039,103,103,0,0.9858840563693163,0.34951456310679613,-0.13923085236048505,-0.4592926447571424,0.21808356232669673,-2.1060397209997244,16,16,0,0.5821341608891538,0.3125,-0.010546756824739156,-0.12102633721724321,0.1419145519515476,-0.852811325920713,7,7,0,0.960711749512332,0.42857142857142855,-0.07648506887669704,-0.8743756971741126,0.1419145519515476,-6.161282864583482,6,6,0,0.3915864640474882,0.3333333333333333,54,no
+ETH-USDT-SWAP,1H,range_breakout_bidir,range_breakout_bidir-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_trend,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_trend""}",2023-06-10 23:00,2026-05-19 07:00,-0.47012887524220626,-0.19424918427169158,0.6472215388725882,-0.30012781189275506,392,187,205,0.9587625259228963,0.375,-0.47012887524220626,-0.19424918427169158,0.6472215388725882,-0.30012781189275506,392,187,205,0.9587625259228963,0.375,-0.24830243581023126,-0.24830243581023126,0.3976670490910715,-0.624397813139822,126,71,55,0.9278505352211269,0.36507936507936506,-0.04313706746385215,-0.16543074823779425,0.18176653222141528,-0.9101276578037923,19,5,14,0.9159560633420447,0.3684210526315789,-0.10922392730173447,-0.7551779079614229,0.11422988862328025,-6.6110360174816485,6,4,2,0.1539072093501626,0.16666666666666666,-0.07940778669728588,-0.8843400222499398,0.08458130802768048,-10.455501846347973,5,4,1,0.2029993597522381,0.2,51,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6396029937355465,-0.2932300595638093,0.6711064555061306,-0.4369352390488675,289,289,0,0.9063604995227574,0.33217993079584773,-0.6396029937355465,-0.2932300595638093,0.6711064555061306,-0.4369352390488675,289,289,0,0.9063604995227574,0.33217993079584773,-0.2990904298752416,-0.2990904298752416,0.4019220426079993,-0.7441503529751641,100,100,0,0.9034551266320738,0.34,-0.21812775616459645,-0.6354671324350836,0.2897529363221966,-2.193134400986581,15,15,0,0.33881899805148097,0.26666666666666666,-0.10123866598475173,-0.7270980583618143,0.15095902052176693,-4.816526073425161,6,6,0,0.3233052315014795,0.3333333333333333,-0.10123866598475173,-0.938135320244887,0.15095902052176693,-6.214503227447851,6,6,0,0.3233052315014795,0.3333333333333333,51,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatenone,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.6533741035966636,-0.30253220072795484,0.6732067856737851,-0.4493897078371882,265,265,0,0.844794345958835,0.3433962264150943,-0.6533741035966636,-0.30253220072795484,0.6732067856737851,-0.4493897078371882,265,265,0,0.844794345958835,0.3433962264150943,-0.13158946499563196,-0.13158946499563196,0.2819275105151008,-0.4667492886920082,93,93,0,0.9622844608107444,0.3763440860215054,-0.06372739064967081,-0.2366611386312225,0.11552263926925592,-2.048612636693847,11,11,0,0.6411035879755749,0.36363636363636365,-0.013764906249350117,-0.15518392571288142,0.07850185011197677,-1.9768187054384532,6,6,0,0.8228470541493952,0.5,-0.013764906249350117,-0.30327436540911223,0.07850185011197677,-3.86327666133365,6,6,0,0.8228470541493952,0.5,47,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.6466089611084607,-0.29793257558064135,0.6505978295980511,-0.4579366269400383,256,256,0,0.841662068507175,0.33984375,-0.6466089611084607,-0.29793257558064135,0.6505978295980511,-0.4579366269400383,256,256,0,0.841662068507175,0.33984375,-0.1444541886031152,-0.1444541886031152,0.3131965952614074,-0.4612252840186449,92,92,0,0.9539707445111223,0.3695652173913043,-0.10722036119072653,-0.3719471480713814,0.15660954858425347,-2.3749966169609364,11,11,0,0.4655482857855941,0.2727272727272727,-0.05957880003485383,-0.5263880347534953,0.0948970108641359,-5.546940098114631,6,6,0,0.41340302987048977,0.3333333333333333,-0.05957880003485383,-0.7984062140696647,0.0948970108641359,-8.413396868872333,6,6,0,0.41340302987048977,0.3333333333333333,47,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":24,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.6005407732090036,-0.26805932512193253,0.6387927191998612,-0.4196342836494727,281,281,0,0.8774488689827394,0.35231316725978645,-0.6005407732090036,-0.26805932512193253,0.6387927191998612,-0.4196342836494727,281,281,0,0.8774488689827394,0.35231316725978645,-0.024480316115315648,-0.024480316115315648,0.2519855128818513,-0.09714969656526945,102,102,0,1.0293151581226112,0.39215686274509803,-0.11964081762321821,-0.4070154152943579,0.1683428967723459,-2.417775998263678,14,14,0,0.5505500333089427,0.2857142857142857,-0.028375095073277956,-0.2954690144329696,0.06219966531864255,-4.750331258525458,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864255,-8.48652609665276,5,5,0,0.6053960421433899,0.4,44,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatenone,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.4706430989974525,-0.19451518327409345,0.5616809706533679,-0.3463090142573751,242,242,0,0.9447042371281237,0.3347107438016529,-0.4706430989974525,-0.19451518327409345,0.5616809706533679,-0.3463090142573751,242,242,0,0.9447042371281237,0.3347107438016529,-0.13271417177162215,-0.13271417177162215,0.2617116166888629,-0.5071008060349114,82,82,0,0.979047913071695,0.34146341463414637,-0.06233246204349663,-0.2319862306940914,0.14822962345776766,-1.5650463468942628,10,10,0,0.6756331060599521,0.3,-0.040017720402424795,-0.3915814221988042,0.10803085391904965,-3.62471838362239,5,5,0,0.5616553392900642,0.4,-0.040017720402424795,-0.655192491751758,0.10803085391904965,-6.0648645084552495,5,5,0,0.5616553392900642,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.5128551401604091,-0.21695925263169313,0.5755672924985404,-0.3769485435662474,233,233,0,0.926178142481839,0.33047210300429186,-0.5128551401604091,-0.21695925263169313,0.5755672924985404,-0.3769485435662474,233,233,0,0.926178142481839,0.33047210300429186,-0.21220838546184062,-0.21220838546184062,0.27952684502063546,-0.7591699661124669,81,81,0,0.9297065295002889,0.3333333333333333,-0.08746540107204603,-0.3129669499227493,0.17106020260591076,-1.8295719586148507,10,10,0,0.5882603532606531,0.3,-0.06574877658700273,-0.5628390288874736,0.11743246645738409,-4.792874116220035,5,5,0,0.43107364200197296,0.4,-0.06574877658700273,-0.830196820240262,0.11743246645738409,-7.069568112507779,5,5,0,0.43107364200197296,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":48,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.6912513117446604,-0.3294455643972386,0.6929864099796212,-0.4753997476038912,237,237,0,0.800926823268994,0.3291139240506329,-0.6912513117446604,-0.3294455643972386,0.6929864099796212,-0.4753997476038912,237,237,0,0.800926823268994,0.3291139240506329,-0.13638499831590922,-0.13638499831590922,0.3035069004902209,-0.4493637478937768,84,84,0,0.9511489970634209,0.36904761904761907,-0.0775974300550405,-0.28198312302956663,0.1286253784971024,-2.192282163320662,10,10,0,0.5530748157028904,0.3,-0.028375095073277956,-0.2954690144329696,0.062199665318642405,-4.75033125852547,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.062199665318642405,-8.48652609665278,5,5,0,0.6053960421433899,0.4,40,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback24-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":24,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.5660650937872496,-0.24716146785739046,0.578649820267791,-0.42713478722417575,254,254,0,0.9164107170557702,0.3346456692913386,-0.5660650937872496,-0.24716146785739046,0.578649820267791,-0.42713478722417575,254,254,0,0.9164107170557702,0.3346456692913386,-0.1992547977202359,-0.1992547977202359,0.34824612537547056,-0.572166589090989,91,91,0,0.9485102311741892,0.3516483516483517,-0.15516015887833667,-0.49916726453552107,0.23255362859382642,-2.1464608725041945,13,13,0,0.43047253095745586,0.3076923076923077,-0.028857478159074912,-0.29971288032306775,0.08258203067869029,-3.6292747690982434,4,4,0,0.6466104630029604,0.5,-0.028857478159074912,-0.5339324478741041,0.08258203067869029,-6.465479759773958,4,4,0,0.6466104630029604,0.5,37,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast32-slow128-stop0.012-take0.024-hold24-gatenone,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.786542222414658,-0.40854131041842623,0.861017540282295,-0.4744866292555213,302,302,0,0.8229175644222094,0.32781456953642385,-0.786542222414658,-0.40854131041842623,0.861017540282295,-0.4744866292555213,302,302,0,0.8229175644222094,0.32781456953642385,-0.11481998757692913,-0.11481998757692913,0.44441925225290974,-0.2583596164992138,85,85,0,0.9986126727451927,0.35294117647058826,-0.18747945699332602,-0.5732048008000883,0.23426585214358728,-2.4468132916305576,11,11,0,0.3772729791764065,0.2727272727272727,-0.09864819288927706,-0.7173725147076937,0.14684612660436308,-4.885198753934168,7,7,0,0.5472261236790572,0.2857142857142857,0.0409667543076464,1.8484187618947594,0.06186449016771104,29.878509576071888,3,3,0,2.584222840354499,0.6666666666666666,37,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatenone,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,-0.28627729281695624,-0.10835713789170365,0.5214813833709976,-0.2077871643111277,196,196,0,0.9540491202175713,0.3673469387755102,-0.28627729281695624,-0.10835713789170365,0.5214813833709976,-0.2077871643111277,196,196,0,0.9540491202175713,0.3673469387755102,-0.11121034151288833,-0.11121034151288833,0.2951828877605197,-0.3767506387535333,72,72,0,0.9571006274762208,0.375,-0.05957880003485383,-0.22269419724925088,0.08041497227577686,-2.7693126161324604,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277845,-0.2954690144329687,0.062199665318642516,-4.7503312585254465,5,5,0,0.6053960421433899,0.4,-0.028375095073277845,-0.5278590829297262,0.062199665318642516,-8.48652609665274,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_down,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.29945237454041773,-0.11398881169365283,0.530314676492871,-0.21494561011868427,194,194,0,0.9483744085667555,0.36597938144329895,-0.29945237454041773,-0.11398881169365283,0.530314676492871,-0.21494561011868427,194,194,0,0.9483744085667555,0.36597938144329895,-0.11121034151288833,-0.11121034151288833,0.2951828877605197,-0.3767506387535333,72,72,0,0.9571006274762208,0.375,-0.05957880003485394,-0.22269419724925132,0.08041497227577692,-2.769312616132464,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277956,-0.2954690144329696,0.06219966531864256,-4.750331258525458,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864256,-8.486526096652758,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.01-take0.018-hold16-gatebtc_riskoff,"{""lookback"":96,""stop"":0.01,""take"":0.018,""hold"":16,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.3851138314550674,-0.15242705016447144,0.48199294844789037,-0.3162433198562671,180,180,0,0.9058531726981328,0.35555555555555557,-0.3851138314550674,-0.15242705016447144,0.48199294844789037,-0.3162433198562671,180,180,0,0.9058531726981328,0.35555555555555557,-0.0859546368639783,-0.0859546368639783,0.30819357518911517,-0.27889821133109094,66,66,0,0.9708469882808072,0.3787878787878788,-0.05957880003485383,-0.22269419724925088,0.08041497227577693,-2.7693126161324577,6,6,0,0.41340302987048977,0.3333333333333333,-0.028375095073277956,-0.2954690144329696,0.06219966531864269,-4.750331258525448,5,5,0,0.6053960421433899,0.4,-0.028375095073277956,-0.5278590829297276,0.06219966531864269,-8.48652609665274,5,5,0,0.6053960421433899,0.4,36,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback48-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":48,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.574036589986727,-0.25189327295979647,0.6109241922625275,-0.41231510578574765,217,217,0,0.8924669161351116,0.3225806451612903,-0.574036589986727,-0.25189327295979647,0.6109241922625275,-0.41231510578574765,217,217,0,0.8924669161351116,0.3225806451612903,-0.19871719343179806,-0.19871719343179806,0.31091201108737104,-0.6391428646864192,75,75,0,0.928866478074751,0.3333333333333333,-0.05143163909111159,-0.19470382309438528,0.13832739511465103,-1.4075579384185417,9,9,0,0.7221544828914285,0.3333333333333333,-0.0288574781590748,-0.29971288032306675,0.08258203067869027,-3.6292747690982323,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869027,-6.465479759773942,4,4,0,0.6466104630029604,0.5,33,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast32-slow128-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":32,""slow"":128,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,-0.7212738988967229,-0.3523715236426809,0.7838575077187531,-0.4495351772137536,236,236,0,0.8142901217928814,0.3347457627118644,-0.7212738988967229,-0.3523715236426809,0.7838575077187531,-0.4495351772137536,236,236,0,0.8142901217928814,0.3347457627118644,-0.2378941345508072,-0.2378941345508072,0.4037132144415617,-0.5892651665610585,79,79,0,0.9163572187137603,0.34177215189873417,-0.27834596272944034,-0.7375842447796426,0.28147864981670984,-2.6203914409136697,11,11,0,0.11487871977096797,0.18181818181818182,-0.19944895399743123,-0.9332322835084876,0.19944895399743126,-4.679053285586582,7,7,0,0.11744615856175482,0.14285714285714285,-0.028404477890228597,-0.5282311888937412,0.07491596304639149,-7.050983093771825,2,2,0,0.7046769513705278,0.5,33,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatenone,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,0.12590617074365174,0.041151542023509124,0.4255948904977289,0.09669181407554685,179,179,0,1.084258707079674,0.3687150837988827,0.12590617074365174,0.041151542023509124,0.4255948904977289,0.09669181407554685,179,179,0,1.084258707079674,0.3687150837988827,-0.24471654805063436,-0.24471654805063436,0.34241158916592057,-0.7146853546830547,64,64,0,0.8741952168566461,0.328125,-0.041027778531412706,-0.15786005298160122,0.0842216737902042,-1.8743400110383686,5,5,0,0.5550551598960721,0.4,-0.0288574781590748,-0.29971288032306675,0.08258203067869027,-3.6292747690982323,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869027,-6.465479759773942,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatebtc_down,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,0.09237094310278393,0.030500556515579147,0.4427036039995951,0.0688961107161148,177,177,0,1.0770145768219808,0.3672316384180791,0.09237094310278393,0.030500556515579147,0.4427036039995951,0.0688961107161148,177,177,0,1.0770145768219808,0.3672316384180791,-0.24471654805063403,-0.24471654805063403,0.34241158916592046,-0.7146853546830539,64,64,0,0.8741952168566461,0.328125,-0.041027778531412706,-0.15786005298160122,0.08422167379020422,-1.8743400110383681,5,5,0,0.5550551598960721,0.4,-0.028857478159074912,-0.29971288032306775,0.08258203067869023,-3.629274769098246,4,4,0,0.6466104630029604,0.5,-0.028857478159074912,-0.5339324478741041,0.08258203067869023,-6.465479759773962,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,filtered_breakdown_short,filtered_breakdown_short-1H-lookback96-stop0.012-take0.024-hold24-gatebtc_riskoff,"{""lookback"":96,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_riskoff""}",2023-06-10 23:00,2026-05-19 07:00,-0.12348675138008713,-0.04383172613707009,0.4504772734676288,-0.09730063805365274,166,166,0,1.020782507129253,0.35542168674698793,-0.12348675138008713,-0.04383172613707009,0.4504772734676288,-0.09730063805365274,166,166,0,1.020782507129253,0.35542168674698793,-0.2081981726238067,-0.2081981726238067,0.27759422315453497,-0.7500090248920781,60,60,0,0.8930877091528084,0.3333333333333333,-0.041027778531412484,-0.15786005298160044,0.08422167379020397,-1.8743400110383646,5,5,0,0.5550551598960721,0.4,-0.0288574781590748,-0.29971288032306675,0.08258203067869019,-3.629274769098236,4,4,0,0.6466104630029604,0.5,-0.0288574781590748,-0.5339324478741027,0.08258203067869019,-6.465479759773948,4,4,0,0.6466104630029604,0.5,29,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast48-slow192-stop0.012-take0.024-hold24-gatenone,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""none""}",2023-06-10 23:00,2026-05-19 07:00,0.12697993261130458,0.0414890945441575,0.654296820018723,0.06341020355711077,251,251,0,1.0759942698259573,0.38645418326693226,0.12697993261130458,0.0414890945441575,0.654296820018723,0.06341020355711077,251,251,0,1.0759942698259573,0.38645418326693226,0.801026807463237,0.801026807463237,0.3682987822227841,2.1749374315842713,62,62,0,1.5711306312096098,0.46774193548387094,0.0542297347711409,0.24182483731800652,0.0901421110614849,2.682706611486618,5,5,0,1.763622791099004,0.6,0.08232242047532679,1.6182189953658614,0.03798752252964448,42.598697877784616,3,3,0,3.198014055629825,0.6666666666666666,0.12506068873589915,20.58888071602216,0.025576816624588883,804.9821452849824,2,2,0,999.0,1.0,19,no
+ETH-USDT-SWAP,1H,failed_rebound_short,failed_rebound_short-1H-fast48-slow192-stop0.012-take0.024-hold24-gatebtc_down,"{""fast"":48,""slow"":192,""stop"":0.012,""take"":0.024,""hold"":24,""gate"":""btc_down""}",2023-06-10 23:00,2026-05-19 07:00,0.08129624020590609,0.02693582339643763,0.5287881782583804,0.050938777574706,178,178,0,1.074450557535977,0.39325842696629215,0.08129624020590609,0.02693582339643763,0.5287881782583804,0.050938777574706,178,178,0,1.074450557535977,0.39325842696629215,0.4594306491345608,0.4594306491345608,0.3629126977803245,1.2659536355287844,52,52,0,1.4284006234134197,0.46153846153846156,-0.016025357832036402,-0.06410714177432553,0.09014211106148484,-0.7111786158480227,4,4,0,0.8238498466070183,0.5,0.010195198704735953,0.13135217801295274,0.037987522529644435,3.4577716383175305,2,2,0,1.318468166645854,0.5,0.050085339185078404,2.5756542277995784,0.0011346875283837123,2269.9238013732543,1,1,0,999.0,1.0,12,no

+ 31 - 0
reports/ultrashort/eth-highfreq-short-bidir-candidates.csv

@@ -0,0 +1,31 @@
+symbol,bar,family,name,params_json,first_time,last_time,full_total_return,full_annualized_return,full_max_drawdown,full_calmar,full_trades,full_short_trades,full_long_trades,full_profit_factor,full_win_rate,3y_total_return,3y_annualized_return,3y_max_drawdown,3y_calmar,3y_trades,3y_short_trades,3y_long_trades,3y_profit_factor,3y_win_rate,1y_total_return,1y_annualized_return,1y_max_drawdown,1y_calmar,1y_trades,1y_short_trades,1y_long_trades,1y_profit_factor,1y_win_rate,3m_total_return,3m_annualized_return,3m_max_drawdown,3m_calmar,3m_trades,3m_short_trades,3m_long_trades,3m_profit_factor,3m_win_rate,1m_total_return,1m_annualized_return,1m_max_drawdown,1m_calmar,1m_trades,1m_short_trades,1m_long_trades,1m_profit_factor,1m_win_rate,2w_total_return,2w_annualized_return,2w_max_drawdown,2w_calmar,2w_trades,2w_short_trades,2w_long_trades,2w_profit_factor,2w_win_rate,recent_trigger_score,readonly_observe
+ETH-USDT-SWAP,3m,rsi_bidir,rsi_bidir-3m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 18:57,2026-05-17 09:15,-1.0,0.0,1.0,0.0,142465,97062,45403,0.22558528309332077,0.20395184782227213,-1.0,0.0,1.0,0.0,142465,97062,45403,0.22558528309332077,0.20395184782227213,-1.0,0.0,1.0,0.0,47426,32126,15300,0.2387976861426693,0.217581073672669,-0.9999999999993912,-1.0,0.9999999999993912,-1.0000000000006088,11813,8090,3723,0.18295762947061786,0.18276475069838313,-0.9999369332185989,-1.0,0.9999369332185988,-1.000063070759071,4023,2712,1311,0.10834039551430369,0.14069102659706686,-0.988911185589835,-1.0,0.9889111855898352,-1.0112131550049674,1898,1277,621,0.1019741124218317,0.14014752370916755,27451,no
+ETH-USDT-SWAP,3m,rsi_bidir,rsi_bidir-3m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,139028,95770,43258,0.2255052942211403,0.2025419339989067,-1.0,0.0,1.0,0.0,139028,95770,43258,0.2255052942211403,0.2025419339989067,-1.0,0.0,1.0,0.0,46445,32002,14443,0.24091596228155268,0.2164710948433631,-0.9999999999993244,-1.0,0.9999999999993244,-1.0000000000006757,11563,7971,3592,0.17991197033596718,0.17728963071867163,-0.9999196825584082,-1.0,0.9999196825584082,-1.0000803238930014,3937,2693,1244,0.11632155758060145,0.14046228092456184,-0.9872112380173782,-1.0,0.9872112380173783,-1.0129544331447293,1861,1287,574,0.11087739514968231,0.14132186996238583,26881,no
+ETH-USDT-SWAP,5m,rsi_bidir,rsi_bidir-5m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-19 01:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,86165,58690,27475,0.3060893431585902,0.2485812104682876,-1.0,0.0,1.0,0.0,86165,58690,27475,0.3060893431585902,0.2485812104682876,-1.0,0.0,1.0,0.0,28654,19387,9267,0.33651756695631146,0.2668737349061213,-0.9999999718031202,-1.0,0.9999999718031203,-1.0000000281968806,7213,5014,2199,0.25306555435448486,0.2227921807846943,-0.996039240861567,-1.0,0.9961620253808627,-1.0038527614196795,2442,1690,752,0.18177862949742812,0.1891891891891892,-0.9171521912146805,-1.0,0.9171521912146805,-1.0903315824559012,1157,817,340,0.17822977895828696,0.19101123595505617,16725,no
+ETH-USDT-SWAP,5m,rsi_bidir,rsi_bidir-5m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,84265,57927,26338,0.3060637965021962,0.2453094404557052,-1.0,0.0,1.0,0.0,84265,57927,26338,0.3060637965021962,0.2453094404557052,-1.0,0.0,1.0,0.0,28061,19253,8808,0.3336092252845905,0.2631053775702933,-0.9999999466088837,-1.0,0.9999999466088837,-1.000000053391119,6994,4809,2185,0.25756324944576275,0.2224764083500143,-0.9952191150006002,-1.0,0.9953724838883344,-1.0046490295709085,2351,1621,730,0.18056242581353582,0.1884304551254785,-0.9051669813422452,-1.0,0.9051669813422452,-1.1047685351018104,1086,757,329,0.1822000891750061,0.1887661141804788,16040,no
+ETH-USDT-SWAP,3m,rsi_short,rsi_short-3m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 18:57,2026-05-17 09:15,-1.0,0.0,1.0,0.0,43897,43897,0,0.22416088250228963,0.20835136797503245,-1.0,0.0,1.0,0.0,43897,43897,0,0.22416088250228963,0.20835136797503245,-0.9999999999999984,-0.9999999999999984,0.9999999999999984,-1.0,14495,14495,0,0.23682518007345352,0.22297343911693687,-0.9998526212632951,-0.9999999999999998,0.9998526212632951,-1.0001474004603983,3631,3631,0,0.15439891700702704,0.17047645276783255,-0.9495264358648879,-0.9999999999999999,0.9495264358648879,-1.0531565654505843,1223,1223,0,0.0965185553013068,0.12755519215044972,-0.7341295961938723,-0.999999999999999,0.7341295961938722,-1.3621573155265008,556,556,0,0.1023529170769345,0.14028776978417265,8301,no
+ETH-USDT-SWAP,3m,rsi_short,rsi_short-3m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,41504,41504,0,0.2237022108296303,0.20682343870470316,-1.0,0.0,1.0,0.0,41504,41504,0,0.2237022108296303,0.20682343870470316,-0.9999999999999908,-0.9999999999999908,0.9999999999999907,-1.0000000000000002,13829,13829,0,0.23530064135480017,0.21744160821462144,-0.999685582309514,-0.9999999999999957,0.9996855823095141,-1.0003145165800582,3424,3424,0,0.16723328447290067,0.17143691588785046,-0.9347288310865091,-0.9999999999999962,0.9347288310865092,-1.0698289886250938,1165,1165,0,0.10763651705074627,0.1356223175965665,-0.7132089439649898,-0.9999999999999928,0.7132089439649898,-1.402113656119659,531,531,0,0.10724757058711297,0.1487758945386064,7878,no
+ETH-USDT-SWAP,15m,rsi_bidir,rsi_bidir-15m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-22 08:15,2026-05-19 07:45,-1.0,0.0,1.0,0.0,29354,20354,9000,0.49798652820331607,0.3429515568576685,-1.0,0.0,1.0,0.0,29354,20354,9000,0.49798652820331607,0.3429515568576685,-0.999999999629606,-0.999999999629606,0.9999999996312773,-0.9999999999983287,9872,6914,2958,0.5482839438296688,0.3661871961102107,-0.9960701986512218,-0.9999999998637876,0.9961582155193729,-1.0038566005726426,2403,1656,747,0.47373368988733966,0.33374947981689557,-0.8572616167321379,-0.9999999999482895,0.8579056727580155,-1.1656293129913289,845,637,208,0.3696005820593962,0.29940828402366865,-0.5809959531582236,-0.9999999998585218,0.5842419203179572,-1.7116197333363208,412,339,73,0.38635818709509784,0.3106796116504854,5741,no
+ETH-USDT-SWAP,15m,rsi_bidir,rsi_bidir-15m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-1.0,0.0,1.0,0.0,28943,20344,8599,0.5005823768247128,0.3375945824551705,-1.0,0.0,1.0,0.0,28943,20344,8599,0.5005823768247128,0.3375945824551705,-0.9999999993301468,-0.9999999993301468,0.9999999993418217,-0.9999999999883251,9659,6851,2808,0.5436701873502856,0.3579045449839528,-0.9958597261978673,-0.9999999998312896,0.995931887226701,-1.004084729745843,2371,1703,668,0.462422917507952,0.32939687895402786,-0.8534428401645917,-0.9999999999287006,0.8559971918674246,-1.1682281313880511,788,564,224,0.3435677762216416,0.2982233502538071,-0.5495937042785104,-0.9999999990689495,0.5588818909653964,-1.7892868157556123,383,302,81,0.3796989338640541,0.3185378590078329,5479,no
+ETH-USDT-SWAP,5m,rsi_short,rsi_short-5m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-19 01:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,26763,26763,0,0.3054387667533808,0.2555767290662482,-1.0,0.0,1.0,0.0,26763,26763,0,0.3054387667533808,0.2555767290662482,-0.9999999974474891,-0.9999999974474891,0.9999999974513217,-0.9999999999961674,8751,8751,0,0.3420563145682876,0.2800822763112787,-0.9957186474963966,-0.9999999998064376,0.9957186474963966,-1.0042997611030042,2301,2301,0,0.24291593436545636,0.2299000434593655,-0.8236457861403672,-0.9999999993223152,0.8261400475078863,-1.2104485218201086,788,788,0,0.18471710646965114,0.2017766497461929,-0.5337290986471206,-0.9999999977042349,0.5350853908117701,-1.8688605872553345,380,380,0,0.20426114901297537,0.23157894736842105,5397,no
+ETH-USDT-SWAP,3m,vwap_bidir,vwap_bidir-3m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-1.0,0.0,1.0,0.0,27881,14104,13777,0.6347650230279201,0.46386428033427785,-1.0,0.0,1.0,0.0,27881,14104,13777,0.6347650230279201,0.46386428033427785,-0.9999999999549648,-0.9999999999549648,0.9999999999565032,-0.9999999999984616,9353,4696,4657,0.6546891777894555,0.464770661819737,-0.9956748463768408,-0.9999999997981865,0.9958379308646839,-1.004179464152253,2119,1067,1052,0.6153555444818222,0.4695611137328929,-0.7803690570572943,-0.9999999902140145,0.787482743160301,-1.2698690846238052,688,345,343,0.5640713779018003,0.4694767441860465,-0.5139586514524446,-0.9999999932216629,0.5231261681444518,-1.9115847268139932,333,161,172,0.5562411232460184,0.45345345345345345,4827,no
+ETH-USDT-SWAP,5m,rsi_short,rsi_short-5m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,25205,25205,0,0.3044549953122737,0.2530450307478675,-1.0,0.0,1.0,0.0,25205,25205,0,0.3044549953122737,0.2530450307478675,-0.9999999944846004,-0.9999999944846004,0.999999994492882,-0.9999999999917184,8223,8223,0,0.32698030248444554,0.269974461875228,-0.992789643920343,-0.9999999983585951,0.992789643920343,-1.0072627212445324,2076,2076,0,0.24070967156355208,0.22976878612716764,-0.8109041978758864,-0.9999999984164578,0.8109041978758864,-1.233191295637507,705,705,0,0.16563662042149185,0.19148936170212766,-0.5141314838864086,-0.9999999932842242,0.5141314838864086,-1.9450277305039785,329,329,0,0.1987557064355466,0.23404255319148937,4802,no
+ETH-USDT-SWAP,3m,vwap_bidir,vwap_bidir-3m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,22728,11554,11174,0.6461845935691666,0.43958993312214006,-1.0,0.0,1.0,0.0,22728,11554,11174,0.6461845935691666,0.43958993312214006,-0.9999999950190817,-0.9999999950190817,0.9999999952881533,-0.9999999997309283,7568,3851,3717,0.6808889435973104,0.45084566596194503,-0.987165284518,-0.999999982531396,0.987321719121277,-1.0128410660523124,1673,866,807,0.6367393214767472,0.4584578601315003,-0.7334456467009036,-0.9999998967887622,0.7357891436544313,-1.3590848756235787,518,261,257,0.5536992488920623,0.4594594594594595,-0.4372736305947472,-0.9999996910465674,0.4547289684055758,-2.19911147194533,240,112,128,0.5432456573006763,0.4791666666666667,3669,no
+ETH-USDT-SWAP,5m,vwap_bidir,vwap_bidir-5m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,18736,9436,9300,0.682475520699285,0.460397096498719,-1.0,0.0,1.0,0.0,18736,9436,9300,0.682475520699285,0.460397096498719,-0.9999999561407,-0.9999999561407,0.9999999592202394,-0.9999999969204605,6305,3130,3175,0.7012739015660672,0.46153846153846156,-0.983521413507364,-0.999999951318006,0.9842609603816864,-1.0159906687045843,1382,693,689,0.6448571848456995,0.4602026049204052,-0.7080700064479247,-0.999999687949848,0.7142291747094173,-1.4001103894372502,419,201,218,0.5582511590764095,0.47255369928400953,-0.4922188674363236,-0.9999999787886917,0.5035697079626426,-1.9858223458963045,193,86,107,0.4700089390208719,0.46113989637305697,2992,no
+ETH-USDT-SWAP,5m,vwap_bidir,vwap_bidir-5m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,15516,7725,7791,0.6881729043378586,0.4363237947924723,-1.0,0.0,1.0,0.0,15516,7725,7791,0.6881729043378586,0.4363237947924723,-0.9999998408727846,-0.9999998408727846,0.9999998491559948,-0.9999999917167885,5266,2609,2657,0.6936826778671636,0.42992783896695785,-0.9807637035438117,-0.9999999081730756,0.9812075939949284,-1.0191522306728542,1149,589,560,0.6284000649671256,0.4255874673629243,-0.708441932188459,-0.9999996927525607,0.7132116877839051,-1.4021078312103448,334,165,169,0.5248566159048913,0.4311377245508982,-0.4754787574182182,-0.9999999505890512,0.4833654135272705,-2.068828101066923,152,73,79,0.4452192525647773,0.40131578947368424,2425,no
+ETH-USDT-SWAP,3m,vwap_short,vwap_short-3m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-0.9999999999999981,-0.9999876551417777,0.9999999999999982,-0.9999876551417795,14100,14100,0,0.6378114692086613,0.4595035460992908,-0.9999999999999981,-0.9999876551417777,0.9999999999999982,-0.9999876551417795,14100,14100,0,0.6378114692086613,0.4595035460992908,-0.9999864970078359,-0.9999864970078359,0.9999870305009989,-0.9999994664999178,4695,4695,0,0.6577043754724144,0.45985090521831734,-0.9499320880417819,-0.9999953577053888,0.9540228645939974,-1.0481880412069116,1067,1067,0,0.588010310960185,0.4423617619493908,-0.5119973123235304,-0.9998381409691657,0.5278566705233293,-1.8941470228611548,345,345,0,0.571289962039218,0.4463768115942029,-0.309761747461348,-0.9999365437282396,0.3108519065646886,-3.2167618168368923,161,161,0,0.4974741844532449,0.40372670807453415,2401,no
+ETH-USDT-SWAP,3m,vwap_short,vwap_short-3m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-0.999999999999932,-0.9999592711637442,0.9999999999999332,-0.999959271163811,11553,11553,0,0.6352048386188879,0.43365359646844975,-0.999999999999932,-0.9999592711637442,0.9999999999999332,-0.999959271163811,11553,11553,0,0.6352048386188879,0.43365359646844975,-0.9999635983721048,-0.9999635983721048,0.9999643125670613,-0.9999992857795548,3850,3850,0,0.6484601703632794,0.43272727272727274,-0.9203790826758245,-0.9999688845114618,0.9234311399256871,-1.0828840844504486,866,866,0,0.609220986055208,0.43071593533487296,-0.4497398523879216,-0.9993024456242535,0.4557029015999471,-2.192881463154523,261,261,0,0.5791498477680146,0.4521072796934866,-0.2305509736604726,-0.9989221800826437,0.23823328710010783,-4.193042006186513,112,112,0,0.5304257912070567,0.45535714285714285,1836,no
+ETH-USDT-SWAP,15m,rsi_short,rsi_short-15m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999999940575984,-0.9981993526899764,0.9999999941185719,-0.9981993585608142,8619,8619,0,0.5003018575345637,0.3512008353637313,-0.9999999940575984,-0.9981993526899764,0.9999999941185719,-0.9981993585608142,8619,8619,0,0.5003018575345637,0.3512008353637313,-0.9976845748353311,-0.9976845748353311,0.9977068898370824,-0.9999776337098815,2853,2853,0,0.5262047388887241,0.367683140553803,-0.7894863723713899,-0.9983223995923488,0.7967259846829273,-1.2530310530660684,732,732,0,0.4298216676962984,0.33879781420765026,-0.3990714595948357,-0.9979629058187092,0.39907145959483564,-2.5007122955670864,246,246,0,0.337138086559013,0.32113821138211385,-0.23972229619655128,-0.999211545507223,0.24780769825683305,-4.032205425965498,132,132,0,0.27451437822380437,0.2878787878787879,1752,no
+ETH-USDT-SWAP,15m,rsi_short,rsi_short-15m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-22 08:15,2026-05-19 07:45,-0.9999999972713837,-0.9986195010953189,0.9999999972713837,-0.9986195038201684,8940,8940,0,0.5051134255776378,0.3567114093959732,-0.9999999972713837,-0.9986195010953189,0.9999999972713837,-0.9986195038201684,8940,8940,0,0.5051134255776378,0.3567114093959732,-0.9961642764983547,-0.9961642764983547,0.9962012434355559,-0.999962892098916,3009,3009,0,0.5773271484747541,0.38019275506812894,-0.7195819156882326,-0.9945626882834822,0.7335182936216608,-1.3558798695707304,729,729,0,0.4926843615956164,0.34705075445816186,-0.46162665659273827,-0.9994652101295549,0.4616266565927382,-2.165094228974119,293,293,0,0.3332976418330594,0.3037542662116041,-0.30863846124279704,-0.9999337957336177,0.308638461242797,-3.239822385412292,152,152,0,0.22013587270033674,0.27631578947368424,1923,no
+ETH-USDT-SWAP,5m,vwap_short,vwap_short-5m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-0.9999999999229223,-0.9995749484054403,0.9999999999232304,-0.9995749484821772,9430,9430,0,0.6977494952691845,0.45896076352067866,-0.9999999999229223,-0.9995749484054403,0.9999999999232304,-0.9995749484821772,9430,9430,0,0.6977494952691845,0.45896076352067866,-0.9995628616092793,-0.9995628616092793,0.9995893542031012,-0.9999734965226365,3128,3128,0,0.7124099345061037,0.45684143222506396,-0.8444421713281491,-0.9995148805463012,0.8494317352159932,-1.176686529485674,693,693,0,0.6780281685633182,0.46320346320346323,-0.3456032792587166,-0.9942535421593731,0.37795174915485924,-2.6306361708409365,201,201,0,0.656549949479772,0.48258706467661694,-0.22625989923680845,-0.9987540079949527,0.23989422309645256,-4.163309958461946,86,86,0,0.4952684027207937,0.45348837209302323,1439,no
+ETH-USDT-SWAP,15m,vwap_bidir,vwap_bidir-15m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.9999999999996789,-0.9999318361023033,0.9999999999997042,-0.9999318361025991,8740,4399,4341,0.7200816547869466,0.4172768878718536,-0.9999999999996789,-0.9999318361023033,0.9999999999997042,-0.9999318361025991,8740,4399,4341,0.7200816547869466,0.4172768878718536,-0.9999822461575314,-0.9999822461575314,0.99998297089528,-0.9999992752499096,3034,1510,1524,0.7034591845180137,0.4047462096242584,-0.8728125320346161,-0.9997875701825513,0.8850372730187858,-1.129655892087304,657,342,315,0.7260031699039287,0.4307458143074581,-0.23613795766191292,-0.9622704483257486,0.3096861543850391,-3.107244010429146,162,81,81,0.8241071288757841,0.5061728395061729,-0.14533886227443515,-0.9833363163673113,0.20284032702271415,-4.847834406504368,79,34,45,0.7826940202080628,0.5063291139240507,1297,no
+ETH-USDT-SWAP,5m,vwap_short,vwap_short-5m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-0.9999999988657452,-0.9989593373045542,0.9999999988850217,-0.9989593384183723,7725,7725,0,0.6951248928836765,0.43521035598705504,-0.9999999988657452,-0.9989593373045542,0.9999999988850217,-0.9989593384183723,7725,7725,0,0.6951248928836765,0.43521035598705504,-0.9993810503416231,-0.9993810503416231,0.9993993516612794,-0.9999816876810798,2609,2609,0,0.6905715863668554,0.42161747796090454,-0.8644857789699543,-0.999724473940294,0.8661335586657656,-1.1542382395162223,589,589,0,0.6345099521759333,0.42105263157894735,-0.4562762983221025,-0.9993968358002002,0.46517136745162896,-2.1484487346571752,165,165,0,0.522623004203826,0.3939393939393939,-0.2677541827626435,-0.9997039179872361,0.27068129607039665,-3.6932877612912014,73,73,0,0.397767571730874,0.3424657534246575,1211,no
+ETH-USDT-SWAP,15m,vwap_bidir,vwap_bidir-15m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999999999935804,-0.99981563057339,0.9999999999938619,-0.9998156305795269,7658,3818,3840,0.7229135300783287,0.40676416819012795,-0.9999999999935804,-0.99981563057339,0.9999999999938619,-0.9998156305795269,7658,3818,3840,0.7229135300783287,0.40676416819012795,-0.9999275460129514,-0.9999275460129514,0.999931418650165,-0.9999961270971776,2633,1302,1331,0.7097286065329953,0.3961260919103684,-0.8957450320934823,-0.9999060074462254,0.9060030669078833,-1.1036452788828026,565,310,255,0.6675846528306718,0.39469026548672564,-0.34262208672045413,-0.9939268060167239,0.4229626870220417,-2.349916048185422,136,67,69,0.6851399809015136,0.45588235294117646,-0.1985030411611074,-0.99687690857428,0.24940128084170254,-3.9970801481448994,64,24,40,0.632219278709994,0.453125,1093,no
+ETH-USDT-SWAP,3m,breakdown_short,breakdown_short-3m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-0.9999999983287923,-0.9988140533953996,0.9999999984756247,-0.9988140549179672,6679,6679,0,0.6424480120043733,0.32504865997903876,-0.9999999983287923,-0.9988140533953996,0.9999999984756247,-0.9988140549179672,6679,6679,0,0.6424480120043733,0.32504865997903876,-0.999382639467266,-0.999382639467266,0.9994938093041837,-0.9998887738614458,2269,2269,0,0.6390127173638179,0.3389158219479947,-0.7101217350110847,-0.9937701164860221,0.7308159765058186,-1.359808964819627,497,497,0,0.6868242862046238,0.3561368209255533,-0.3214397798843903,-0.9910671066026628,0.36018911659419867,-2.7515187465234625,159,159,0,0.6274076533439346,0.3270440251572327,-0.16264117028526048,-0.990223230076599,0.23062545627816608,-4.293642367398737,78,78,0,0.6135006156763575,0.32051282051282054,1127,no
+ETH-USDT-SWAP,15m,vwap_short,vwap_short-15m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.999998565974326,-0.9887472484660407,0.9999987033837706,-0.9887485304934321,4398,4398,0,0.7355276014112809,0.4197362437471578,-0.999998565974326,-0.9887472484660407,0.9999987033837706,-0.9887485304934321,4398,4398,0,0.7355276014112809,0.4197362437471578,-0.993669295523174,-0.993669295523174,0.9940889402563314,-0.9995778599719163,1510,1510,0,0.7173522262897275,0.40728476821192056,-0.7005220315654382,-0.9928795466225756,0.7335616751909398,-1.3535052064492568,342,342,0,0.6938140126404916,0.4064327485380117,-0.15513533336525198,-0.8713992117522449,0.23032560035070973,-3.7833363309392967,81,81,0,0.7608639588296193,0.48148148148148145,-0.007288054306459846,-0.17362430433258502,0.07409379325893126,-2.343304299805927,34,34,0,0.9860186774676885,0.5588235294117647,640,no
+ETH-USDT-SWAP,3m,breakdown_short,breakdown_short-3m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-0.99999763502408,-0.9866875138446809,0.9999978599049332,-0.9866896254542808,4220,4220,0,0.6670005235675207,0.32630331753554503,-0.99999763502408,-0.9866875138446809,0.9999978599049332,-0.9866896254542808,4220,4220,0,0.6670005235675207,0.32630331753554503,-0.9924977597293435,-0.9924977597293435,0.9937485198671223,-0.9987413715716064,1432,1432,0,0.653382474826234,0.34217877094972066,-0.6417004589100459,-0.9851437641312131,0.6617704856104312,-1.4886486864437531,317,317,0,0.6277445792825704,0.3501577287066246,-0.30541621693165133,-0.9881336693654661,0.33732599623774273,-2.9293137214039175,104,104,0,0.5071331078186634,0.3076923076923077,-0.15232535155033067,-0.986546583748685,0.191268257524765,-5.157921113078311,52,52,0,0.49215228170089453,0.28846153846153844,733,no
+ETH-USDT-SWAP,5m,breakdown_short,breakdown_short-5m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-0.9998942646372599,-0.9527360586612449,0.9999016777814035,-0.9528297429955209,4086,4086,0,0.7773266449319676,0.34924131179637785,-0.9998942646372599,-0.9527360586612449,0.9999016777814035,-0.9528297429955209,4086,4086,0,0.7773266449319676,0.34924131179637785,-0.9449488836455275,-0.9449488836455275,0.9473549802760262,-0.997460195301029,1398,1398,0,0.804381964006834,0.3562231759656652,-0.44218747763474664,-0.9087323182251456,0.49509717891673205,-1.8354625251823153,311,311,0,0.7931508883168624,0.3762057877813505,-0.23038282058473536,-0.9586626307837308,0.26196874691955924,-3.659454198473912,103,103,0,0.6835829535455828,0.34951456310679613,-0.1233088780025573,-0.9676458914319952,0.15709373081387062,-6.159672231468557,52,52,0,0.6745368744125424,0.38461538461538464,725,no
+ETH-USDT-SWAP,15m,vwap_short,vwap_short-15m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999979393158124,-0.9873263451395025,0.9999980728918325,-0.9873282478278328,3818,3818,0,0.7129711113582604,0.4036144578313253,-0.9999979393158124,-0.9873263451395025,0.9999980728918325,-0.9873282478278328,3818,3818,0,0.7129711113582604,0.4036144578313253,-0.9905150391252561,-0.9905150391252561,0.9910600405328068,-0.9994500823509564,1302,1302,0,0.7064063281114069,0.39400921658986177,-0.7961906301014701,-0.9985309287918075,0.8111353858495869,-1.2310286867166345,310,310,0,0.5848903015610059,0.3580645161290323,-0.2812242700872124,-0.9820021862600922,0.3224826050681707,-3.045132267064462,67,67,0,0.5020329315249633,0.3880597014925373,-0.062187467195504276,-0.8124897003982224,0.11785159811478654,-6.894176348859213,24,24,0,0.6707294239214756,0.4583333333333333,540,no
+ETH-USDT-SWAP,5m,breakdown_short,breakdown_short-5m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-0.9972500263998224,-0.8599840500971031,0.9975103147713651,-0.862130483627346,2636,2636,0,0.7929182760842965,0.3516691957511381,-0.9972500263998224,-0.8599840500971031,0.9975103147713651,-0.862130483627346,2636,2636,0,0.7929182760842965,0.3516691957511381,-0.7133493464210348,-0.7133493464210348,0.7400793372203669,-0.9638822630831362,904,904,0,0.8819513479339048,0.375,-0.31485945956716965,-0.7879139454412698,0.360956843035073,-2.182848062433632,203,203,0,0.8051181494246616,0.3645320197044335,-0.1837931719588105,-0.915491047192427,0.2142151566347554,-4.273698750240032,63,63,0,0.5914547180922322,0.3492063492063492,-0.0897178492111067,-0.91376953990212,0.12342164248410181,-7.403641059304688,30,30,0,0.5525093813290584,0.36666666666666664,449,no
+ETH-USDT-SWAP,15m,breakdown_short,breakdown_short-15m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.9816899876158605,-0.7365970511358882,0.9849341433517138,-0.7478642669745017,1552,1552,0,0.8106167790762198,0.3382731958762887,-0.9816899876158605,-0.7365970511358882,0.9849341433517138,-0.7478642669745017,1552,1552,0,0.8106167790762198,0.3382731958762887,-0.6627415579627207,-0.6627415579627207,0.7142418359316473,-0.9278951814664422,552,552,0,0.8622058700404764,0.3496376811594203,0.02106190284900311,0.08924021624394696,0.1866309269258001,0.47816413771243116,113,113,0,1.0439709218864883,0.3805309734513274,-0.09001741156497833,-0.6826275883378357,0.14477129085068074,-4.715213799135824,32,32,0,0.7314776162042558,0.28125,-0.07415385348235937,-0.8658411513928107,0.08658006523631612,-10.000467763907766,16,16,0,0.5059189899174716,0.25,241,no
+ETH-USDT-SWAP,15m,breakdown_short,breakdown_short-15m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.8812095554252265,-0.5087460556171569,0.9174139041792305,-0.5545436506898263,970,970,0,0.8453401346267548,0.3402061855670103,-0.8812095554252265,-0.5087460556171569,0.9174139041792305,-0.5545436506898263,970,970,0,0.8453401346267548,0.3402061855670103,-0.20162951537149532,-0.20162951537149532,0.39400647145970125,-0.5117416336450146,352,352,0,0.971720750593225,0.375,0.1676396050458766,0.8881729822136988,0.17199814287556303,5.163852163545004,74,74,0,1.252497498607885,0.43243243243243246,-0.06435643830011151,-0.5548460061279052,0.12543308840504222,-4.423442117092935,19,19,0,0.635515132675228,0.2631578947368421,-0.007956520453661908,-0.18801019970231503,0.056503126348991524,-3.327430035305837,10,10,0,0.8566905863671753,0.3,152,no

+ 50 - 0
reports/ultrashort/eth-highfreq-short-bidir-report.md

@@ -0,0 +1,50 @@
+# ETH high-frequency short/bidirectional candidate search
+
+Run command: `rtk .venv/bin/python /home/lxy/okx-codex-trader/scripts/search_eth_high_freq_short_bidir_candidates.py --bars 3m 5m 15m --years 3`
+Scope: local OKX ETH candle CSV only; no live executor, deployment, private API, or order path touched.
+Cost model: taker fee `0.0004` each side on `3x` notional; entries execute on next open.
+
+Output files:
+- `reports/ultrashort/eth-highfreq-short-bidir-candidates.csv`
+- `reports/ultrashort/eth-highfreq-short-bidir-top.csv`
+- `reports/ultrashort/eth-highfreq-short-bidir-report.md`
+
+Selection rule for `readonly_observe`: 3m >= 12 trades, 1m >= 4 trades, 2w >= 1 trade, positive 3y/1y return, 3y MDD <= 35%, 1y MDD <= 25%.
+
+## Read-only observation candidates
+
+No candidates passed the read-only observation rule.
+
+## Least-bad risk rows
+
+| family | bar | name | full_total_return | full_max_drawdown | full_trades | 3y_total_return | 3y_max_drawdown | 3y_trades | 1y_total_return | 1y_max_drawdown | 1y_trades | 3m_trades | 1m_trades | 2w_trades | readonly_observe |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| breakdown_short | 15m | breakdown_short-15m-lookback96-stop0.006-take0.012-hold12 | -0.8812 | 0.9174 | 970 | -0.8812 | 0.9174 | 970 | -0.2016 | 0.3940 | 352 | 74 | 19 | 10 | no |
+| breakdown_short | 15m | breakdown_short-15m-lookback48-stop0.006-take0.012-hold12 | -0.9817 | 0.9849 | 1552 | -0.9817 | 0.9849 | 1552 | -0.6627 | 0.7142 | 552 | 113 | 32 | 16 | no |
+| breakdown_short | 5m | breakdown_short-5m-lookback96-stop0.006-take0.012-hold12 | -0.9973 | 0.9975 | 2636 | -0.9973 | 0.9975 | 2636 | -0.7133 | 0.7401 | 904 | 203 | 63 | 30 | no |
+| breakdown_short | 5m | breakdown_short-5m-lookback48-stop0.006-take0.012-hold12 | -0.9999 | 0.9999 | 4086 | -0.9999 | 0.9999 | 4086 | -0.9449 | 0.9474 | 1398 | 311 | 103 | 52 | no |
+| breakdown_short | 3m | breakdown_short-3m-lookback96-stop0.006-take0.012-hold12 | -1.0000 | 1.0000 | 4220 | -1.0000 | 1.0000 | 4220 | -0.9925 | 0.9937 | 1432 | 317 | 104 | 52 | no |
+| vwap_short | 15m | vwap_short-15m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 3818 | -1.0000 | 1.0000 | 3818 | -0.9905 | 0.9911 | 1302 | 310 | 67 | 24 | no |
+| vwap_short | 15m | vwap_short-15m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 4398 | -1.0000 | 1.0000 | 4398 | -0.9937 | 0.9941 | 1510 | 342 | 81 | 34 | no |
+| rsi_short | 15m | rsi_short-15m-trend96-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 8619 | -1.0000 | 1.0000 | 8619 | -0.9977 | 0.9977 | 2853 | 732 | 246 | 132 | no |
+| rsi_short | 15m | rsi_short-15m-trend192-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 8940 | -1.0000 | 1.0000 | 8940 | -0.9962 | 0.9962 | 3009 | 729 | 293 | 152 | no |
+| breakdown_short | 3m | breakdown_short-3m-lookback48-stop0.006-take0.012-hold12 | -1.0000 | 1.0000 | 6679 | -1.0000 | 1.0000 | 6679 | -0.9994 | 0.9995 | 2269 | 497 | 159 | 78 | no |
+| vwap_short | 5m | vwap_short-5m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 7725 | -1.0000 | 1.0000 | 7725 | -0.9994 | 0.9994 | 2609 | 589 | 165 | 73 | no |
+| vwap_short | 5m | vwap_short-5m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 9430 | -1.0000 | 1.0000 | 9430 | -0.9996 | 0.9996 | 3128 | 693 | 201 | 86 | no |
+
+## Most recently active candidates
+
+| family | bar | name | full_total_return | full_max_drawdown | full_trades | 3y_total_return | 3y_max_drawdown | 3y_trades | 1y_total_return | 1y_max_drawdown | 1y_trades | 3m_trades | 1m_trades | 2w_trades | readonly_observe |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| rsi_bidir | 3m | rsi_bidir-3m-trend192-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 142465 | -1.0000 | 1.0000 | 142465 | -1.0000 | 1.0000 | 47426 | 11813 | 4023 | 1898 | no |
+| rsi_bidir | 3m | rsi_bidir-3m-trend96-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 139028 | -1.0000 | 1.0000 | 139028 | -1.0000 | 1.0000 | 46445 | 11563 | 3937 | 1861 | no |
+| rsi_bidir | 5m | rsi_bidir-5m-trend192-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 86165 | -1.0000 | 1.0000 | 86165 | -1.0000 | 1.0000 | 28654 | 7213 | 2442 | 1157 | no |
+| rsi_bidir | 5m | rsi_bidir-5m-trend96-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 84265 | -1.0000 | 1.0000 | 84265 | -1.0000 | 1.0000 | 28061 | 6994 | 2351 | 1086 | no |
+| rsi_short | 3m | rsi_short-3m-trend192-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 43897 | -1.0000 | 1.0000 | 43897 | -1.0000 | 1.0000 | 14495 | 3631 | 1223 | 556 | no |
+| rsi_short | 3m | rsi_short-3m-trend96-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 41504 | -1.0000 | 1.0000 | 41504 | -1.0000 | 1.0000 | 13829 | 3424 | 1165 | 531 | no |
+| rsi_bidir | 15m | rsi_bidir-15m-trend192-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 29354 | -1.0000 | 1.0000 | 29354 | -1.0000 | 1.0000 | 9872 | 2403 | 845 | 412 | no |
+| rsi_bidir | 15m | rsi_bidir-15m-trend96-entry10-exit55-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 28943 | -1.0000 | 1.0000 | 28943 | -1.0000 | 1.0000 | 9659 | 2371 | 788 | 383 | no |
+| rsi_short | 5m | rsi_short-5m-trend192-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 26763 | -1.0000 | 1.0000 | 26763 | -1.0000 | 1.0000 | 8751 | 2301 | 788 | 380 | no |
+| vwap_bidir | 3m | vwap_bidir-3m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 27881 | -1.0000 | 1.0000 | 27881 | -1.0000 | 1.0000 | 9353 | 2119 | 688 | 333 | no |
+| rsi_short | 5m | rsi_short-5m-trend96-entry90-exit45-stop0.0075-take0.01-hold12 | -1.0000 | 1.0000 | 25205 | -1.0000 | 1.0000 | 25205 | -1.0000 | 1.0000 | 8223 | 2076 | 705 | 329 | no |
+| vwap_bidir | 3m | vwap_bidir-3m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12 | -1.0000 | 1.0000 | 22728 | -1.0000 | 1.0000 | 22728 | -1.0000 | 1.0000 | 7568 | 1673 | 518 | 240 | no |

+ 31 - 0
reports/ultrashort/eth-highfreq-short-bidir-top.csv

@@ -0,0 +1,31 @@
+symbol,bar,family,name,params_json,first_time,last_time,full_total_return,full_annualized_return,full_max_drawdown,full_calmar,full_trades,full_short_trades,full_long_trades,full_profit_factor,full_win_rate,3y_total_return,3y_annualized_return,3y_max_drawdown,3y_calmar,3y_trades,3y_short_trades,3y_long_trades,3y_profit_factor,3y_win_rate,1y_total_return,1y_annualized_return,1y_max_drawdown,1y_calmar,1y_trades,1y_short_trades,1y_long_trades,1y_profit_factor,1y_win_rate,3m_total_return,3m_annualized_return,3m_max_drawdown,3m_calmar,3m_trades,3m_short_trades,3m_long_trades,3m_profit_factor,3m_win_rate,1m_total_return,1m_annualized_return,1m_max_drawdown,1m_calmar,1m_trades,1m_short_trades,1m_long_trades,1m_profit_factor,1m_win_rate,2w_total_return,2w_annualized_return,2w_max_drawdown,2w_calmar,2w_trades,2w_short_trades,2w_long_trades,2w_profit_factor,2w_win_rate,recent_trigger_score,readonly_observe
+ETH-USDT-SWAP,3m,rsi_bidir,rsi_bidir-3m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 18:57,2026-05-17 09:15,-1.0,0.0,1.0,0.0,142465,97062,45403,0.22558528309332077,0.20395184782227213,-1.0,0.0,1.0,0.0,142465,97062,45403,0.22558528309332077,0.20395184782227213,-1.0,0.0,1.0,0.0,47426,32126,15300,0.2387976861426693,0.217581073672669,-0.9999999999993912,-1.0,0.9999999999993912,-1.0000000000006088,11813,8090,3723,0.18295762947061786,0.18276475069838313,-0.9999369332185989,-1.0,0.9999369332185988,-1.000063070759071,4023,2712,1311,0.10834039551430369,0.14069102659706686,-0.988911185589835,-1.0,0.9889111855898352,-1.0112131550049674,1898,1277,621,0.1019741124218317,0.14014752370916755,27451,no
+ETH-USDT-SWAP,3m,rsi_bidir,rsi_bidir-3m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,139028,95770,43258,0.2255052942211403,0.2025419339989067,-1.0,0.0,1.0,0.0,139028,95770,43258,0.2255052942211403,0.2025419339989067,-1.0,0.0,1.0,0.0,46445,32002,14443,0.24091596228155268,0.2164710948433631,-0.9999999999993244,-1.0,0.9999999999993244,-1.0000000000006757,11563,7971,3592,0.17991197033596718,0.17728963071867163,-0.9999196825584082,-1.0,0.9999196825584082,-1.0000803238930014,3937,2693,1244,0.11632155758060145,0.14046228092456184,-0.9872112380173782,-1.0,0.9872112380173783,-1.0129544331447293,1861,1287,574,0.11087739514968231,0.14132186996238583,26881,no
+ETH-USDT-SWAP,5m,rsi_bidir,rsi_bidir-5m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-19 01:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,86165,58690,27475,0.3060893431585902,0.2485812104682876,-1.0,0.0,1.0,0.0,86165,58690,27475,0.3060893431585902,0.2485812104682876,-1.0,0.0,1.0,0.0,28654,19387,9267,0.33651756695631146,0.2668737349061213,-0.9999999718031202,-1.0,0.9999999718031203,-1.0000000281968806,7213,5014,2199,0.25306555435448486,0.2227921807846943,-0.996039240861567,-1.0,0.9961620253808627,-1.0038527614196795,2442,1690,752,0.18177862949742812,0.1891891891891892,-0.9171521912146805,-1.0,0.9171521912146805,-1.0903315824559012,1157,817,340,0.17822977895828696,0.19101123595505617,16725,no
+ETH-USDT-SWAP,5m,rsi_bidir,rsi_bidir-5m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,84265,57927,26338,0.3060637965021962,0.2453094404557052,-1.0,0.0,1.0,0.0,84265,57927,26338,0.3060637965021962,0.2453094404557052,-1.0,0.0,1.0,0.0,28061,19253,8808,0.3336092252845905,0.2631053775702933,-0.9999999466088837,-1.0,0.9999999466088837,-1.000000053391119,6994,4809,2185,0.25756324944576275,0.2224764083500143,-0.9952191150006002,-1.0,0.9953724838883344,-1.0046490295709085,2351,1621,730,0.18056242581353582,0.1884304551254785,-0.9051669813422452,-1.0,0.9051669813422452,-1.1047685351018104,1086,757,329,0.1822000891750061,0.1887661141804788,16040,no
+ETH-USDT-SWAP,3m,rsi_short,rsi_short-3m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 18:57,2026-05-17 09:15,-1.0,0.0,1.0,0.0,43897,43897,0,0.22416088250228963,0.20835136797503245,-1.0,0.0,1.0,0.0,43897,43897,0,0.22416088250228963,0.20835136797503245,-0.9999999999999984,-0.9999999999999984,0.9999999999999984,-1.0,14495,14495,0,0.23682518007345352,0.22297343911693687,-0.9998526212632951,-0.9999999999999998,0.9998526212632951,-1.0001474004603983,3631,3631,0,0.15439891700702704,0.17047645276783255,-0.9495264358648879,-0.9999999999999999,0.9495264358648879,-1.0531565654505843,1223,1223,0,0.0965185553013068,0.12755519215044972,-0.7341295961938723,-0.999999999999999,0.7341295961938722,-1.3621573155265008,556,556,0,0.1023529170769345,0.14028776978417265,8301,no
+ETH-USDT-SWAP,3m,rsi_short,rsi_short-3m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,41504,41504,0,0.2237022108296303,0.20682343870470316,-1.0,0.0,1.0,0.0,41504,41504,0,0.2237022108296303,0.20682343870470316,-0.9999999999999908,-0.9999999999999908,0.9999999999999907,-1.0000000000000002,13829,13829,0,0.23530064135480017,0.21744160821462144,-0.999685582309514,-0.9999999999999957,0.9996855823095141,-1.0003145165800582,3424,3424,0,0.16723328447290067,0.17143691588785046,-0.9347288310865091,-0.9999999999999962,0.9347288310865092,-1.0698289886250938,1165,1165,0,0.10763651705074627,0.1356223175965665,-0.7132089439649898,-0.9999999999999928,0.7132089439649898,-1.402113656119659,531,531,0,0.10724757058711297,0.1487758945386064,7878,no
+ETH-USDT-SWAP,15m,rsi_bidir,rsi_bidir-15m-trend192-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-22 08:15,2026-05-19 07:45,-1.0,0.0,1.0,0.0,29354,20354,9000,0.49798652820331607,0.3429515568576685,-1.0,0.0,1.0,0.0,29354,20354,9000,0.49798652820331607,0.3429515568576685,-0.999999999629606,-0.999999999629606,0.9999999996312773,-0.9999999999983287,9872,6914,2958,0.5482839438296688,0.3661871961102107,-0.9960701986512218,-0.9999999998637876,0.9961582155193729,-1.0038566005726426,2403,1656,747,0.47373368988733966,0.33374947981689557,-0.8572616167321379,-0.9999999999482895,0.8579056727580155,-1.1656293129913289,845,637,208,0.3696005820593962,0.29940828402366865,-0.5809959531582236,-0.9999999998585218,0.5842419203179572,-1.7116197333363208,412,339,73,0.38635818709509784,0.3106796116504854,5741,no
+ETH-USDT-SWAP,15m,rsi_bidir,rsi_bidir-15m-trend96-entry10-exit55-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":10,""exit"":55,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-1.0,0.0,1.0,0.0,28943,20344,8599,0.5005823768247128,0.3375945824551705,-1.0,0.0,1.0,0.0,28943,20344,8599,0.5005823768247128,0.3375945824551705,-0.9999999993301468,-0.9999999993301468,0.9999999993418217,-0.9999999999883251,9659,6851,2808,0.5436701873502856,0.3579045449839528,-0.9958597261978673,-0.9999999998312896,0.995931887226701,-1.004084729745843,2371,1703,668,0.462422917507952,0.32939687895402786,-0.8534428401645917,-0.9999999999287006,0.8559971918674246,-1.1682281313880511,788,564,224,0.3435677762216416,0.2982233502538071,-0.5495937042785104,-0.9999999990689495,0.5588818909653964,-1.7892868157556123,383,302,81,0.3796989338640541,0.3185378590078329,5479,no
+ETH-USDT-SWAP,5m,rsi_short,rsi_short-5m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-19 01:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,26763,26763,0,0.3054387667533808,0.2555767290662482,-1.0,0.0,1.0,0.0,26763,26763,0,0.3054387667533808,0.2555767290662482,-0.9999999974474891,-0.9999999974474891,0.9999999974513217,-0.9999999999961674,8751,8751,0,0.3420563145682876,0.2800822763112787,-0.9957186474963966,-0.9999999998064376,0.9957186474963966,-1.0042997611030042,2301,2301,0,0.24291593436545636,0.2299000434593655,-0.8236457861403672,-0.9999999993223152,0.8261400475078863,-1.2104485218201086,788,788,0,0.18471710646965114,0.2017766497461929,-0.5337290986471206,-0.9999999977042349,0.5350853908117701,-1.8688605872553345,380,380,0,0.20426114901297537,0.23157894736842105,5397,no
+ETH-USDT-SWAP,3m,vwap_bidir,vwap_bidir-3m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-1.0,0.0,1.0,0.0,27881,14104,13777,0.6347650230279201,0.46386428033427785,-1.0,0.0,1.0,0.0,27881,14104,13777,0.6347650230279201,0.46386428033427785,-0.9999999999549648,-0.9999999999549648,0.9999999999565032,-0.9999999999984616,9353,4696,4657,0.6546891777894555,0.464770661819737,-0.9956748463768408,-0.9999999997981865,0.9958379308646839,-1.004179464152253,2119,1067,1052,0.6153555444818222,0.4695611137328929,-0.7803690570572943,-0.9999999902140145,0.787482743160301,-1.2698690846238052,688,345,343,0.5640713779018003,0.4694767441860465,-0.5139586514524446,-0.9999999932216629,0.5231261681444518,-1.9115847268139932,333,161,172,0.5562411232460184,0.45345345345345345,4827,no
+ETH-USDT-SWAP,5m,rsi_short,rsi_short-5m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,25205,25205,0,0.3044549953122737,0.2530450307478675,-1.0,0.0,1.0,0.0,25205,25205,0,0.3044549953122737,0.2530450307478675,-0.9999999944846004,-0.9999999944846004,0.999999994492882,-0.9999999999917184,8223,8223,0,0.32698030248444554,0.269974461875228,-0.992789643920343,-0.9999999983585951,0.992789643920343,-1.0072627212445324,2076,2076,0,0.24070967156355208,0.22976878612716764,-0.8109041978758864,-0.9999999984164578,0.8109041978758864,-1.233191295637507,705,705,0,0.16563662042149185,0.19148936170212766,-0.5141314838864086,-0.9999999932842242,0.5141314838864086,-1.9450277305039785,329,329,0,0.1987557064355466,0.23404255319148937,4802,no
+ETH-USDT-SWAP,3m,vwap_bidir,vwap_bidir-3m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-1.0,0.0,1.0,0.0,22728,11554,11174,0.6461845935691666,0.43958993312214006,-1.0,0.0,1.0,0.0,22728,11554,11174,0.6461845935691666,0.43958993312214006,-0.9999999950190817,-0.9999999950190817,0.9999999952881533,-0.9999999997309283,7568,3851,3717,0.6808889435973104,0.45084566596194503,-0.987165284518,-0.999999982531396,0.987321719121277,-1.0128410660523124,1673,866,807,0.6367393214767472,0.4584578601315003,-0.7334456467009036,-0.9999998967887622,0.7357891436544313,-1.3590848756235787,518,261,257,0.5536992488920623,0.4594594594594595,-0.4372736305947472,-0.9999996910465674,0.4547289684055758,-2.19911147194533,240,112,128,0.5432456573006763,0.4791666666666667,3669,no
+ETH-USDT-SWAP,5m,vwap_bidir,vwap_bidir-5m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,18736,9436,9300,0.682475520699285,0.460397096498719,-1.0,0.0,1.0,0.0,18736,9436,9300,0.682475520699285,0.460397096498719,-0.9999999561407,-0.9999999561407,0.9999999592202394,-0.9999999969204605,6305,3130,3175,0.7012739015660672,0.46153846153846156,-0.983521413507364,-0.999999951318006,0.9842609603816864,-1.0159906687045843,1382,693,689,0.6448571848456995,0.4602026049204052,-0.7080700064479247,-0.999999687949848,0.7142291747094173,-1.4001103894372502,419,201,218,0.5582511590764095,0.47255369928400953,-0.4922188674363236,-0.9999999787886917,0.5035697079626426,-1.9858223458963045,193,86,107,0.4700089390208719,0.46113989637305697,2992,no
+ETH-USDT-SWAP,5m,vwap_bidir,vwap_bidir-5m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-1.0,0.0,1.0,0.0,15516,7725,7791,0.6881729043378586,0.4363237947924723,-1.0,0.0,1.0,0.0,15516,7725,7791,0.6881729043378586,0.4363237947924723,-0.9999998408727846,-0.9999998408727846,0.9999998491559948,-0.9999999917167885,5266,2609,2657,0.6936826778671636,0.42992783896695785,-0.9807637035438117,-0.9999999081730756,0.9812075939949284,-1.0191522306728542,1149,589,560,0.6284000649671256,0.4255874673629243,-0.708441932188459,-0.9999996927525607,0.7132116877839051,-1.4021078312103448,334,165,169,0.5248566159048913,0.4311377245508982,-0.4754787574182182,-0.9999999505890512,0.4833654135272705,-2.068828101066923,152,73,79,0.4452192525647773,0.40131578947368424,2425,no
+ETH-USDT-SWAP,3m,vwap_short,vwap_short-3m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-0.9999999999999981,-0.9999876551417777,0.9999999999999982,-0.9999876551417795,14100,14100,0,0.6378114692086613,0.4595035460992908,-0.9999999999999981,-0.9999876551417777,0.9999999999999982,-0.9999876551417795,14100,14100,0,0.6378114692086613,0.4595035460992908,-0.9999864970078359,-0.9999864970078359,0.9999870305009989,-0.9999994664999178,4695,4695,0,0.6577043754724144,0.45985090521831734,-0.9499320880417819,-0.9999953577053888,0.9540228645939974,-1.0481880412069116,1067,1067,0,0.588010310960185,0.4423617619493908,-0.5119973123235304,-0.9998381409691657,0.5278566705233293,-1.8941470228611548,345,345,0,0.571289962039218,0.4463768115942029,-0.309761747461348,-0.9999365437282396,0.3108519065646886,-3.2167618168368923,161,161,0,0.4974741844532449,0.40372670807453415,2401,no
+ETH-USDT-SWAP,3m,vwap_short,vwap_short-3m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-0.999999999999932,-0.9999592711637442,0.9999999999999332,-0.999959271163811,11553,11553,0,0.6352048386188879,0.43365359646844975,-0.999999999999932,-0.9999592711637442,0.9999999999999332,-0.999959271163811,11553,11553,0,0.6352048386188879,0.43365359646844975,-0.9999635983721048,-0.9999635983721048,0.9999643125670613,-0.9999992857795548,3850,3850,0,0.6484601703632794,0.43272727272727274,-0.9203790826758245,-0.9999688845114618,0.9234311399256871,-1.0828840844504486,866,866,0,0.609220986055208,0.43071593533487296,-0.4497398523879216,-0.9993024456242535,0.4557029015999471,-2.192881463154523,261,261,0,0.5791498477680146,0.4521072796934866,-0.2305509736604726,-0.9989221800826437,0.23823328710010783,-4.193042006186513,112,112,0,0.5304257912070567,0.45535714285714285,1836,no
+ETH-USDT-SWAP,15m,rsi_short,rsi_short-15m-trend96-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":96,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999999940575984,-0.9981993526899764,0.9999999941185719,-0.9981993585608142,8619,8619,0,0.5003018575345637,0.3512008353637313,-0.9999999940575984,-0.9981993526899764,0.9999999941185719,-0.9981993585608142,8619,8619,0,0.5003018575345637,0.3512008353637313,-0.9976845748353311,-0.9976845748353311,0.9977068898370824,-0.9999776337098815,2853,2853,0,0.5262047388887241,0.367683140553803,-0.7894863723713899,-0.9983223995923488,0.7967259846829273,-1.2530310530660684,732,732,0,0.4298216676962984,0.33879781420765026,-0.3990714595948357,-0.9979629058187092,0.39907145959483564,-2.5007122955670864,246,246,0,0.337138086559013,0.32113821138211385,-0.23972229619655128,-0.999211545507223,0.24780769825683305,-4.032205425965498,132,132,0,0.27451437822380437,0.2878787878787879,1752,no
+ETH-USDT-SWAP,15m,rsi_short,rsi_short-15m-trend192-entry90-exit45-stop0.0075-take0.01-hold12,"{""trend"":192,""entry"":90,""exit"":45,""stop"":0.0075,""take"":0.01,""hold"":12}",2023-05-22 08:15,2026-05-19 07:45,-0.9999999972713837,-0.9986195010953189,0.9999999972713837,-0.9986195038201684,8940,8940,0,0.5051134255776378,0.3567114093959732,-0.9999999972713837,-0.9986195010953189,0.9999999972713837,-0.9986195038201684,8940,8940,0,0.5051134255776378,0.3567114093959732,-0.9961642764983547,-0.9961642764983547,0.9962012434355559,-0.999962892098916,3009,3009,0,0.5773271484747541,0.38019275506812894,-0.7195819156882326,-0.9945626882834822,0.7335182936216608,-1.3558798695707304,729,729,0,0.4926843615956164,0.34705075445816186,-0.46162665659273827,-0.9994652101295549,0.4616266565927382,-2.165094228974119,293,293,0,0.3332976418330594,0.3037542662116041,-0.30863846124279704,-0.9999337957336177,0.308638461242797,-3.239822385412292,152,152,0,0.22013587270033674,0.27631578947368424,1923,no
+ETH-USDT-SWAP,5m,vwap_short,vwap_short-5m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-0.9999999999229223,-0.9995749484054403,0.9999999999232304,-0.9995749484821772,9430,9430,0,0.6977494952691845,0.45896076352067866,-0.9999999999229223,-0.9995749484054403,0.9999999999232304,-0.9995749484821772,9430,9430,0,0.6977494952691845,0.45896076352067866,-0.9995628616092793,-0.9995628616092793,0.9995893542031012,-0.9999734965226365,3128,3128,0,0.7124099345061037,0.45684143222506396,-0.8444421713281491,-0.9995148805463012,0.8494317352159932,-1.176686529485674,693,693,0,0.6780281685633182,0.46320346320346323,-0.3456032792587166,-0.9942535421593731,0.37795174915485924,-2.6306361708409365,201,201,0,0.656549949479772,0.48258706467661694,-0.22625989923680845,-0.9987540079949527,0.23989422309645256,-4.163309958461946,86,86,0,0.4952684027207937,0.45348837209302323,1439,no
+ETH-USDT-SWAP,15m,vwap_bidir,vwap_bidir-15m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.9999999999996789,-0.9999318361023033,0.9999999999997042,-0.9999318361025991,8740,4399,4341,0.7200816547869466,0.4172768878718536,-0.9999999999996789,-0.9999318361023033,0.9999999999997042,-0.9999318361025991,8740,4399,4341,0.7200816547869466,0.4172768878718536,-0.9999822461575314,-0.9999822461575314,0.99998297089528,-0.9999992752499096,3034,1510,1524,0.7034591845180137,0.4047462096242584,-0.8728125320346161,-0.9997875701825513,0.8850372730187858,-1.129655892087304,657,342,315,0.7260031699039287,0.4307458143074581,-0.23613795766191292,-0.9622704483257486,0.3096861543850391,-3.107244010429146,162,81,81,0.8241071288757841,0.5061728395061729,-0.14533886227443515,-0.9833363163673113,0.20284032702271415,-4.847834406504368,79,34,45,0.7826940202080628,0.5063291139240507,1297,no
+ETH-USDT-SWAP,5m,vwap_short,vwap_short-5m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-0.9999999988657452,-0.9989593373045542,0.9999999988850217,-0.9989593384183723,7725,7725,0,0.6951248928836765,0.43521035598705504,-0.9999999988657452,-0.9989593373045542,0.9999999988850217,-0.9989593384183723,7725,7725,0,0.6951248928836765,0.43521035598705504,-0.9993810503416231,-0.9993810503416231,0.9993993516612794,-0.9999816876810798,2609,2609,0,0.6905715863668554,0.42161747796090454,-0.8644857789699543,-0.999724473940294,0.8661335586657656,-1.1542382395162223,589,589,0,0.6345099521759333,0.42105263157894735,-0.4562762983221025,-0.9993968358002002,0.46517136745162896,-2.1484487346571752,165,165,0,0.522623004203826,0.3939393939393939,-0.2677541827626435,-0.9997039179872361,0.27068129607039665,-3.6932877612912014,73,73,0,0.397767571730874,0.3424657534246575,1211,no
+ETH-USDT-SWAP,15m,vwap_bidir,vwap_bidir-15m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999999999935804,-0.99981563057339,0.9999999999938619,-0.9998156305795269,7658,3818,3840,0.7229135300783287,0.40676416819012795,-0.9999999999935804,-0.99981563057339,0.9999999999938619,-0.9998156305795269,7658,3818,3840,0.7229135300783287,0.40676416819012795,-0.9999275460129514,-0.9999275460129514,0.999931418650165,-0.9999961270971776,2633,1302,1331,0.7097286065329953,0.3961260919103684,-0.8957450320934823,-0.9999060074462254,0.9060030669078833,-1.1036452788828026,565,310,255,0.6675846528306718,0.39469026548672564,-0.34262208672045413,-0.9939268060167239,0.4229626870220417,-2.349916048185422,136,67,69,0.6851399809015136,0.45588235294117646,-0.1985030411611074,-0.99687690857428,0.24940128084170254,-3.9970801481448994,64,24,40,0.632219278709994,0.453125,1093,no
+ETH-USDT-SWAP,3m,breakdown_short,breakdown_short-3m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 11:45,2026-05-17 09:15,-0.9999999983287923,-0.9988140533953996,0.9999999984756247,-0.9988140549179672,6679,6679,0,0.6424480120043733,0.32504865997903876,-0.9999999983287923,-0.9988140533953996,0.9999999984756247,-0.9988140549179672,6679,6679,0,0.6424480120043733,0.32504865997903876,-0.999382639467266,-0.999382639467266,0.9994938093041837,-0.9998887738614458,2269,2269,0,0.6390127173638179,0.3389158219479947,-0.7101217350110847,-0.9937701164860221,0.7308159765058186,-1.359808964819627,497,497,0,0.6868242862046238,0.3561368209255533,-0.3214397798843903,-0.9910671066026628,0.36018911659419867,-2.7515187465234625,159,159,0,0.6274076533439346,0.3270440251572327,-0.16264117028526048,-0.990223230076599,0.23062545627816608,-4.293642367398737,78,78,0,0.6135006156763575,0.32051282051282054,1127,no
+ETH-USDT-SWAP,15m,vwap_short,vwap_short-15m-window48-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":48,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.999998565974326,-0.9887472484660407,0.9999987033837706,-0.9887485304934321,4398,4398,0,0.7355276014112809,0.4197362437471578,-0.999998565974326,-0.9887472484660407,0.9999987033837706,-0.9887485304934321,4398,4398,0,0.7355276014112809,0.4197362437471578,-0.993669295523174,-0.993669295523174,0.9940889402563314,-0.9995778599719163,1510,1510,0,0.7173522262897275,0.40728476821192056,-0.7005220315654382,-0.9928795466225756,0.7335616751909398,-1.3535052064492568,342,342,0,0.6938140126404916,0.4064327485380117,-0.15513533336525198,-0.8713992117522449,0.23032560035070973,-3.7833363309392967,81,81,0,0.7608639588296193,0.48148148148148145,-0.007288054306459846,-0.17362430433258502,0.07409379325893126,-2.343304299805927,34,34,0,0.9860186774676885,0.5588235294117647,640,no
+ETH-USDT-SWAP,3m,breakdown_short,breakdown_short-3m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 14:09,2026-05-17 09:15,-0.99999763502408,-0.9866875138446809,0.9999978599049332,-0.9866896254542808,4220,4220,0,0.6670005235675207,0.32630331753554503,-0.99999763502408,-0.9866875138446809,0.9999978599049332,-0.9866896254542808,4220,4220,0,0.6670005235675207,0.32630331753554503,-0.9924977597293435,-0.9924977597293435,0.9937485198671223,-0.9987413715716064,1432,1432,0,0.653382474826234,0.34217877094972066,-0.6417004589100459,-0.9851437641312131,0.6617704856104312,-1.4886486864437531,317,317,0,0.6277445792825704,0.3501577287066246,-0.30541621693165133,-0.9881336693654661,0.33732599623774273,-2.9293137214039175,104,104,0,0.5071331078186634,0.3076923076923077,-0.15232535155033067,-0.986546583748685,0.191268257524765,-5.157921113078311,52,52,0,0.49215228170089453,0.28846153846153844,733,no
+ETH-USDT-SWAP,5m,breakdown_short,breakdown_short-5m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 13:20,2026-05-17 09:10,-0.9998942646372599,-0.9527360586612449,0.9999016777814035,-0.9528297429955209,4086,4086,0,0.7773266449319676,0.34924131179637785,-0.9998942646372599,-0.9527360586612449,0.9999016777814035,-0.9528297429955209,4086,4086,0,0.7773266449319676,0.34924131179637785,-0.9449488836455275,-0.9449488836455275,0.9473549802760262,-0.997460195301029,1398,1398,0,0.804381964006834,0.3562231759656652,-0.44218747763474664,-0.9087323182251456,0.49509717891673205,-1.8354625251823153,311,311,0,0.7931508883168624,0.3762057877813505,-0.23038282058473536,-0.9586626307837308,0.26196874691955924,-3.659454198473912,103,103,0,0.6835829535455828,0.34951456310679613,-0.1233088780025573,-0.9676458914319952,0.15709373081387062,-6.159672231468557,52,52,0,0.6745368744125424,0.38461538461538464,725,no
+ETH-USDT-SWAP,15m,vwap_short,vwap_short-15m-window96-entry_z1.5-exit_z0.2-stop0.006-take0.009-hold12,"{""window"":96,""entry_z"":1.5,""exit_z"":0.2,""stop"":0.006,""take"":0.009,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.9999979393158124,-0.9873263451395025,0.9999980728918325,-0.9873282478278328,3818,3818,0,0.7129711113582604,0.4036144578313253,-0.9999979393158124,-0.9873263451395025,0.9999980728918325,-0.9873282478278328,3818,3818,0,0.7129711113582604,0.4036144578313253,-0.9905150391252561,-0.9905150391252561,0.9910600405328068,-0.9994500823509564,1302,1302,0,0.7064063281114069,0.39400921658986177,-0.7961906301014701,-0.9985309287918075,0.8111353858495869,-1.2310286867166345,310,310,0,0.5848903015610059,0.3580645161290323,-0.2812242700872124,-0.9820021862600922,0.3224826050681707,-3.045132267064462,67,67,0,0.5020329315249633,0.3880597014925373,-0.062187467195504276,-0.8124897003982224,0.11785159811478654,-6.894176348859213,24,24,0,0.6707294239214756,0.4583333333333333,540,no
+ETH-USDT-SWAP,5m,breakdown_short,breakdown_short-5m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-18 17:20,2026-05-17 09:10,-0.9972500263998224,-0.8599840500971031,0.9975103147713651,-0.862130483627346,2636,2636,0,0.7929182760842965,0.3516691957511381,-0.9972500263998224,-0.8599840500971031,0.9975103147713651,-0.862130483627346,2636,2636,0,0.7929182760842965,0.3516691957511381,-0.7133493464210348,-0.7133493464210348,0.7400793372203669,-0.9638822630831362,904,904,0,0.8819513479339048,0.375,-0.31485945956716965,-0.7879139454412698,0.360956843035073,-2.182848062433632,203,203,0,0.8051181494246616,0.3645320197044335,-0.1837931719588105,-0.915491047192427,0.2142151566347554,-4.273698750240032,63,63,0,0.5914547180922322,0.3492063492063492,-0.0897178492111067,-0.91376953990212,0.12342164248410181,-7.403641059304688,30,30,0,0.5525093813290584,0.36666666666666664,449,no
+ETH-USDT-SWAP,15m,breakdown_short,breakdown_short-15m-lookback48-stop0.006-take0.012-hold12,"{""lookback"":48,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-20 20:15,2026-05-19 07:45,-0.9816899876158605,-0.7365970511358882,0.9849341433517138,-0.7478642669745017,1552,1552,0,0.8106167790762198,0.3382731958762887,-0.9816899876158605,-0.7365970511358882,0.9849341433517138,-0.7478642669745017,1552,1552,0,0.8106167790762198,0.3382731958762887,-0.6627415579627207,-0.6627415579627207,0.7142418359316473,-0.9278951814664422,552,552,0,0.8622058700404764,0.3496376811594203,0.02106190284900311,0.08924021624394696,0.1866309269258001,0.47816413771243116,113,113,0,1.0439709218864883,0.3805309734513274,-0.09001741156497833,-0.6826275883378357,0.14477129085068074,-4.715213799135824,32,32,0,0.7314776162042558,0.28125,-0.07415385348235937,-0.8658411513928107,0.08658006523631612,-10.000467763907766,16,16,0,0.5059189899174716,0.25,241,no
+ETH-USDT-SWAP,15m,breakdown_short,breakdown_short-15m-lookback96-stop0.006-take0.012-hold12,"{""lookback"":96,""stop"":0.006,""take"":0.012,""hold"":12}",2023-05-21 08:15,2026-05-19 07:45,-0.8812095554252265,-0.5087460556171569,0.9174139041792305,-0.5545436506898263,970,970,0,0.8453401346267548,0.3402061855670103,-0.8812095554252265,-0.5087460556171569,0.9174139041792305,-0.5545436506898263,970,970,0,0.8453401346267548,0.3402061855670103,-0.20162951537149532,-0.20162951537149532,0.39400647145970125,-0.5117416336450146,352,352,0,0.971720750593225,0.375,0.1676396050458766,0.8881729822136988,0.17199814287556303,5.163852163545004,74,74,0,1.252497498607885,0.43243243243243246,-0.06435643830011151,-0.5548460061279052,0.12543308840504222,-4.423442117092935,19,19,0,0.635515132675228,0.2631578947368421,-0.007956520453661908,-0.18801019970231503,0.056503126348991524,-3.327430035305837,10,10,0,0.8566905863671753,0.3,152,no

+ 90 - 0
scripts/report_candle_cache_freshness.py

@@ -0,0 +1,90 @@
+from __future__ import annotations
+
+import argparse
+import csv
+import json
+import sys
+from datetime import UTC, datetime
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+from okx_codex_trader.okx_client import OkxClient
+from scripts import explore_ultrashort as explore
+
+
+SYMBOLS = ("BTC-USDT-SWAP", "ETH-USDT-SWAP")
+BARS = ("15m", "5m", "3m")
+
+
+def iso_text(ts: int | None) -> str | None:
+    if ts is None:
+        return None
+    return datetime.fromtimestamp(ts / 1000, UTC).isoformat().replace("+00:00", "Z")
+
+
+def local_last_ts(cache_dir: Path, symbol: str, bar: str) -> tuple[int, int | None]:
+    path = cache_dir / symbol / f"{bar}.csv"
+    rows = 0
+    last_ts: int | None = None
+    if not path.exists():
+        return rows, last_ts
+    with path.open("r", encoding="utf-8", newline="") as handle:
+        for row in csv.DictReader(handle):
+            rows += 1
+            last_ts = int(row["ts"])
+    return rows, last_ts
+
+
+def freshness_rows(
+    *,
+    client: OkxClient,
+    cache_dir: Path,
+    symbols: tuple[str, ...] = SYMBOLS,
+    bars: tuple[str, ...] = BARS,
+) -> list[dict[str, object]]:
+    rows = []
+    for symbol in symbols:
+        for bar in bars:
+            local_rows, local_ts = local_last_ts(cache_dir, symbol, bar)
+            recent = client.get_recent_candles(symbol, bar, 2)
+            remote_ts = recent[-1].ts if recent else None
+            interval = explore.CANDLE_BAR_MS[bar]
+            lag_bars = None if local_ts is None or remote_ts is None else max(0, (remote_ts - local_ts) // interval)
+            rows.append(
+                {
+                    "symbol": symbol,
+                    "bar": bar,
+                    "local_rows": local_rows,
+                    "local_last_ts": local_ts,
+                    "local_last_time": iso_text(local_ts),
+                    "remote_last_ts": remote_ts,
+                    "remote_last_time": iso_text(remote_ts),
+                    "lag_bars": lag_bars,
+                    "lag_ms": None if local_ts is None or remote_ts is None else max(0, remote_ts - local_ts),
+                }
+            )
+    return rows
+
+
+def build_report(cache_dir: Path, client: OkxClient) -> dict[str, object]:
+    rows = freshness_rows(client=client, cache_dir=cache_dir)
+    max_lag_bars = max((int(row["lag_bars"]) for row in rows if row["lag_bars"] is not None), default=None)
+    return {
+        "created_at": datetime.now(UTC).isoformat(timespec="seconds").replace("+00:00", "Z"),
+        "cache_dir": str(cache_dir),
+        "max_lag_bars": max_lag_bars,
+        "rows": rows,
+    }
+
+
+def main() -> int:
+    parser = argparse.ArgumentParser(description="Report local OKX candle cache freshness against recent OKX candles.")
+    parser.add_argument("--cache-dir", type=Path, default=explore.CANDLE_CACHE_DIR)
+    args = parser.parse_args()
+    print(json.dumps(build_report(args.cache_dir, OkxClient()), indent=2, sort_keys=True))
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())

+ 375 - 0
scripts/search_eth_filtered_recent_short_bidir_candidates.py

@@ -0,0 +1,375 @@
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from dataclasses import dataclass
+from pathlib import Path
+
+import pandas as pd
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+
+DATA_DIR = Path("data/okx-candles")
+OUT_DIR = Path("reports/eth-exploration")
+SYMBOL = "ETH-USDT-SWAP"
+BTC_SYMBOL = "BTC-USDT-SWAP"
+INITIAL_EQUITY = 10_000.0
+LEVERAGE = 3.0
+TAKER_FEE = 0.0004
+HORIZONS = (
+    ("full", None),
+    ("3y", pd.DateOffset(years=3)),
+    ("1y", pd.DateOffset(years=1)),
+    ("3m", pd.DateOffset(months=3)),
+    ("1m", pd.DateOffset(months=1)),
+    ("2w", pd.DateOffset(weeks=2)),
+)
+
+
+@dataclass(frozen=True)
+class Candidate:
+    family: str
+    bar: str
+    params: dict[str, float | int | str]
+
+    @property
+    def name(self) -> str:
+        body = "-".join(f"{key}{value:g}" if isinstance(value, float) else f"{key}{value}" for key, value in self.params.items())
+        return f"{self.family}-{self.bar}-{body}"
+
+
+def load_15m(symbol: str) -> pd.DataFrame:
+    frame = pd.read_csv(DATA_DIR / symbol / "15m.csv")
+    frame["dt"] = pd.to_datetime(frame["ts"], unit="ms", utc=True)
+    return frame.sort_values("ts").drop_duplicates("ts", keep="last").set_index("dt")
+
+
+def resample(frame: pd.DataFrame, bar: str) -> pd.DataFrame:
+    if bar == "15m":
+        return frame.reset_index()
+    rule = {"1H": "1h"}[bar]
+    return (
+        frame.resample(rule, label="left", closed="left")
+        .agg(ts=("ts", "first"), open=("open", "first"), high=("high", "max"), low=("low", "min"), close=("close", "last"), volume=("volume", "sum"))
+        .dropna()
+        .reset_index()
+    )
+
+
+def joined_frame(bar: str, years: float) -> pd.DataFrame:
+    eth = resample(load_15m(SYMBOL), bar)
+    btc = resample(load_15m(BTC_SYMBOL), bar)[["dt", "close"]].rename(columns={"close": "btc_close"})
+    frame = eth.merge(btc, on="dt", how="inner").sort_values("dt").reset_index(drop=True)
+    cutoff = frame["dt"].iloc[-1] - pd.DateOffset(days=int(years * 365))
+    return frame[frame["dt"] >= cutoff].reset_index(drop=True)
+
+
+def rsi(close: pd.Series, length: int) -> pd.Series:
+    diff = close.diff()
+    gain = diff.clip(lower=0).ewm(alpha=1 / length, adjust=False).mean()
+    loss = (-diff.clip(upper=0)).ewm(alpha=1 / length, adjust=False).mean()
+    return 100.0 - 100.0 / (1.0 + gain / loss)
+
+
+def atr_pct(frame: pd.DataFrame, length: int) -> pd.Series:
+    close = frame["close"].astype(float)
+    prev_close = close.shift(1)
+    true_range = pd.concat(
+        [
+            (frame["high"] - frame["low"]).abs(),
+            (frame["high"] - prev_close).abs(),
+            (frame["low"] - prev_close).abs(),
+        ],
+        axis=1,
+    ).max(axis=1)
+    return true_range.rolling(length).mean() / close
+
+
+def build_candidates(bars: list[str]) -> list[Candidate]:
+    candidates: list[Candidate] = []
+    for bar in bars:
+        for lookback in (24, 48, 96):
+            for gate in ("btc_down", "btc_riskoff", "none"):
+                candidates.append(Candidate("filtered_breakdown_short", bar, {"lookback": lookback, "stop": 0.010, "take": 0.018, "hold": 16, "gate": gate}))
+                candidates.append(Candidate("filtered_breakdown_short", bar, {"lookback": lookback, "stop": 0.012, "take": 0.024, "hold": 24, "gate": gate}))
+        for fast, slow in ((32, 128), (48, 192)):
+            for gate in ("btc_down", "none"):
+                candidates.append(Candidate("failed_rebound_short", bar, {"fast": fast, "slow": slow, "stop": 0.012, "take": 0.024, "hold": 24, "gate": gate}))
+        for lookback in (48, 96):
+            candidates.append(Candidate("range_breakout_bidir", bar, {"lookback": lookback, "stop": 0.010, "take": 0.018, "hold": 16, "gate": "btc_trend"}))
+    return candidates
+
+
+def gate_series(frame: pd.DataFrame, mode: str) -> pd.Series:
+    btc = frame["btc_close"].astype(float)
+    if mode == "none":
+        return pd.Series(True, index=frame.index)
+    btc_sma = btc.rolling(96).mean()
+    btc_return = btc / btc.shift(24) - 1.0
+    if mode == "btc_down":
+        return btc < btc_sma
+    if mode == "btc_riskoff":
+        return (btc < btc_sma) & (btc_return < -0.01)
+    if mode == "btc_trend":
+        return pd.Series(True, index=frame.index)
+    raise ValueError(mode)
+
+
+def signals(frame: pd.DataFrame, candidate: Candidate) -> tuple[pd.Series, pd.Series]:
+    close = frame["close"].astype(float)
+    high = frame["high"].astype(float)
+    low = frame["low"].astype(float)
+    open_ = frame["open"].astype(float)
+    params = candidate.params
+    entry = pd.Series("", index=frame.index, dtype=object)
+    gate = gate_series(frame, str(params["gate"]))
+    atr = atr_pct(frame, 48)
+    atr_ok = atr >= atr.rolling(480).quantile(0.35)
+
+    if candidate.family == "filtered_breakdown_short":
+        lookback = int(params["lookback"])
+        prior_low = low.shift(1).rolling(lookback).min()
+        downtrend = close < close.rolling(192).mean()
+        entry.loc[gate & atr_ok & downtrend & (close < prior_low)] = "short"
+        exit_ = close > close.rolling(32).mean()
+        return entry, exit_.fillna(False)
+
+    if candidate.family == "failed_rebound_short":
+        fast = close.ewm(span=int(params["fast"]), adjust=False).mean()
+        slow = close.ewm(span=int(params["slow"]), adjust=False).mean()
+        value = rsi(close, 14)
+        downtrend = (fast < slow) & (slow < slow.shift(8))
+        rejection = (high >= fast) & (close < fast) & (close < open_) & (value > 42)
+        entry.loc[gate & atr_ok & downtrend & rejection] = "short"
+        exit_ = (close > slow) | (value < 35)
+        return entry, exit_.fillna(False)
+
+    lookback = int(params["lookback"])
+    btc = frame["btc_close"].astype(float)
+    btc_sma = btc.rolling(192).mean()
+    prior_high = high.shift(1).rolling(lookback).max()
+    prior_low = low.shift(1).rolling(lookback).min()
+    entry.loc[atr_ok & (btc > btc_sma) & (close > prior_high)] = "long"
+    entry.loc[atr_ok & (btc < btc_sma) & (close < prior_low)] = "short"
+    exit_ = close.rolling(16).mean().diff().abs() < close * 0.0002
+    return entry, exit_.fillna(False)
+
+
+def close_return(side: str, entry: float, exit_price: float) -> float:
+    price_return = exit_price / entry - 1.0 if side == "long" else entry / exit_price - 1.0
+    return LEVERAGE * price_return - LEVERAGE * TAKER_FEE * (1.0 + exit_price / entry)
+
+
+def mark_return(side: str, entry: float, close: float) -> float:
+    price_return = close / entry - 1.0 if side == "long" else entry / close - 1.0
+    return LEVERAGE * price_return - LEVERAGE * TAKER_FEE
+
+
+def backtest(frame: pd.DataFrame, candidate: Candidate) -> tuple[pd.Series, pd.DataFrame]:
+    entry_signal, exit_signal = signals(frame, candidate)
+    warmup = 520
+    equity = INITIAL_EQUITY
+    position: dict[str, object] | None = None
+    pending_entry = ""
+    pending_exit = False
+    curve: list[tuple[pd.Timestamp, float]] = []
+    trades: list[dict[str, object]] = []
+
+    rows = list(frame.itertuples(index=False))
+    for index in range(warmup, len(rows)):
+        candle = rows[index]
+        if pending_exit and position is not None:
+            net = close_return(str(position["side"]), float(position["entry"]), float(candle.open))
+            equity *= 1.0 + net
+            trades.append({"entry_time": position["entry_time"], "exit_time": candle.dt, "side": position["side"], "return": net})
+            position = None
+            pending_exit = False
+        if pending_entry and position is None and equity > 0.0:
+            position = {"side": pending_entry, "entry": float(candle.open), "entry_index": index, "entry_time": candle.dt}
+            pending_entry = ""
+
+        mark = equity
+        if position is not None:
+            side = str(position["side"])
+            entry = float(position["entry"])
+            stop = float(candidate.params["stop"])
+            take = float(candidate.params["take"])
+            stop_price = entry * (1.0 - stop if side == "long" else 1.0 + stop)
+            take_price = entry * (1.0 + take if side == "long" else 1.0 - take)
+            stop_hit = candle.low <= stop_price if side == "long" else candle.high >= stop_price
+            take_hit = candle.high >= take_price if side == "long" else candle.low <= take_price
+            if stop_hit or take_hit:
+                exit_price = stop_price if stop_hit else take_price
+                net = close_return(side, entry, exit_price)
+                equity *= 1.0 + net
+                trades.append({"entry_time": position["entry_time"], "exit_time": candle.dt, "side": side, "return": net})
+                position = None
+                mark = equity
+            else:
+                mark = equity * (1.0 + mark_return(side, entry, float(candle.close)))
+
+        curve.append((candle.dt, mark))
+        if index == len(rows) - 1 or equity <= 0.0:
+            continue
+        next_entry = str(entry_signal.iloc[index])
+        if position is not None:
+            reverse = bool(next_entry) and next_entry != position["side"]
+            stale = index - int(position["entry_index"]) >= int(candidate.params["hold"])
+            if bool(exit_signal.iloc[index]) or reverse or stale:
+                pending_exit = True
+                pending_entry = next_entry if reverse else ""
+        elif next_entry:
+            pending_entry = next_entry
+
+    return pd.Series(dict(curve)).sort_index(), pd.DataFrame(trades)
+
+
+def scoped(equity: pd.Series, trades: pd.DataFrame, offset: pd.DateOffset | None) -> tuple[pd.Series, pd.DataFrame]:
+    if offset is None:
+        return equity, trades
+    start = equity.index[-1] - offset
+    scoped_equity = equity[equity.index >= start]
+    if len(scoped_equity) < 2:
+        scoped_equity = equity
+    scoped_trades = trades[trades["entry_time"] >= scoped_equity.index[0]] if len(trades) else trades
+    return scoped_equity, scoped_trades
+
+
+def metrics(equity: pd.Series, trades: pd.DataFrame) -> dict[str, float | int]:
+    total = float(equity.iloc[-1] / equity.iloc[0] - 1.0)
+    years = (equity.index[-1] - equity.index[0]).total_seconds() / 31_536_000
+    annual = (1.0 + total) ** (1.0 / years) - 1.0 if total > -1.0 and years > 0 else 0.0
+    drawdown = float(((equity.cummax() - equity) / equity.cummax()).max())
+    returns = trades["return"] if len(trades) else pd.Series(dtype=float)
+    wins = returns[returns > 0.0]
+    losses = returns[returns < 0.0]
+    return {
+        "total_return": total,
+        "annualized_return": annual,
+        "max_drawdown": drawdown,
+        "calmar": annual / drawdown if drawdown else 0.0,
+        "trades": int(len(trades)),
+        "short_trades": int((trades["side"] == "short").sum()) if len(trades) else 0,
+        "long_trades": int((trades["side"] == "long").sum()) if len(trades) else 0,
+        "profit_factor": float(wins.sum() / abs(losses.sum())) if len(losses) else (999.0 if len(wins) else 0.0),
+        "win_rate": float(len(wins) / len(returns)) if len(returns) else 0.0,
+    }
+
+
+def summarize(candidate: Candidate, equity: pd.Series, trades: pd.DataFrame) -> dict[str, object]:
+    row: dict[str, object] = {
+        "symbol": SYMBOL,
+        "bar": candidate.bar,
+        "family": candidate.family,
+        "name": candidate.name,
+        "params_json": json.dumps(candidate.params, separators=(",", ":")),
+        "first_time": equity.index[0].strftime("%Y-%m-%d %H:%M"),
+        "last_time": equity.index[-1].strftime("%Y-%m-%d %H:%M"),
+    }
+    for label, offset in HORIZONS:
+        part_equity, part_trades = scoped(equity, trades, offset)
+        for key, value in metrics(part_equity, part_trades).items():
+            row[f"{label}_{key}"] = value
+    row["recent_trigger_score"] = int(row["3m_trades"]) + int(row["1m_trades"]) * 2 + int(row["2w_trades"]) * 4
+    observe = (
+        int(row["3m_trades"]) >= 8
+        and int(row["1m_trades"]) >= 2
+        and int(row["2w_trades"]) >= 1
+        and float(row["3y_total_return"]) > 0.0
+        and float(row["1y_total_return"]) > 0.0
+        and float(row["3y_max_drawdown"]) <= 0.45
+        and float(row["1y_max_drawdown"]) <= 0.30
+        and float(row["1y_profit_factor"]) >= 1.05
+    )
+    row["readonly_observe"] = "yes" if observe else "no"
+    return row
+
+
+def markdown_table(frame: pd.DataFrame) -> str:
+    def cell(value: object) -> str:
+        if isinstance(value, float):
+            return f"{value:.4f}"
+        return str(value).replace("|", "\\|")
+
+    rows = [list(frame.columns), ["---" for _ in frame.columns]]
+    rows.extend(frame.astype(object).where(pd.notna(frame), "").values.tolist())
+    return "\n".join("| " + " | ".join(cell(value) for value in row) + " |" for row in rows)
+
+
+def write_report(totals: pd.DataFrame, paths: list[Path], command: str) -> str:
+    selected = totals[totals["readonly_observe"] == "yes"].head(12)
+    recent = totals.sort_values(["readonly_observe", "recent_trigger_score", "3y_calmar"], ascending=[False, False, False]).head(12)
+    cols = [
+        "family",
+        "bar",
+        "name",
+        "3y_total_return",
+        "3y_max_drawdown",
+        "3y_trades",
+        "1y_total_return",
+        "1y_max_drawdown",
+        "1y_profit_factor",
+        "3m_total_return",
+        "3m_trades",
+        "1m_trades",
+        "2w_trades",
+        "readonly_observe",
+    ]
+    return "\n".join(
+        [
+            "# ETH filtered recent short/bidirectional search",
+            "",
+            f"Run command: `{command}`",
+            "Scope: 15m/1H only, local ETH/BTC candle cache, taker-fee model, no live path touched.",
+            "",
+            "Output files:",
+            *[f"- `{path}`" for path in paths],
+            "",
+            "Selection rule: recent activity plus positive 3y/1y return, bounded 3y/1y drawdown, and 1y profit factor >= 1.05.",
+            "",
+            "## Read-only observation candidates",
+            "",
+            markdown_table(selected[cols]) if len(selected) else "No candidates passed the read-only observation rule.",
+            "",
+            "## Top recent filtered candidates",
+            "",
+            markdown_table(recent[cols]),
+        ]
+    ) + "\n"
+
+
+def main() -> int:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--bars", nargs="+", default=["15m", "1H"])
+    parser.add_argument("--output-dir", type=Path, default=OUT_DIR)
+    parser.add_argument("--years", type=float, default=3.0)
+    args = parser.parse_args()
+
+    frames = {bar: joined_frame(bar, args.years) for bar in args.bars}
+    rows = []
+    for candidate in build_candidates(args.bars):
+        equity, trades = backtest(frames[candidate.bar], candidate)
+        if len(equity) >= 2:
+            rows.append(summarize(candidate, equity, trades))
+
+    totals = pd.DataFrame(rows).sort_values(
+        ["readonly_observe", "recent_trigger_score", "3y_calmar", "1y_calmar"],
+        ascending=[False, False, False, False],
+    )
+    args.output_dir.mkdir(parents=True, exist_ok=True)
+    totals_path = args.output_dir / "eth-filtered-recent-short-bidir-candidates.csv"
+    top_path = args.output_dir / "eth-filtered-recent-short-bidir-top.csv"
+    report_path = args.output_dir / "eth-filtered-recent-short-bidir-report.md"
+    paths = [totals_path, top_path, report_path]
+    totals.to_csv(totals_path, index=False)
+    totals.head(50).to_csv(top_path, index=False)
+    command = f"rtk .venv/bin/python {Path(__file__).as_posix()} --bars {' '.join(args.bars)} --years {args.years:g}"
+    report_path.write_text(write_report(totals, paths, command), encoding="utf-8")
+    print(totals.head(20).to_string(index=False))
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())

+ 361 - 0
scripts/search_eth_high_freq_short_bidir_candidates.py

@@ -0,0 +1,361 @@
+from __future__ import annotations
+
+import argparse
+import json
+from dataclasses import dataclass
+from pathlib import Path
+
+import pandas as pd
+
+
+DATA_DIR = Path("data/okx-candles")
+OUT_DIR = Path("reports/ultrashort")
+SYMBOL = "ETH-USDT-SWAP"
+INITIAL_EQUITY = 10_000.0
+LEVERAGE = 3.0
+TAKER_FEE = 0.0004
+HORIZONS = (
+    ("full", None),
+    ("3y", pd.DateOffset(years=3)),
+    ("1y", pd.DateOffset(years=1)),
+    ("3m", pd.DateOffset(months=3)),
+    ("1m", pd.DateOffset(months=1)),
+    ("2w", pd.DateOffset(weeks=2)),
+)
+
+
+@dataclass(frozen=True)
+class Candidate:
+    family: str
+    bar: str
+    params: dict[str, float | int | str]
+
+    @property
+    def name(self) -> str:
+        body = "-".join(f"{key}{value:g}" if isinstance(value, float) else f"{key}{value}" for key, value in self.params.items())
+        return f"{self.family}-{self.bar}-{body}"
+
+
+def load_frame(bar: str, years: float) -> pd.DataFrame:
+    frame = pd.read_csv(DATA_DIR / SYMBOL / f"{bar}.csv")
+    frame["dt"] = pd.to_datetime(frame["ts"], unit="ms", utc=True)
+    frame = frame.sort_values("ts").drop_duplicates("ts", keep="last")
+    cutoff = frame["dt"].iloc[-1] - pd.DateOffset(days=int(years * 365))
+    return frame[frame["dt"] >= cutoff].reset_index(drop=True)
+
+
+def rsi(close: pd.Series, length: int) -> pd.Series:
+    delta = close.diff()
+    gain = delta.clip(lower=0.0).rolling(length).mean()
+    loss = (-delta.clip(upper=0.0)).rolling(length).mean()
+    return 100.0 - 100.0 / (1.0 + gain / loss)
+
+
+def build_candidates(bars: list[str]) -> list[Candidate]:
+    candidates: list[Candidate] = []
+    for bar in bars:
+        for window in (48, 96):
+            for entry_z in (1.5,):
+                for hold in (12,):
+                    base = {"window": window, "entry_z": entry_z, "exit_z": 0.20, "stop": 0.006, "take": 0.009, "hold": hold}
+                    candidates.append(Candidate("vwap_bidir", bar, base))
+                    candidates.append(Candidate("vwap_short", bar, base))
+        for trend in (96, 192):
+            for entry in (90,):
+                for hold in (12,):
+                    candidates.append(
+                        Candidate(
+                            "rsi_short",
+                            bar,
+                            {"trend": trend, "entry": entry, "exit": 45, "stop": 0.0075, "take": 0.010, "hold": hold},
+                        )
+                    )
+            for entry in (10,):
+                for hold in (12,):
+                    candidates.append(
+                        Candidate(
+                            "rsi_bidir",
+                            bar,
+                            {"trend": trend, "entry": entry, "exit": 55, "stop": 0.0075, "take": 0.010, "hold": hold},
+                        )
+                    )
+        for lookback in (48, 96):
+            for hold in (12,):
+                candidates.append(
+                    Candidate(
+                        "breakdown_short",
+                        bar,
+                        {"lookback": lookback, "stop": 0.006, "take": 0.012, "hold": hold},
+                    )
+                )
+    return candidates
+
+
+def signal_columns(frame: pd.DataFrame, candidate: Candidate) -> tuple[pd.Series, pd.Series]:
+    close = frame["close"]
+    false = pd.Series(False, index=frame.index)
+    params = candidate.params
+    if candidate.family in ("vwap_bidir", "vwap_short"):
+        window = int(params["window"])
+        volume = frame["volume"]
+        vwap = (close * volume).rolling(window).sum() / volume.rolling(window).sum()
+        stdev = close.rolling(window).std(ddof=0)
+        zscore = (close - vwap) / stdev
+        short_entry = zscore >= float(params["entry_z"])
+        long_entry = zscore <= -float(params["entry_z"])
+        entry = pd.Series("", index=frame.index, dtype=object)
+        entry.loc[short_entry] = "short"
+        if candidate.family == "vwap_bidir":
+            entry.loc[long_entry] = "long"
+        exit_ = (zscore.abs() <= float(params["exit_z"]))
+        return entry, exit_
+    if candidate.family in ("rsi_short", "rsi_bidir"):
+        trend = close.rolling(int(params["trend"])).mean()
+        value = rsi(close, 2)
+        entry = pd.Series("", index=frame.index, dtype=object)
+        entry.loc[(close < trend) & (value >= float(params["entry"]))] = "short"
+        if candidate.family == "rsi_bidir":
+            entry.loc[(close > trend) & (value <= float(params["entry"]))] = "long"
+        exit_ = (value <= 100.0 - float(params["exit"])) | (value >= float(params["exit"]))
+        return entry, exit_
+    lookback = int(params["lookback"])
+    prior_low = frame["low"].shift(1).rolling(lookback).min()
+    entry = pd.Series("", index=frame.index, dtype=object)
+    entry.loc[close < prior_low] = "short"
+    return entry, false
+
+
+def close_return(side: str, entry: float, exit_price: float) -> float:
+    price_return = exit_price / entry - 1.0 if side == "long" else entry / exit_price - 1.0
+    return LEVERAGE * price_return - LEVERAGE * TAKER_FEE * (1.0 + exit_price / entry)
+
+
+def mark_return(side: str, entry: float, close: float) -> float:
+    price_return = close / entry - 1.0 if side == "long" else entry / close - 1.0
+    return LEVERAGE * price_return - LEVERAGE * TAKER_FEE
+
+
+def backtest(frame: pd.DataFrame, candidate: Candidate) -> tuple[pd.Series, pd.DataFrame]:
+    entry_signal, exit_signal = signal_columns(frame, candidate)
+    warmup = max(int(value) for key, value in candidate.params.items() if key in {"window", "trend", "lookback"}) + 2
+    equity = INITIAL_EQUITY
+    position: dict[str, object] | None = None
+    pending_entry = ""
+    pending_exit = False
+    curve: list[tuple[pd.Timestamp, float]] = []
+    trades: list[dict[str, object]] = []
+
+    rows = list(frame.itertuples(index=False))
+    for index in range(warmup, len(rows)):
+        candle = rows[index]
+        if pending_exit and position is not None:
+            net = close_return(str(position["side"]), float(position["entry"]), float(candle.open))
+            equity *= 1.0 + net
+            trades.append({"entry_time": position["entry_time"], "exit_time": candle.dt, "side": position["side"], "return": net})
+            position = None
+            pending_exit = False
+        if pending_entry and position is None and equity > 0.0:
+            position = {"side": pending_entry, "entry": float(candle.open), "entry_index": index, "entry_time": candle.dt}
+            pending_entry = ""
+
+        mark = equity
+        if position is not None:
+            side = str(position["side"])
+            entry = float(position["entry"])
+            stop = float(candidate.params["stop"])
+            take = float(candidate.params["take"])
+            stop_price = entry * (1.0 - stop if side == "long" else 1.0 + stop)
+            take_price = entry * (1.0 + take if side == "long" else 1.0 - take)
+            stop_hit = candle.low <= stop_price if side == "long" else candle.high >= stop_price
+            take_hit = candle.high >= take_price if side == "long" else candle.low <= take_price
+            if stop_hit or take_hit:
+                exit_price = stop_price if stop_hit else take_price
+                net = close_return(side, entry, exit_price)
+                equity *= 1.0 + net
+                trades.append({"entry_time": position["entry_time"], "exit_time": candle.dt, "side": side, "return": net})
+                position = None
+                mark = equity
+            else:
+                mark = equity * (1.0 + mark_return(side, entry, float(candle.close)))
+
+        curve.append((candle.dt, mark))
+        if index == len(rows) - 1 or equity <= 0.0:
+            continue
+        next_entry = str(entry_signal.iloc[index])
+        if position is not None:
+            reverse = bool(next_entry) and next_entry != position["side"]
+            stale = index - int(position["entry_index"]) >= int(candidate.params["hold"])
+            if bool(exit_signal.iloc[index]) or reverse or stale:
+                pending_exit = True
+                pending_entry = next_entry if reverse else ""
+        elif next_entry:
+            pending_entry = next_entry
+
+    if position is not None:
+        final = rows[-1]
+        net = close_return(str(position["side"]), float(position["entry"]), float(final.close))
+        equity *= 1.0 + net
+        trades.append({"entry_time": position["entry_time"], "exit_time": final.dt, "side": position["side"], "return": net})
+        curve.append((final.dt, equity))
+
+    return pd.Series(dict(curve)).sort_index(), pd.DataFrame(trades)
+
+
+def scoped(equity: pd.Series, trades: pd.DataFrame, offset: pd.DateOffset | None) -> tuple[pd.Series, pd.DataFrame]:
+    if offset is None:
+        return equity, trades
+    start = equity.index[-1] - offset
+    scoped_equity = equity[equity.index >= start]
+    if len(scoped_equity) < 2:
+        scoped_equity = equity
+    scoped_trades = trades[trades["entry_time"] >= scoped_equity.index[0]] if len(trades) else trades
+    return scoped_equity, scoped_trades
+
+
+def metrics(equity: pd.Series, trades: pd.DataFrame) -> dict[str, float | int]:
+    total = float(equity.iloc[-1] / equity.iloc[0] - 1.0)
+    years = (equity.index[-1] - equity.index[0]).total_seconds() / 31_536_000
+    annual = (1.0 + total) ** (1.0 / years) - 1.0 if total > -1.0 and years > 0 else 0.0
+    drawdown = float(((equity.cummax() - equity) / equity.cummax()).max())
+    returns = trades["return"] if len(trades) else pd.Series(dtype=float)
+    wins = returns[returns > 0.0]
+    losses = returns[returns < 0.0]
+    return {
+        "total_return": total,
+        "annualized_return": annual,
+        "max_drawdown": drawdown,
+        "calmar": annual / drawdown if drawdown else 0.0,
+        "trades": int(len(trades)),
+        "short_trades": int((trades["side"] == "short").sum()) if len(trades) else 0,
+        "long_trades": int((trades["side"] == "long").sum()) if len(trades) else 0,
+        "profit_factor": float(wins.sum() / abs(losses.sum())) if len(losses) else (999.0 if len(wins) else 0.0),
+        "win_rate": float(len(wins) / len(returns)) if len(returns) else 0.0,
+    }
+
+
+def summarize(candidate: Candidate, equity: pd.Series, trades: pd.DataFrame) -> dict[str, object]:
+    row: dict[str, object] = {
+        "symbol": SYMBOL,
+        "bar": candidate.bar,
+        "family": candidate.family,
+        "name": candidate.name,
+        "params_json": json.dumps(candidate.params, separators=(",", ":")),
+        "first_time": equity.index[0].strftime("%Y-%m-%d %H:%M"),
+        "last_time": equity.index[-1].strftime("%Y-%m-%d %H:%M"),
+    }
+    for label, offset in HORIZONS:
+        part_equity, part_trades = scoped(equity, trades, offset)
+        for key, value in metrics(part_equity, part_trades).items():
+            row[f"{label}_{key}"] = value
+    row["recent_trigger_score"] = int(row["3m_trades"]) + int(row["1m_trades"]) * 2 + int(row["2w_trades"]) * 4
+    observe = (
+        int(row["3m_trades"]) >= 12
+        and int(row["1m_trades"]) >= 4
+        and int(row["2w_trades"]) >= 1
+        and float(row["3y_total_return"]) > 0.0
+        and float(row["1y_total_return"]) > 0.0
+        and float(row["3y_max_drawdown"]) <= 0.35
+        and float(row["1y_max_drawdown"]) <= 0.25
+    )
+    row["readonly_observe"] = "yes" if observe else "no"
+    return row
+
+
+def markdown_table(frame: pd.DataFrame) -> str:
+    def cell(value: object) -> str:
+        if isinstance(value, float):
+            return f"{value:.4f}"
+        return str(value).replace("|", "\\|")
+
+    rows = [list(frame.columns), ["---" for _ in frame.columns]]
+    rows.extend(frame.astype(object).where(pd.notna(frame), "").values.tolist())
+    return "\n".join("| " + " | ".join(cell(value) for value in row) + " |" for row in rows)
+
+
+def write_report(totals: pd.DataFrame, paths: list[Path], command: str) -> str:
+    selected = totals[totals["readonly_observe"] == "yes"].head(12)
+    recent = totals.sort_values(["recent_trigger_score", "3y_calmar", "1y_calmar"], ascending=[False, False, False]).head(12)
+    least_bad = totals.sort_values(
+        ["3y_total_return", "1y_total_return", "3m_total_return", "3m_trades"],
+        ascending=[False, False, False, False],
+    ).head(12)
+    cols = [
+        "family",
+        "bar",
+        "name",
+        "full_total_return",
+        "full_max_drawdown",
+        "full_trades",
+        "3y_total_return",
+        "3y_max_drawdown",
+        "3y_trades",
+        "1y_total_return",
+        "1y_max_drawdown",
+        "1y_trades",
+        "3m_trades",
+        "1m_trades",
+        "2w_trades",
+        "readonly_observe",
+    ]
+    return "\n".join(
+        [
+            "# ETH high-frequency short/bidirectional candidate search",
+            "",
+            f"Run command: `{command}`",
+            "Scope: local OKX ETH candle CSV only; no live executor, deployment, private API, or order path touched.",
+            f"Cost model: taker fee `{TAKER_FEE}` each side on `{LEVERAGE:g}x` notional; entries execute on next open.",
+            "",
+            "Output files:",
+            *[f"- `{path}`" for path in paths],
+            "",
+            "Selection rule for `readonly_observe`: 3m >= 12 trades, 1m >= 4 trades, 2w >= 1 trade, positive 3y/1y return, 3y MDD <= 35%, 1y MDD <= 25%.",
+            "",
+            "## Read-only observation candidates",
+            "",
+            markdown_table(selected[cols]) if len(selected) else "No candidates passed the read-only observation rule.",
+            "",
+            "## Least-bad risk rows",
+            "",
+            markdown_table(least_bad[cols]),
+            "",
+            "## Most recently active candidates",
+            "",
+            markdown_table(recent[cols]),
+        ]
+    ) + "\n"
+
+
+def main() -> int:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--bars", nargs="+", default=["3m", "5m", "15m"])
+    parser.add_argument("--output-dir", type=Path, default=OUT_DIR)
+    parser.add_argument("--years", type=float, default=3.0)
+    args = parser.parse_args()
+
+    rows: list[dict[str, object]] = []
+    frames = {bar: load_frame(bar, args.years) for bar in args.bars}
+    for candidate in build_candidates(args.bars):
+        equity, trades = backtest(frames[candidate.bar], candidate)
+        if len(equity) < 2:
+            continue
+        rows.append(summarize(candidate, equity, trades))
+
+    totals = pd.DataFrame(rows).sort_values(
+        ["readonly_observe", "3m_trades", "1m_trades", "2w_trades", "3y_calmar", "1y_calmar"],
+        ascending=[False, False, False, False, False, False],
+    )
+    args.output_dir.mkdir(parents=True, exist_ok=True)
+    totals_path = args.output_dir / "eth-highfreq-short-bidir-candidates.csv"
+    top_path = args.output_dir / "eth-highfreq-short-bidir-top.csv"
+    report_path = args.output_dir / "eth-highfreq-short-bidir-report.md"
+    paths = [totals_path, top_path, report_path]
+    totals.to_csv(totals_path, index=False)
+    totals.head(50).to_csv(top_path, index=False)
+    command = f"rtk .venv/bin/python {Path(__file__).as_posix()} --bars {' '.join(args.bars)} --years {args.years:g}"
+    report_path.write_text(write_report(totals, paths, command), encoding="utf-8")
+    print(totals.head(20).to_string(index=False))
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())

+ 151 - 0
scripts/summarize_current_strategy_recent_activity.py

@@ -0,0 +1,151 @@
+from __future__ import annotations
+
+import sys
+from pathlib import Path
+
+import pandas as pd
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+from scripts.search_eth_bearish_price_proxy import (
+    BTC_SYMBOL,
+    SYMBOL,
+    Spec,
+    joined_frames,
+    load_frame,
+    period_metrics,
+    resample,
+    run_spec,
+)
+from scripts.search_eth_bb_squeeze_t_gates import (
+    Variant as TGateVariant,
+    _align_pair,
+    _load_candles as load_tgate_candles,
+    cost_equity_frame as tgate_cost_equity_frame,
+    run_variant as run_tgate_variant,
+)
+from scripts.search_live_bb_squeeze_exit_variants import (
+    PRIMARY_COST,
+    Variant as LiveVariant,
+    _load_candles as load_live_candles,
+    cost_equity_frame as live_cost_equity_frame,
+    run_variant as run_live_variant,
+)
+
+
+OUTPUT_DIR = Path("reports/eth-exploration")
+SUMMARY_CSV = OUTPUT_DIR / "current-strategy-recent-activity.csv"
+REPORT_MD = OUTPUT_DIR / "current-strategy-recent-activity-report.md"
+WINDOWS = (30, 14, 7)
+
+
+def scoped_return(frame: pd.DataFrame, days: int) -> float:
+    cutoff = frame["ts"].iloc[-1] - pd.Timedelta(days=days)
+    scoped = frame[frame["ts"] >= cutoff]
+    if len(scoped) < 2:
+        return 0.0
+    return float(scoped["equity"].iloc[-1] / scoped["equity"].iloc[0] - 1.0)
+
+
+def count_trades(trades: list[dict[str, object]], days: int, end: pd.Timestamp) -> int:
+    cutoff = end - pd.Timedelta(days=days)
+    return sum(pd.Timestamp(trade["entry_time"], tz="UTC") >= cutoff for trade in trades)
+
+
+def live_rows() -> list[dict[str, object]]:
+    candles = load_live_candles("ETH-USDT-SWAP", "15m")
+    result = run_live_variant(candles, LiveVariant(0.0005, 1))
+    frame = live_cost_equity_frame(result, dict((PRIMARY_COST, 0.0021))[PRIMARY_COST] if False else 0.0021)
+    end = pd.to_datetime(candles[-1].ts, unit="ms", utc=True)
+    return [
+        {
+            "strategy": "live_bb_squeeze_mxbuf0.0005",
+            "window_days": days,
+            "total_return": scoped_return(frame, days),
+            "trades": count_trades(result.trades, days, end),
+            "last_candle": end.isoformat(),
+        }
+        for days in WINDOWS
+    ]
+
+
+def tgate_rows() -> list[dict[str, object]]:
+    eth = load_tgate_candles("ETH-USDT-SWAP", "15m")
+    btc = load_tgate_candles("BTC-USDT-SWAP", "15m")
+    eth, btc = _align_pair(eth, btc)
+    variant = TGateVariant(96, 960, 0.25, 0.01, 0.035, "both", "btc-up", 0.006, 0.25, 24, 96, "btc_against", 0.0, 1, 0.006, 0.25, 0.008)
+    result, gate_stats = run_tgate_variant(eth, btc, variant)
+    frame = tgate_cost_equity_frame(result, 0.0021)
+    end = pd.to_datetime(eth[-1].ts, unit="ms", utc=True)
+    return [
+        {
+            "strategy": "bb_squeeze_t_gated_tre96",
+            "window_days": days,
+            "total_return": scoped_return(frame, days),
+            "trades": count_trades(result.trades, days, end),
+            "last_candle": end.isoformat(),
+            "reentry_entries_full": gate_stats["reentry_entries"],
+        }
+        for days in WINDOWS
+    ]
+
+
+def crash_follow_rows() -> list[dict[str, object]]:
+    eth = load_frame(SYMBOL)
+    btc = load_frame(BTC_SYMBOL)
+    frame = joined_frames(resample(eth, "1H"), resample(btc, "1H"))
+    spec = Spec("crash_follow", "1H", 20, 120, 8, 0.035, 0.02, 0.06, 96, "btc_riskoff")
+    equity, trades = run_spec(spec, frame)
+    end = equity.index[-1]
+    rows = []
+    for days in WINDOWS:
+        metrics = period_metrics(equity, trades, pd.DateOffset(days=days))
+        rows.append(
+            {
+                "strategy": "crash_follow_short",
+                "window_days": days,
+                "total_return": metrics["total_return"],
+                "max_drawdown": metrics["max_drawdown"],
+                "trades": metrics["trades"],
+                "profit_factor": metrics["profit_factor"],
+                "win_rate": metrics["win_rate"],
+                "last_candle": end.isoformat(),
+            }
+        )
+    return rows
+
+
+def markdown_table(frame: pd.DataFrame) -> str:
+    rows = [list(frame.columns), ["---" for _ in frame.columns]]
+    rows.extend(frame.astype(object).where(pd.notna(frame), "").values.tolist())
+    return "\n".join("| " + " | ".join(str(value).replace("|", "\\|") for value in row) + " |" for row in rows)
+
+
+def main() -> int:
+    rows = live_rows() + tgate_rows() + crash_follow_rows()
+    summary = pd.DataFrame(rows)
+    OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
+    summary.to_csv(SUMMARY_CSV, index=False)
+
+    display = summary.copy()
+    display["total_return"] = display["total_return"].map(lambda value: f"{value:.2%}")
+    if "max_drawdown" in display:
+        display["max_drawdown"] = display["max_drawdown"].map(lambda value: "" if pd.isna(value) else f"{value:.2%}")
+    if "profit_factor" in display:
+        display["profit_factor"] = display["profit_factor"].map(lambda value: "" if pd.isna(value) else f"{value:.3f}")
+    if "win_rate" in display:
+        display["win_rate"] = display["win_rate"].map(lambda value: "" if pd.isna(value) else f"{value:.2%}")
+
+    REPORT_MD.write_text(
+        "# Current Strategy Recent Activity\n\n"
+        "Scope: current live BB squeeze, selected T-gated BB squeeze observer, and crash-follow short observer.\n\n"
+        f"{markdown_table(display)}\n",
+        encoding="utf-8",
+    )
+    print(f"wrote {SUMMARY_CSV} and {REPORT_MD}")
+    print(summary.to_string(index=False))
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())

+ 30 - 0
scripts/update_candle_cache_recent.py

@@ -0,0 +1,30 @@
+from __future__ import annotations
+
+import argparse
+import sys
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
+
+from okx_codex_trader.okx_client import OkxClient
+from scripts.explore_ultrashort import CANDLE_CACHE_DIR, get_candles_cached
+
+
+def main() -> int:
+    parser = argparse.ArgumentParser(description="Update local OKX candle cache using recent candles.")
+    parser.add_argument("--cache-dir", type=Path, default=CANDLE_CACHE_DIR)
+    parser.add_argument("--bar", default="15m")
+    parser.add_argument("--limit", type=int, default=300_000)
+    parser.add_argument("--symbols", nargs="+", default=["ETH-USDT-SWAP", "BTC-USDT-SWAP"])
+    args = parser.parse_args()
+    client = OkxClient()
+    for symbol in args.symbols:
+        candles = get_candles_cached(client, symbol, args.bar, args.limit, args.cache_dir)
+        first = candles[0].ts if candles else None
+        last = candles[-1].ts if candles else None
+        print(f"{symbol} {args.bar} rows={len(candles)} first_ts={first} last_ts={last}")
+    return 0
+
+
+if __name__ == "__main__":
+    raise SystemExit(main())

+ 35 - 0
tests/test_report_candle_cache_freshness.py

@@ -0,0 +1,35 @@
+from okx_codex_trader.models import Candle
+from scripts import report_candle_cache_freshness as module
+
+
+def candle(ts: int) -> Candle:
+    return Candle(symbol="ETH-USDT-SWAP", ts=ts, open=1.0, high=1.0, low=1.0, close=1.0, volume=1.0)
+
+
+def test_freshness_rows_reports_local_remote_gap(tmp_path):
+    path = tmp_path / "ETH-USDT-SWAP"
+    path.mkdir()
+    (path / "15m.csv").write_text("ts,open,high,low,close,volume\n1000,1,1,1,1,1\n901000,1,1,1,1,1\n", encoding="utf-8")
+
+    class Client:
+        def get_recent_candles(self, symbol: str, bar: str, limit: int) -> list[Candle]:
+            assert symbol == "ETH-USDT-SWAP"
+            assert bar == "15m"
+            assert limit == 2
+            return [candle(1_801_000), candle(2_701_000)]
+
+    rows = module.freshness_rows(client=Client(), cache_dir=tmp_path, symbols=("ETH-USDT-SWAP",), bars=("15m",))
+
+    assert rows == [
+        {
+            "symbol": "ETH-USDT-SWAP",
+            "bar": "15m",
+            "local_rows": 2,
+            "local_last_ts": 901000,
+            "local_last_time": "1970-01-01T00:15:01Z",
+            "remote_last_ts": 2701000,
+            "remote_last_time": "1970-01-01T00:45:01Z",
+            "lag_bars": 2,
+            "lag_ms": 1800000,
+        }
+    ]