feat: add new walk-forward backtest results and strategy sweeps for XRPUSDT

- Introduced multiple JSON files containing results from walk-forward backtests with varying configurations.
- Added strategy sweep results for different parameter combinations, showcasing performance metrics such as total trades, total PnL, win rate, and more.
- Enhanced the overall testing framework for better analysis of trading strategies.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
21in7
2026-03-07 00:22:39 +09:00
parent 072910df39
commit d8d4bf3e20
15 changed files with 16981 additions and 0 deletions

View File

@@ -0,0 +1,827 @@
{
"mode": "walk_forward",
"config": {
"symbols": [
"XRPUSDT"
],
"start": null,
"end": null,
"initial_balance": 1000.0,
"leverage": 10,
"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": 2.0,
"atr_tp_mult": 2.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": 5
},
"summary": {
"total_trades": 27,
"total_pnl": 217.0703,
"return_pct": 21.71,
"win_rate": 66.67,
"avg_win": 33.2223,
"avg_loss": -42.3256,
"profit_factor": 1.57,
"max_drawdown_pct": 11.99,
"sharpe_ratio": 33.32,
"total_fees": 102.7825,
"close_reasons": {
"STOP_LOSS": 9,
"TAKE_PROFIT": 18
}
},
"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": -54.288,
"return_pct": -5.43,
"win_rate": 44.44,
"avg_win": 40.6662,
"avg_loss": -43.3906,
"profit_factor": 0.75,
"max_drawdown_pct": 11.99,
"sharpe_ratio": -21.46,
"total_fees": 32.8699,
"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": 13.0734,
"return_pct": 1.31,
"win_rate": 60.0,
"avg_win": 29.5084,
"avg_loss": -40.9943,
"profit_factor": 1.08,
"max_drawdown_pct": 10.97,
"sharpe_ratio": 5.62,
"total_fees": 39.3346,
"close_reasons": {
"TAKE_PROFIT": 6,
"STOP_LOSS": 4
}
}
},
{
"fold": 3,
"train_period": "2025-09-05 ~ 2025-12-05",
"test_period": "2025-12-05 ~ 2026-01-05",
"summary": {
"total_trades": 8,
"total_pnl": 258.2849,
"return_pct": 25.83,
"win_rate": 100.0,
"avg_win": 32.2856,
"avg_loss": 0.0,
"profit_factor": "Infinity",
"max_drawdown_pct": 0.0,
"sharpe_ratio": 502.51,
"total_fees": 30.578,
"close_reasons": {
"TAKE_PROFIT": 8
}
}
}
],
"trades": [
{
"symbol": "XRPUSDT",
"side": "SHORT",
"entry_time": "2025-06-12 11:15:00",
"exit_time": "2025-06-12 13:00:00",
"entry_price": 2.223978,
"exit_price": 2.237955,
"quantity": 2248.0,
"sl": 2.237955,
"tp": 2.21,
"gross_pnl": -31.420573,
"entry_fee": 1.999801,
"exit_fee": 2.012369,
"net_pnl": -35.432743,
"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": "LONG",
"entry_time": "2025-06-12 20:30:00",
"exit_time": "2025-06-13 00:00:00",
"entry_price": 2.186419,
"exit_price": 2.163885,
"quantity": 2201.5,
"sl": 2.163885,
"tp": 2.208952,
"gross_pnl": -49.607437,
"entry_fee": 1.92536,
"exit_fee": 1.905517,
"net_pnl": -53.438315,
"close_reason": "STOP_LOSS",
"ml_proba": null,
"indicators": {
"rsi": 26.41519543415668,
"macd_hist": -0.005495027011351469,
"atr": 0.011266735681191995,
"adx": 35.41443548413551
},
"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.231631,
"quantity": 2006.6,
"sl": 2.231631,
"tp": 2.290021,
"gross_pnl": -58.582699,
"entry_fee": 1.814629,
"exit_fee": 1.791196,
"net_pnl": -62.188525,
"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 15:30:00",
"entry_price": 2.188781,
"exit_price": 2.164935,
"quantity": 1926.0,
"sl": 2.212627,
"tp": 2.164935,
"gross_pnl": 45.926824,
"entry_fee": 1.686237,
"exit_fee": 1.667866,
"net_pnl": 42.572721,
"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 15:15:00",
"entry_price": 2.119112,
"exit_price": 2.109684,
"quantity": 2086.2,
"sl": 2.109684,
"tp": 2.128539,
"gross_pnl": -19.667423,
"entry_fee": 1.768356,
"exit_fee": 1.76049,
"net_pnl": -23.196269,
"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": 2.018384,
"quantity": 2099.3,
"sl": 2.073607,
"tp": 2.018384,
"gross_pnl": 57.964484,
"entry_fee": 1.718063,
"exit_fee": 1.694877,
"net_pnl": 54.551543,
"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 06:00:00",
"entry_price": 2.184818,
"exit_price": 2.207587,
"quantity": 2087.2,
"sl": 2.16205,
"tp": 2.207587,
"gross_pnl": 47.522393,
"entry_fee": 1.824061,
"exit_fee": 1.84307,
"net_pnl": 43.855261,
"close_reason": "TAKE_PROFIT",
"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:15:00",
"entry_price": 2.185781,
"exit_price": 2.203594,
"quantity": 2182.0,
"sl": 2.203594,
"tp": 2.167969,
"gross_pnl": -38.866074,
"entry_fee": 1.90775,
"exit_fee": 1.923296,
"net_pnl": -42.697121,
"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 07:30:00",
"entry_price": 2.232877,
"exit_price": 2.220445,
"quantity": 2036.1,
"sl": 2.245309,
"tp": 2.220445,
"gross_pnl": 25.312421,
"entry_fee": 1.818544,
"exit_fee": 1.808419,
"net_pnl": 21.685458,
"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 21:00:00",
"entry_price": 2.863514,
"exit_price": 2.839468,
"quantity": 1745.9,
"sl": 2.887559,
"tp": 2.839468,
"gross_pnl": 41.980567,
"entry_fee": 1.999763,
"exit_fee": 1.982971,
"net_pnl": 37.997832,
"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 13:30:00",
"entry_price": 2.831483,
"exit_price": 2.839182,
"quantity": 1750.6,
"sl": 2.823784,
"tp": 2.839182,
"gross_pnl": 13.478415,
"entry_fee": 1.982718,
"exit_fee": 1.988109,
"net_pnl": 9.507588,
"close_reason": "TAKE_PROFIT",
"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 17:45:00",
"entry_price": 2.888611,
"exit_price": 2.863658,
"quantity": 1711.8,
"sl": 2.913564,
"tp": 2.863658,
"gross_pnl": 42.714942,
"entry_fee": 1.97789,
"exit_fee": 1.960804,
"net_pnl": 38.776248,
"close_reason": "TAKE_PROFIT",
"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 08:30:00",
"entry_price": 3.009099,
"exit_price": 3.032748,
"quantity": 1621.9,
"sl": 3.032748,
"tp": 2.98545,
"gross_pnl": -38.356788,
"entry_fee": 1.952183,
"exit_fee": 1.967526,
"net_pnl": -42.276497,
"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-12 21:30:00",
"entry_price": 3.121788,
"exit_price": 3.09291,
"quantity": 1587.4,
"sl": 3.150665,
"tp": 3.09291,
"gross_pnl": 45.839824,
"entry_fee": 1.98221,
"exit_fee": 1.963874,
"net_pnl": 41.893739,
"close_reason": "TAKE_PROFIT",
"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 12:30:00",
"entry_price": 3.066993,
"exit_price": 3.050039,
"quantity": 1594.0,
"sl": 3.083947,
"tp": 3.050039,
"gross_pnl": 27.024629,
"entry_fee": 1.955515,
"exit_fee": 1.944705,
"net_pnl": 23.124409,
"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 15:00:00",
"entry_price": 2.971603,
"exit_price": 2.984114,
"quantity": 1630.7,
"sl": 2.984114,
"tp": 2.959092,
"gross_pnl": -20.401941,
"entry_fee": 1.938317,
"exit_fee": 1.946478,
"net_pnl": -24.286736,
"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 21:45:00",
"entry_price": 2.976198,
"exit_price": 2.948913,
"quantity": 1646.2,
"sl": 2.948913,
"tp": 3.003482,
"gross_pnl": -44.915196,
"entry_fee": 1.959767,
"exit_fee": 1.941801,
"net_pnl": -48.816763,
"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.81825,
"quantity": 1781.8,
"sl": 2.81825,
"tp": 2.768191,
"gross_pnl": -44.597807,
"entry_fee": 1.990784,
"exit_fee": 2.008623,
"net_pnl": -48.597214,
"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 02:15:00",
"entry_price": 2.850785,
"exit_price": 2.868214,
"quantity": 1700.7,
"sl": 2.833356,
"tp": 2.868214,
"gross_pnl": 29.641341,
"entry_fee": 1.939332,
"exit_fee": 1.951189,
"net_pnl": 25.750821,
"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 14:30:00",
"entry_price": 2.069993,
"exit_price": 2.056326,
"quantity": 2415.2,
"sl": 2.08366,
"tp": 2.056326,
"gross_pnl": 33.009596,
"entry_fee": 1.999779,
"exit_fee": 1.986575,
"net_pnl": 29.023242,
"close_reason": "TAKE_PROFIT",
"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-12 18:30:00",
"entry_price": 1.988899,
"exit_price": 2.013001,
"quantity": 2498.4,
"sl": 1.964797,
"tp": 2.013001,
"gross_pnl": 60.216838,
"entry_fee": 1.987626,
"exit_fee": 2.011713,
"net_pnl": 56.2175,
"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 13:45:00",
"entry_price": 1.878712,
"exit_price": 1.863781,
"quantity": 2596.8,
"sl": 1.893643,
"tp": 1.863781,
"gross_pnl": 38.773597,
"entry_fee": 1.951456,
"exit_fee": 1.935946,
"net_pnl": 34.886195,
"close_reason": "TAKE_PROFIT",
"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:00:00",
"entry_price": 1.831783,
"exit_price": 1.844712,
"quantity": 2624.8,
"sl": 1.818854,
"tp": 1.844712,
"gross_pnl": 33.936201,
"entry_fee": 1.923226,
"exit_fee": 1.9368,
"net_pnl": 30.076175,
"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 17:15:00",
"entry_price": 1.861986,
"exit_price": 1.870892,
"quantity": 2543.8,
"sl": 1.853081,
"tp": 1.870892,
"gross_pnl": 22.653457,
"entry_fee": 1.894608,
"exit_fee": 1.90367,
"net_pnl": 18.855179,
"close_reason": "TAKE_PROFIT",
"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 14:45:00",
"entry_price": 1.906991,
"exit_price": 1.92129,
"quantity": 2458.8,
"sl": 1.892691,
"tp": 1.92129,
"gross_pnl": 35.159553,
"entry_fee": 1.875563,
"exit_fee": 1.889627,
"net_pnl": 31.394362,
"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 01:30:00",
"entry_price": 2.041396,
"exit_price": 2.026932,
"quantity": 2251.8,
"sl": 2.05586,
"tp": 2.026932,
"gross_pnl": 32.569888,
"entry_fee": 1.838726,
"exit_fee": 1.825698,
"net_pnl": 28.905464,
"close_reason": "TAKE_PROFIT",
"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 03:45:00",
"entry_price": 2.038904,
"exit_price": 2.053633,
"quantity": 2209.5,
"sl": 2.024175,
"tp": 2.053633,
"gross_pnl": 32.54375,
"entry_fee": 1.801983,
"exit_fee": 1.815001,
"net_pnl": 28.926766,
"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": "승률 정상 (66.7%)"
},
{
"name": "win_rate_low",
"passed": true,
"level": "WARNING",
"message": "승률 정상 (66.7%)"
},
{
"name": "mdd_nonzero",
"passed": true,
"level": "WARNING",
"message": "MDD 정상 (12.0%)"
},
{
"name": "trade_frequency",
"passed": false,
"level": "WARNING",
"message": "월 평균 4.0건 < 5건 — 신호 생성 부족"
},
{
"name": "profit_factor_high",
"passed": true,
"level": "WARNING",
"message": "PF 정상 (1.57)"
}
]
}
}