Files
cointrader/results/xrpusdt/wf_backtest_20260322_224727.json
2026-05-04 09:03:03 +09:00

838 lines
22 KiB
JSON

{
"mode": "walk_forward",
"config": {
"symbols": [
"XRPUSDT"
],
"start": null,
"end": null,
"initial_balance": 1000.0,
"leverage": 20,
"fee_pct": 0.04,
"slippage_pct": 0.01,
"use_ml": false,
"ml_threshold": 0.55,
"max_daily_loss_pct": 0.05,
"max_positions": 3,
"max_same_direction": 2,
"margin_max_ratio": 0.5,
"margin_min_ratio": 0.2,
"margin_decay_rate": 0.0006,
"atr_sl_mult": 1.5,
"atr_tp_mult": 4.0,
"min_notional": 5.0,
"signal_threshold": 3,
"adx_threshold": 25.0,
"volume_multiplier": 2.5,
"train_months": 3,
"test_months": 1,
"time_weight_decay": 2.0,
"negative_ratio": 3
},
"summary": {
"total_trades": 27,
"total_pnl": 817.0717,
"return_pct": 81.71,
"win_rate": 44.44,
"avg_win": 140.6556,
"avg_loss": -58.053,
"payoff_ratio": 2.42,
"max_consecutive_losses": 4,
"profit_factor": 1.94,
"max_drawdown_pct": 20.23,
"sharpe_ratio": 51.77,
"total_fees": 195.3719,
"close_reasons": {
"STOP_LOSS": 15,
"TAKE_PROFIT": 11,
"REVERSE_SIGNAL": 1
}
},
"folds": [
{
"fold": 1,
"train_period": "2025-03-05 ~ 2025-06-05",
"test_period": "2025-06-05 ~ 2025-07-05",
"summary": {
"total_trades": 9,
"total_pnl": 454.4106,
"return_pct": 45.44,
"win_rate": 44.44,
"avg_win": 186.0558,
"avg_loss": -57.9625,
"payoff_ratio": 3.21,
"max_consecutive_losses": 2,
"profit_factor": 2.57,
"max_drawdown_pct": 8.26,
"sharpe_ratio": 73.09,
"total_fees": 60.8765,
"close_reasons": {
"STOP_LOSS": 5,
"TAKE_PROFIT": 4
}
}
},
{
"fold": 2,
"train_period": "2025-06-05 ~ 2025-09-05",
"test_period": "2025-09-05 ~ 2025-10-05",
"summary": {
"total_trades": 10,
"total_pnl": -71.4118,
"return_pct": -7.14,
"win_rate": 30.0,
"avg_win": 116.5629,
"avg_loss": -60.1572,
"payoff_ratio": 1.94,
"max_consecutive_losses": 4,
"profit_factor": 0.83,
"max_drawdown_pct": 28.16,
"sharpe_ratio": -15.9,
"total_fees": 75.9924,
"close_reasons": {
"TAKE_PROFIT": 3,
"STOP_LOSS": 7
}
}
},
{
"fold": 3,
"train_period": "2025-09-05 ~ 2025-12-05",
"test_period": "2025-12-05 ~ 2026-01-05",
"summary": {
"total_trades": 8,
"total_pnl": 434.073,
"return_pct": 43.41,
"win_rate": 62.5,
"avg_win": 118.7911,
"avg_loss": -53.2941,
"payoff_ratio": 2.23,
"max_consecutive_losses": 1,
"profit_factor": 3.71,
"max_drawdown_pct": 5.44,
"sharpe_ratio": 101.65,
"total_fees": 58.503,
"close_reasons": {
"STOP_LOSS": 3,
"TAKE_PROFIT": 4,
"REVERSE_SIGNAL": 1
}
}
}
],
"trades": [
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-06-12 11:15:00",
"exit_time": "2025-06-12 12:30:00",
"entry_price": 2.223978,
"exit_price": 2.23446,
"quantity": 4496.0,
"sl": 2.23446,
"tp": 2.196023,
"gross_pnl": -47.13086,
"entry_fee": 3.999601,
"exit_fee": 4.018454,
"net_pnl": -55.148915,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 26.97199737318929,
"macd_hist": -0.0007807103280135859,
"atr": 0.006988561711463904,
"adx": 43.4578914382015
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-06-13 00:00:00",
"exit_time": "2025-06-13 00:30:00",
"entry_price": 2.149685,
"exit_price": 2.095237,
"quantity": 4394.9,
"sl": 2.170103,
"tp": 2.095237,
"gross_pnl": 239.292043,
"entry_fee": 3.77906,
"exit_fee": 3.683343,
"net_pnl": 231.829639,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 26.809985061770455,
"macd_hist": -0.0014287229374708253,
"atr": 0.01361191626294587,
"adx": 45.994286262673526
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-06-16 22:30:00",
"exit_time": "2025-06-16 23:45:00",
"entry_price": 2.260826,
"exit_price": 2.23893,
"quantity": 4101.6,
"sl": 2.23893,
"tp": 2.319216,
"gross_pnl": -89.809678,
"entry_fee": 3.709202,
"exit_fee": 3.673278,
"net_pnl": -97.192157,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 33.211506920436555,
"macd_hist": -0.007666291215691772,
"atr": 0.014597503086660083,
"adx": 41.77057022158849
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-06-17 15:00:00",
"exit_time": "2025-06-17 17:00:00",
"entry_price": 2.188781,
"exit_price": 2.14109,
"quantity": 4461.0,
"sl": 2.206665,
"tp": 2.14109,
"gross_pnl": 212.751364,
"entry_fee": 3.905661,
"exit_fee": 3.82056,
"net_pnl": 205.025142,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 35.98442517376965,
"macd_hist": -0.000473160901783975,
"atr": 0.011922851577807921,
"adx": 31.230008994240638
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-06-21 13:30:00",
"exit_time": "2025-06-21 14:00:00",
"entry_price": 2.119112,
"exit_price": 2.112041,
"quantity": 3992.4,
"sl": 2.112041,
"tp": 2.137967,
"gross_pnl": -28.228437,
"entry_fee": 3.384137,
"exit_fee": 3.372846,
"net_pnl": -34.98542,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 29.460371663394117,
"macd_hist": -0.002291006577745399,
"atr": 0.0047136955379463,
"adx": 26.139853452702802
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-06-21 21:15:00",
"exit_time": "2025-06-21 21:30:00",
"entry_price": 2.045995,
"exit_price": 1.990773,
"quantity": 4278.1,
"sl": 2.066704,
"tp": 1.990773,
"gross_pnl": 236.248138,
"entry_fee": 3.501189,
"exit_fee": 3.40669,
"net_pnl": 229.340259,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 24.112041978961905,
"macd_hist": -0.0015821538372272313,
"atr": 0.013805669484335523,
"adx": 47.020225174544926
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-06-24 05:30:00",
"exit_time": "2025-06-24 08:00:00",
"entry_price": 2.184818,
"exit_price": 2.167742,
"quantity": 2879.5,
"sl": 2.167742,
"tp": 2.230355,
"gross_pnl": -49.171401,
"entry_fee": 2.516474,
"exit_fee": 2.496805,
"net_pnl": -54.18468,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 73.02163697288638,
"macd_hist": 0.0005479493365071683,
"atr": 0.011384245075129916,
"adx": 47.36536786932758
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-07-01 13:00:00",
"exit_time": "2025-07-01 14:00:00",
"entry_price": 2.185781,
"exit_price": 2.19914,
"quantity": 3196.0,
"sl": 2.19914,
"tp": 2.150157,
"gross_pnl": -42.695683,
"entry_fee": 2.794303,
"exit_fee": 2.811381,
"net_pnl": -48.301367,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 34.25494593254047,
"macd_hist": -0.00014675405719808375,
"atr": 0.008906066514248343,
"adx": 38.40722178323835
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-07-04 06:00:00",
"exit_time": "2025-07-04 08:15:00",
"entry_price": 2.232877,
"exit_price": 2.208013,
"quantity": 3379.7,
"sl": 2.242201,
"tp": 2.208013,
"gross_pnl": 84.031619,
"entry_fee": 3.018581,
"exit_fee": 2.984969,
"net_pnl": 78.028069,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 31.442919224174045,
"macd_hist": -0.00029321477558042104,
"atr": 0.0062159081353788895,
"adx": 33.56850119916028
},
"fold": 1
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-05 19:45:00",
"exit_time": "2025-09-05 22:15:00",
"entry_price": 2.863514,
"exit_price": 2.815423,
"quantity": 3491.9,
"sl": 2.881548,
"tp": 2.815423,
"gross_pnl": 167.927076,
"entry_fee": 3.999641,
"exit_fee": 3.93247,
"net_pnl": 159.994965,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 66.8667614741176,
"macd_hist": 0.005566660638547516,
"atr": 0.012022614930199287,
"adx": 25.794325095274626
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-09-07 07:30:00",
"exit_time": "2025-09-07 10:15:00",
"entry_price": 2.831483,
"exit_price": 2.825709,
"quantity": 3310.6,
"sl": 2.825709,
"tp": 2.846882,
"gross_pnl": -19.117005,
"entry_fee": 3.749563,
"exit_fee": 3.741916,
"net_pnl": -26.608485,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 70.72939012092385,
"macd_hist": 0.00013947818915852105,
"atr": 0.0038496557346203194,
"adx": 25.87514662158794
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-07 14:15:00",
"exit_time": "2025-09-07 14:30:00",
"entry_price": 2.888611,
"exit_price": 2.907326,
"quantity": 3295.3,
"sl": 2.907326,
"tp": 2.838705,
"gross_pnl": -61.671288,
"entry_fee": 3.807536,
"exit_fee": 3.832205,
"net_pnl": -69.311028,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 76.27147788789821,
"macd_hist": 0.006331113894477991,
"atr": 0.012476615713124774,
"adx": 29.135371839765913
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-09 07:00:00",
"exit_time": "2025-09-09 07:15:00",
"entry_price": 3.009099,
"exit_price": 3.026836,
"quantity": 3264.0,
"sl": 3.026836,
"tp": 2.9618,
"gross_pnl": -57.893469,
"entry_fee": 3.92868,
"exit_fee": 3.951837,
"net_pnl": -65.773986,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 73.38194905544675,
"macd_hist": 0.006160466326798137,
"atr": 0.011824646391069867,
"adx": 28.105801823891394
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-12 20:45:00",
"exit_time": "2025-09-13 08:45:00",
"entry_price": 3.121788,
"exit_price": 3.143446,
"quantity": 3197.5,
"sl": 3.143446,
"tp": 3.064033,
"gross_pnl": -69.251372,
"entry_fee": 3.992767,
"exit_fee": 4.020467,
"net_pnl": -77.264606,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 78.88995114530964,
"macd_hist": 0.004793783646225545,
"atr": 0.014438649390670705,
"adx": 33.848649235778474
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-14 11:15:00",
"exit_time": "2025-09-14 13:45:00",
"entry_price": 3.066993,
"exit_price": 3.033085,
"quantity": 3002.8,
"sl": 3.079709,
"tp": 3.033085,
"gross_pnl": 101.818765,
"entry_fee": 3.683827,
"exit_fee": 3.643099,
"net_pnl": 94.491838,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 31.419480021379645,
"macd_hist": -0.0003629091436070245,
"atr": 0.008476985221720718,
"adx": 31.882046477112183
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-20 14:00:00",
"exit_time": "2025-09-20 14:45:00",
"entry_price": 2.971603,
"exit_price": 2.980986,
"quantity": 3353.4,
"sl": 2.980986,
"tp": 2.94658,
"gross_pnl": -31.466181,
"entry_fee": 3.985989,
"exit_fee": 3.998576,
"net_pnl": -39.450746,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 36.09553473183674,
"macd_hist": -0.00018720159437711752,
"atr": 0.006255577606168083,
"adx": 28.84076206692945
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-09-24 19:45:00",
"exit_time": "2025-09-24 20:30:00",
"entry_price": 2.976198,
"exit_price": 2.955734,
"quantity": 3279.9,
"sl": 2.955734,
"tp": 3.030766,
"gross_pnl": -67.117005,
"entry_fee": 3.904652,
"exit_fee": 3.877805,
"net_pnl": -74.899463,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 77.25608496751632,
"macd_hist": 0.00019635721897620986,
"atr": 0.013642083686890932,
"adx": 66.36435142210216
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-09-25 12:15:00",
"exit_time": "2025-09-25 12:30:00",
"entry_price": 2.793221,
"exit_price": 2.811993,
"quantity": 3226.0,
"sl": 2.811993,
"tp": 2.743161,
"gross_pnl": -60.559206,
"entry_fee": 3.604372,
"exit_fee": 3.628596,
"net_pnl": -67.792174,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 27.256149561284357,
"macd_hist": -0.0005773233003328118,
"atr": 0.012514818420656685,
"adx": 36.706433983392714
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-09-28 22:00:00",
"exit_time": "2025-09-29 07:15:00",
"entry_price": 2.850785,
"exit_price": 2.885643,
"quantity": 2923.6,
"sl": 2.837713,
"tp": 2.885643,
"gross_pnl": 101.910302,
"entry_fee": 3.333822,
"exit_fee": 3.374586,
"net_pnl": 95.201894,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 69.94607598871028,
"macd_hist": 0.0002172037763433672,
"atr": 0.008714453238038499,
"adx": 45.96715774504039
},
"fold": 2
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-12-10 10:30:00",
"exit_time": "2025-12-10 18:30:00",
"entry_price": 2.069993,
"exit_price": 2.080244,
"quantity": 4830.5,
"sl": 2.080244,
"tp": 2.042658,
"gross_pnl": -49.515419,
"entry_fee": 3.99964,
"exit_fee": 4.019447,
"net_pnl": -57.534506,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 37.038012691554805,
"macd_hist": -9.211636302669133e-05,
"atr": 0.0068337189344636114,
"adx": 28.943927763667713
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-12-12 16:00:00",
"exit_time": "2025-12-13 05:00:00",
"entry_price": 1.988899,
"exit_price": 2.037103,
"quantity": 4739.1,
"sl": 1.970822,
"tp": 2.037103,
"gross_pnl": 228.445099,
"entry_fee": 3.770236,
"exit_fee": 3.861614,
"net_pnl": 220.813249,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 28.182013495720106,
"macd_hist": -0.00643391832048344,
"atr": 0.01205108033747697,
"adx": 30.769786891839054
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-12-19 13:15:00",
"exit_time": "2025-12-19 15:15:00",
"entry_price": 1.878712,
"exit_price": 1.889911,
"quantity": 4978.2,
"sl": 1.889911,
"tp": 1.84885,
"gross_pnl": -55.748245,
"entry_fee": 3.741042,
"exit_fee": 3.763341,
"net_pnl": -63.252628,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 68.16547032772114,
"macd_hist": -4.5929936914913816e-05,
"atr": 0.007465649526915487,
"adx": 40.69667585881617
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2025-12-25 23:30:00",
"exit_time": "2025-12-26 02:15:00",
"entry_price": 1.831783,
"exit_price": 1.857641,
"quantity": 5284.9,
"sl": 1.822086,
"tp": 1.857641,
"gross_pnl": 136.657597,
"entry_fee": 3.872316,
"exit_fee": 3.926979,
"net_pnl": 128.858301,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 18.688435627302994,
"macd_hist": -0.0034657628634239823,
"atr": 0.006464530874639477,
"adx": 30.228290924248867
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2026-01-01 15:45:00",
"exit_time": "2026-01-01 16:15:00",
"entry_price": 1.861986,
"exit_price": 1.855307,
"quantity": 4787.6,
"sl": 1.855307,
"tp": 1.879797,
"gross_pnl": -31.976479,
"entry_fee": 3.565778,
"exit_fee": 3.552987,
"net_pnl": -39.095244,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 64.9515011671277,
"macd_hist": 8.017825296896758e-05,
"atr": 0.004452680396625609,
"adx": 29.061543249865803
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2026-01-02 14:30:00",
"exit_time": "2026-01-02 16:15:00",
"entry_price": 1.906991,
"exit_price": 1.93559,
"quantity": 4818.6,
"sl": 1.896266,
"tp": 1.93559,
"gross_pnl": 137.806916,
"entry_fee": 3.67561,
"exit_fee": 3.730733,
"net_pnl": 130.400573,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 68.243618769103,
"macd_hist": 0.00021763021087121363,
"atr": 0.007149738287103824,
"adx": 34.75978288472445
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2026-01-04 00:45:00",
"exit_time": "2026-01-04 03:00:00",
"entry_price": 2.041396,
"exit_price": 2.038904,
"quantity": 3981.9,
"sl": 2.052244,
"tp": 2.012468,
"gross_pnl": 9.922775,
"entry_fee": 3.251454,
"exit_fee": 3.247485,
"net_pnl": 3.423837,
"close_reason": "REVERSE_SIGNAL",
"ml_proba": null,
"indicators": {
"rsi": 78.42031027026397,
"macd_hist": 0.002773445174521872,
"atr": 0.007231967338050755,
"adx": 25.06146716762975
},
"fold": 3
},
{
"symbol": "XRPUSDT",
"side": "LONG",
"entry_time": "2026-01-04 03:00:00",
"exit_time": "2026-01-04 05:15:00",
"entry_price": 2.038904,
"exit_price": 2.068362,
"quantity": 3971.2,
"sl": 2.027857,
"tp": 2.068362,
"gross_pnl": 116.983697,
"entry_fee": 3.238758,
"exit_fee": 3.285551,
"net_pnl": 110.459388,
"close_reason": "TAKE_PROFIT",
"ml_proba": null,
"indicators": {
"rsi": 66.00101725582081,
"macd_hist": 4.503977849404806e-05,
"atr": 0.007364505506906315,
"adx": 30.991168735172053
},
"fold": 3
}
],
"validation": {
"overall": "FAIL",
"checks": [
{
"name": "exit_after_entry",
"passed": true,
"level": "FAIL",
"message": "모든 트레이드에서 청산 > 진입"
},
{
"name": "sl_tp_direction",
"passed": true,
"level": "FAIL",
"message": "SL/TP 방향 정합"
},
{
"name": "no_overlap",
"passed": true,
"level": "FAIL",
"message": "포지션 비중첩 확인"
},
{
"name": "positive_fees",
"passed": true,
"level": "FAIL",
"message": "수수료 양수 확인"
},
{
"name": "no_negative_balance",
"passed": true,
"level": "FAIL",
"message": "잔고 양수 유지"
},
{
"name": "win_rate_high",
"passed": true,
"level": "WARNING",
"message": "승률 정상 (44.4%)"
},
{
"name": "win_rate_low",
"passed": true,
"level": "WARNING",
"message": "승률 정상 (44.4%)"
},
{
"name": "mdd_nonzero",
"passed": true,
"level": "WARNING",
"message": "MDD 정상 (20.2%)"
},
{
"name": "trade_frequency",
"passed": false,
"level": "WARNING",
"message": "월 평균 4.0건 < 5건 — 신호 생성 부족"
},
{
"name": "profit_factor_high",
"passed": true,
"level": "WARNING",
"message": "PF 정상 (1.94)"
}
]
}
}