Add honest Torch validation gate

This commit is contained in:
Codex
2026-06-25 06:19:14 +03:00
parent bb3b4070f6
commit 4a24419a30
11 changed files with 839 additions and 147 deletions
+315 -133
View File
@@ -50,25 +50,25 @@
},
"recommended": {
"edge": 0.1,
"probability": 0.57,
"probability": 0.56,
"confidence": 0.4,
"trades": 38,
"wins": 20,
"win_rate": 0.5263157894736842,
"total_net_percent": 10.8553482857082,
"average_net_percent": 0.28566706015021576,
"max_drawdown_percent": 3.0444999196004408,
"profit_factor": 2.166318971301155,
"score": 0.3782149184267729
"trades": 42,
"wins": 23,
"win_rate": 0.5476190476190477,
"total_net_percent": 11.314072641951345,
"average_net_percent": 0.2693826819512225,
"max_drawdown_percent": 3.2186862081818535,
"profit_factor": 2.134577631464616,
"score": 0.364437947239799
},
"full_replay": {
"trades": 9,
"wins": 8,
"win_rate": 0.8889,
"total_net_percent": 18.8986,
"avg_net_percent": 2.0998,
"max_drawdown_percent": 0.2996,
"profit_factor": 64.0689,
"total_net_percent": 18.647,
"avg_net_percent": 2.0719,
"max_drawdown_percent": 0.6796,
"profit_factor": 28.4362,
"trades_detail": [
{
"symbol": "ETHUSDT",
@@ -77,102 +77,129 @@
"net_percent": 0.2649,
"reason": "forecast_weak_profit_lock",
"held_bars": 8,
"entry_probability": 0.5763,
"entry_expected_percent": 0.3499
"entry_probability": 0.5772,
"entry_expected_percent": 0.3525
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1779930000000,
"entry_timestamp": 1779926400000,
"exit_timestamp": 1779987600000,
"net_percent": -0.2996,
"net_percent": -0.6796,
"reason": "forecast_negative",
"held_bars": 16,
"entry_probability": 0.5855,
"entry_expected_percent": 0.1752
"held_bars": 17,
"entry_probability": 0.5716,
"entry_expected_percent": 0.1155
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1780297200000,
"exit_timestamp": 1780340400000,
"net_percent": 1.163,
"exit_timestamp": 1780344000000,
"net_percent": 1.2211,
"reason": "forecast_weak_profit_lock",
"held_bars": 12,
"entry_probability": 0.578,
"entry_expected_percent": 0.2182
"held_bars": 13,
"entry_probability": 0.5793,
"entry_expected_percent": 0.2214
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1780776000000,
"exit_timestamp": 1780794000000,
"net_percent": 1.8208,
"entry_timestamp": 1780768800000,
"exit_timestamp": 1780797600000,
"net_percent": 2.0598,
"reason": "forecast_weak_profit_lock",
"held_bars": 5,
"entry_probability": 0.5736,
"entry_expected_percent": 0.6405
"held_bars": 8,
"entry_probability": 0.5637,
"entry_expected_percent": 0.5713
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1781136000000,
"entry_timestamp": 1781132400000,
"exit_timestamp": 1781197200000,
"net_percent": 3.4248,
"net_percent": 3.8719,
"reason": "forecast_weak_profit_lock",
"held_bars": 17,
"entry_probability": 0.5767,
"entry_expected_percent": 0.282
"held_bars": 18,
"entry_probability": 0.5691,
"entry_expected_percent": 0.2522
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1781434800000,
"exit_timestamp": 1781521200000,
"net_percent": 5.1663,
"entry_timestamp": 1781431200000,
"exit_timestamp": 1781517600000,
"net_percent": 3.6087,
"reason": "max_hold",
"held_bars": 24,
"entry_probability": 0.5737,
"entry_expected_percent": 0.2332
"entry_probability": 0.5636,
"entry_expected_percent": 0.2261
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1781524800000,
"entry_timestamp": 1781521200000,
"exit_timestamp": 1781535600000,
"net_percent": 3.5713,
"net_percent": 4.3178,
"reason": "forecast_weak_profit_lock",
"held_bars": 3,
"entry_probability": 0.689,
"entry_expected_percent": 0.4931
"held_bars": 4,
"entry_probability": 0.7034,
"entry_expected_percent": 0.5491
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1781586000000,
"entry_timestamp": 1781582400000,
"exit_timestamp": 1781596800000,
"net_percent": 2.0739,
"net_percent": 2.1644,
"reason": "forecast_weak_profit_lock",
"held_bars": 3,
"entry_probability": 0.5721,
"entry_expected_percent": 0.1205
"held_bars": 4,
"entry_probability": 0.5705,
"entry_expected_percent": 0.1058
},
{
"symbol": "ETHUSDT",
"entry_timestamp": 1781863200000,
"exit_timestamp": 1781931600000,
"net_percent": 1.7132,
"exit_timestamp": 1781935200000,
"net_percent": 1.8181,
"reason": "forecast_weak_profit_lock",
"held_bars": 19,
"entry_probability": 0.5705,
"entry_expected_percent": 0.1482
"held_bars": 20,
"entry_probability": 0.5711,
"entry_expected_percent": 0.1502
}
],
"symbol_breakdown": [
{
"symbol": "ETHUSDT",
"trades": 9,
"wins": 8,
"win_rate": 0.8889,
"total_net_percent": 18.6471,
"avg_net_percent": 2.0719,
"max_drawdown_percent": 0.6796,
"profit_factor": 28.4383,
"trade_share": 1.0
}
]
},
"walk_forward": {
"summary": {
"trades": 17,
"wins": 8,
"win_rate": 0.4706,
"total_net_percent": 10.3038,
"avg_net_percent": 0.6061,
"max_drawdown_percent": 1.5511,
"profit_factor": 3.6814,
"status": "ok"
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"status": "warn"
},
"symbol_breakdown": [
{
"symbol": "ETHUSDT",
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"trade_share": 1.0
}
],
"folds_with_trades": 1,
"folds": [
{
"fold": 1,
@@ -180,16 +207,16 @@
"test_records": 720,
"thresholds": {
"edge": 0.1,
"probability": 0.6,
"probability": 0.62,
"confidence": 0.4,
"trades": 6,
"wins": 3,
"win_rate": 0.5,
"total_net_percent": -0.04776569264114405,
"average_net_percent": -0.00796094877352401,
"max_drawdown_percent": 1.812991648733242,
"profit_factor": 0.9736536609672094,
"score": -0.04306718362513842
"trades": 3,
"wins": 1,
"win_rate": 0.3333333333333333,
"total_net_percent": -0.5232258119866717,
"average_net_percent": -0.17440860399555724,
"max_drawdown_percent": 1.4887951136316468,
"profit_factor": 0.6485575434820195,
"score": -0.12638320925319477
},
"test": {
"trades": 0,
@@ -198,7 +225,8 @@
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0
"profit_factor": 0.0,
"symbol_breakdown": []
}
},
{
@@ -207,25 +235,38 @@
"test_records": 720,
"thresholds": {
"edge": 0.1,
"probability": 0.57,
"probability": 0.56,
"confidence": 0.4,
"trades": 14,
"trades": 17,
"wins": 9,
"win_rate": 0.6428571428571429,
"total_net_percent": 0.4316747127586451,
"average_net_percent": 0.030833908054188935,
"max_drawdown_percent": 3.0444999196004408,
"profit_factor": 1.0927846710457836,
"score": -0.02831168312815889
"win_rate": 0.5294117647058824,
"total_net_percent": 0.05666907902904805,
"average_net_percent": 0.0033334752370028265,
"max_drawdown_percent": 3.2186862081818535,
"profit_factor": 1.0111053980425537,
"score": -0.07120060423478176
},
"test": {
"trades": 17,
"wins": 8,
"win_rate": 0.4706,
"total_net_percent": 10.3038,
"avg_net_percent": 0.6061,
"max_drawdown_percent": 1.5511,
"profit_factor": 3.6814
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"symbol_breakdown": [
{
"symbol": "ETHUSDT",
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"trade_share": 1.0
}
]
}
},
{
@@ -252,74 +293,215 @@
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0
"profit_factor": 0.0,
"symbol_breakdown": []
}
}
]
},
"benchmark": {
"name": "trend_macd_baseline",
"summary": {
"trades": 0,
"wins": 0,
"win_rate": 0.0,
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0,
"status": "no_trades"
},
"symbol_breakdown": [],
"folds_with_trades": 0,
"folds": [
{
"fold": 1,
"test_records": 720,
"test": {
"trades": 0,
"wins": 0,
"win_rate": 0.0,
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0,
"symbol_breakdown": []
}
},
{
"fold": 2,
"test_records": 720,
"test": {
"trades": 0,
"wins": 0,
"win_rate": 0.0,
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0,
"symbol_breakdown": []
}
},
{
"fold": 3,
"test_records": 720,
"test": {
"trades": 0,
"wins": 0,
"win_rate": 0.0,
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0,
"symbol_breakdown": []
}
}
]
},
"validation": {
"status": "fail",
"passed": false,
"checks": [
{
"name": "oos_trades",
"value": 4,
"required": 30,
"passed": false
},
{
"name": "oos_symbols",
"value": 1,
"required": 2,
"passed": false
},
{
"name": "max_symbol_share",
"value": 1.0,
"required": 0.75,
"passed": false
},
{
"name": "folds_with_trades",
"value": 1,
"required": 2,
"passed": false
},
{
"name": "oos_avg_net_positive",
"value": 3.4907,
"required": "> 0",
"passed": true
},
{
"name": "oos_profit_factor",
"value": 999.0,
"required": 1.1,
"passed": true
},
{
"name": "beats_benchmark_total",
"value": 13.9628,
"required": 0.0,
"passed": true
}
],
"oos_summary": {
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"status": "warn"
},
"benchmark_summary": {
"trades": 0,
"wins": 0,
"win_rate": 0.0,
"total_net_percent": 0,
"avg_net_percent": 0.0,
"max_drawdown_percent": 0.0,
"profit_factor": 0.0,
"status": "no_trades"
},
"symbol_breakdown": [
{
"symbol": "ETHUSDT",
"trades": 4,
"wins": 4,
"win_rate": 1.0,
"total_net_percent": 13.9628,
"avg_net_percent": 3.4907,
"max_drawdown_percent": 0.0,
"profit_factor": 999.0,
"trade_share": 1.0
}
]
},
"probability_calibration": {
"samples": 2880,
"buckets": [
{
"bucket": "0.30-0.35",
"samples": 38,
"avg_probability": 0.3361,
"actual_win_rate": 0.1053,
"avg_future_net_percent": -0.6575
"samples": 37,
"avg_probability": 0.3359,
"actual_win_rate": 0.1081,
"avg_future_net_percent": -0.6726
},
{
"bucket": "0.35-0.40",
"samples": 406,
"avg_probability": 0.3838,
"actual_win_rate": 0.2192,
"avg_future_net_percent": -0.641
"samples": 392,
"avg_probability": 0.3839,
"actual_win_rate": 0.227,
"avg_future_net_percent": -0.6306
},
{
"bucket": "0.40-0.45",
"samples": 1043,
"avg_probability": 0.4276,
"actual_win_rate": 0.2809,
"avg_future_net_percent": -0.4529
"samples": 1038,
"avg_probability": 0.4277,
"actual_win_rate": 0.29,
"avg_future_net_percent": -0.4258
},
{
"bucket": "0.45-0.50",
"samples": 918,
"avg_probability": 0.4744,
"actual_win_rate": 0.3301,
"avg_future_net_percent": -0.3166
"samples": 922,
"avg_probability": 0.4742,
"actual_win_rate": 0.3308,
"avg_future_net_percent": -0.3125
},
{
"bucket": "0.50-0.55",
"samples": 312,
"avg_probability": 0.5195,
"actual_win_rate": 0.3846,
"avg_future_net_percent": -0.1107
"samples": 327,
"avg_probability": 0.5196,
"actual_win_rate": 0.3914,
"avg_future_net_percent": -0.0857
},
{
"bucket": "0.55-0.60",
"samples": 108,
"avg_probability": 0.5753,
"actual_win_rate": 0.4259,
"avg_future_net_percent": 0.0115
"samples": 107,
"avg_probability": 0.5751,
"actual_win_rate": 0.4299,
"avg_future_net_percent": 0.0174
},
{
"bucket": "0.60-0.65",
"samples": 42,
"samples": 44,
"avg_probability": 0.6136,
"actual_win_rate": 0.4762,
"avg_future_net_percent": 0.0003
"actual_win_rate": 0.4545,
"avg_future_net_percent": -0.0248
},
{
"bucket": "0.65-0.70",
"samples": 7,
"avg_probability": 0.666,
"avg_probability": 0.6664,
"actual_win_rate": 0.2857,
"avg_future_net_percent": 0.538
},
{
"bucket": "0.70-0.75",
"samples": 6,
"avg_probability": 0.7106,
"avg_probability": 0.7107,
"actual_win_rate": 0.8333,
"avg_future_net_percent": 2.1268
}
@@ -694,27 +876,27 @@
"edge": 0.1,
"probability": 0.6,
"confidence": 0.4,
"trades": 16,
"trades": 18,
"wins": 9,
"win_rate": 0.5625,
"total_net_percent": 7.917141995065846,
"average_net_percent": 0.49482137469161536,
"max_drawdown_percent": 1.812991648733242,
"profit_factor": 3.629214989861449,
"score": 0.5816887551556057
"win_rate": 0.5,
"total_net_percent": 6.354067302186417,
"average_net_percent": 0.3530037390103565,
"max_drawdown_percent": 2.512166737458932,
"profit_factor": 2.5447559325558493,
"score": 0.3929497464193848
},
{
"edge": 0.08,
"probability": 0.6,
"confidence": 0.4,
"trades": 16,
"trades": 18,
"wins": 9,
"win_rate": 0.5625,
"total_net_percent": 7.917141995065846,
"average_net_percent": 0.49482137469161536,
"max_drawdown_percent": 1.812991648733242,
"profit_factor": 3.629214989861449,
"score": 0.5816887551556057
"win_rate": 0.5,
"total_net_percent": 6.354067302186417,
"average_net_percent": 0.3530037390103565,
"max_drawdown_percent": 2.512166737458932,
"profit_factor": 2.5447559325558493,
"score": 0.3929497464193848
}
]
}