.gitignore에서 docs 하위 제외 규칙을 제거하고 최신 HTML·CSV·JSON 리포트를 원격에 공유한다. Co-authored-by: Cursor <cursoragent@cursor.com>
2259 lines
50 KiB
JSON
2259 lines
50 KiB
JSON
{
|
||
"label_mode": "leg_gt",
|
||
"train_ratio": 0.7,
|
||
"holdout_ratio": 0.15,
|
||
"outcomes_rows": 86924,
|
||
"walk_forward": [
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 263,
|
||
"ev_pct": -1.9422,
|
||
"win_rate": 0.3916,
|
||
"profit_factor": 0.5766
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-07",
|
||
"count": 140,
|
||
"ev_pct": 13.1116,
|
||
"win_rate": 0.8286,
|
||
"profit_factor": 12.8707
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-08",
|
||
"count": 216,
|
||
"ev_pct": 7.649,
|
||
"win_rate": 0.9491,
|
||
"profit_factor": 63.0895
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-09",
|
||
"count": 178,
|
||
"ev_pct": 7.3711,
|
||
"win_rate": 0.7697,
|
||
"profit_factor": 6.8926
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-10",
|
||
"count": 213,
|
||
"ev_pct": 4.0333,
|
||
"win_rate": 0.7746,
|
||
"profit_factor": 6.2016
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 205,
|
||
"ev_pct": -1.2831,
|
||
"win_rate": 0.5268,
|
||
"profit_factor": 0.6819
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 205,
|
||
"ev_pct": 5.419,
|
||
"win_rate": 0.6098,
|
||
"profit_factor": 3.1271
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 179,
|
||
"ev_pct": 13.9222,
|
||
"win_rate": 0.7598,
|
||
"profit_factor": 6.5045
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 150,
|
||
"ev_pct": 8.9954,
|
||
"win_rate": 0.9733,
|
||
"profit_factor": 806.3668
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 234,
|
||
"ev_pct": -0.5767,
|
||
"win_rate": 0.5342,
|
||
"profit_factor": 0.8951
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 153,
|
||
"ev_pct": 5.1785,
|
||
"win_rate": 0.6667,
|
||
"profit_factor": 4.1474
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 151,
|
||
"ev_pct": 7.6904,
|
||
"win_rate": 0.7152,
|
||
"profit_factor": 4.3217
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 1662,
|
||
"ev_pct": -1.2464,
|
||
"win_rate": 0.4663,
|
||
"profit_factor": 0.7035
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-07",
|
||
"count": 1479,
|
||
"ev_pct": 12.7113,
|
||
"win_rate": 0.8087,
|
||
"profit_factor": 10.5725
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-08",
|
||
"count": 1482,
|
||
"ev_pct": 7.2384,
|
||
"win_rate": 0.9143,
|
||
"profit_factor": 34.2206
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-09",
|
||
"count": 1340,
|
||
"ev_pct": 7.4951,
|
||
"win_rate": 0.8075,
|
||
"profit_factor": 8.2324
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-10",
|
||
"count": 1666,
|
||
"ev_pct": 3.5571,
|
||
"win_rate": 0.7641,
|
||
"profit_factor": 4.7418
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 1560,
|
||
"ev_pct": -0.513,
|
||
"win_rate": 0.5667,
|
||
"profit_factor": 0.8596
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 1360,
|
||
"ev_pct": 6.6657,
|
||
"win_rate": 0.7059,
|
||
"profit_factor": 4.31
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 1496,
|
||
"ev_pct": 14.0964,
|
||
"win_rate": 0.8483,
|
||
"profit_factor": 9.9518
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 1248,
|
||
"ev_pct": 8.6967,
|
||
"win_rate": 0.9768,
|
||
"profit_factor": 745.196
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 1654,
|
||
"ev_pct": -1.0084,
|
||
"win_rate": 0.4861,
|
||
"profit_factor": 0.8106
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 1238,
|
||
"ev_pct": 2.6525,
|
||
"win_rate": 0.5872,
|
||
"profit_factor": 2.4103
|
||
},
|
||
{
|
||
"rule_id": "buy_compound_top3",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 1446,
|
||
"ev_pct": 5.7454,
|
||
"win_rate": 0.7434,
|
||
"profit_factor": 3.8645
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 1619,
|
||
"ev_pct": -1.1497,
|
||
"win_rate": 0.4515,
|
||
"profit_factor": 0.7231
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-07",
|
||
"count": 1449,
|
||
"ev_pct": 12.6089,
|
||
"win_rate": 0.8213,
|
||
"profit_factor": 11.252
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-08",
|
||
"count": 1474,
|
||
"ev_pct": 7.2413,
|
||
"win_rate": 0.9064,
|
||
"profit_factor": 24.6353
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-09",
|
||
"count": 1572,
|
||
"ev_pct": 6.7861,
|
||
"win_rate": 0.7608,
|
||
"profit_factor": 6.2571
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-10",
|
||
"count": 1650,
|
||
"ev_pct": 3.2113,
|
||
"win_rate": 0.7212,
|
||
"profit_factor": 3.8357
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 1452,
|
||
"ev_pct": -0.596,
|
||
"win_rate": 0.5882,
|
||
"profit_factor": 0.8326
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 1465,
|
||
"ev_pct": 6.909,
|
||
"win_rate": 0.7065,
|
||
"profit_factor": 4.9076
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 1519,
|
||
"ev_pct": 13.7445,
|
||
"win_rate": 0.8367,
|
||
"profit_factor": 9.1005
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 1358,
|
||
"ev_pct": 8.6035,
|
||
"win_rate": 0.9624,
|
||
"profit_factor": 341.2629
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 1714,
|
||
"ev_pct": -0.9158,
|
||
"win_rate": 0.5082,
|
||
"profit_factor": 0.8265
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 1291,
|
||
"ev_pct": 2.8274,
|
||
"win_rate": 0.5716,
|
||
"profit_factor": 2.7096
|
||
},
|
||
{
|
||
"rule_id": "buy_contrast_m10_bb_pos",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 1430,
|
||
"ev_pct": 6.2557,
|
||
"win_rate": 0.7629,
|
||
"profit_factor": 4.2613
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 308,
|
||
"ev_pct": 0.3277,
|
||
"win_rate": 0.5195,
|
||
"profit_factor": 1.1378
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-07",
|
||
"count": 227,
|
||
"ev_pct": 13.6561,
|
||
"win_rate": 0.6564,
|
||
"profit_factor": 8.6272
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-08",
|
||
"count": 301,
|
||
"ev_pct": 7.494,
|
||
"win_rate": 0.9568,
|
||
"profit_factor": 103.4348
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-09",
|
||
"count": 263,
|
||
"ev_pct": 8.7699,
|
||
"win_rate": 0.9202,
|
||
"profit_factor": 24.9021
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-10",
|
||
"count": 354,
|
||
"ev_pct": 4.0776,
|
||
"win_rate": 0.7881,
|
||
"profit_factor": 4.7769
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 379,
|
||
"ev_pct": 0.6357,
|
||
"win_rate": 0.5752,
|
||
"profit_factor": 1.2688
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 359,
|
||
"ev_pct": 5.0753,
|
||
"win_rate": 0.6769,
|
||
"profit_factor": 2.7763
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 261,
|
||
"ev_pct": 16.1777,
|
||
"win_rate": 0.8238,
|
||
"profit_factor": 12.0475
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 273,
|
||
"ev_pct": 10.078,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 2751.2872
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 358,
|
||
"ev_pct": -0.7844,
|
||
"win_rate": 0.4944,
|
||
"profit_factor": 0.8406
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 232,
|
||
"ev_pct": 2.1824,
|
||
"win_rate": 0.5603,
|
||
"profit_factor": 2.7443
|
||
},
|
||
{
|
||
"rule_id": "buy_mtf_cross_all_tf",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 218,
|
||
"ev_pct": 4.394,
|
||
"win_rate": 0.6284,
|
||
"profit_factor": 2.9914
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 78,
|
||
"ev_pct": -0.6214,
|
||
"win_rate": 0.5128,
|
||
"profit_factor": 0.8099
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-07",
|
||
"count": 88,
|
||
"ev_pct": 15.6601,
|
||
"win_rate": 0.8636,
|
||
"profit_factor": 15.269
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-08",
|
||
"count": 80,
|
||
"ev_pct": 5.9541,
|
||
"win_rate": 0.875,
|
||
"profit_factor": 13.8636
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-09",
|
||
"count": 88,
|
||
"ev_pct": 8.453,
|
||
"win_rate": 0.8068,
|
||
"profit_factor": 10.5225
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-10",
|
||
"count": 80,
|
||
"ev_pct": 3.8108,
|
||
"win_rate": 0.7875,
|
||
"profit_factor": 8.4917
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 96,
|
||
"ev_pct": 0.649,
|
||
"win_rate": 0.6771,
|
||
"profit_factor": 1.2386
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 108,
|
||
"ev_pct": 6.9852,
|
||
"win_rate": 0.7222,
|
||
"profit_factor": 4.6301
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 152,
|
||
"ev_pct": 17.6638,
|
||
"win_rate": 0.9276,
|
||
"profit_factor": 29.4996
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 131,
|
||
"ev_pct": 8.5577,
|
||
"win_rate": 0.9618,
|
||
"profit_factor": 171.5897
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 196,
|
||
"ev_pct": -0.173,
|
||
"win_rate": 0.5102,
|
||
"profit_factor": 0.964
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 224,
|
||
"ev_pct": 2.4084,
|
||
"win_rate": 0.5045,
|
||
"profit_factor": 2.9195
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_trough_local",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 184,
|
||
"ev_pct": 6.2009,
|
||
"win_rate": 0.8587,
|
||
"profit_factor": 8.1513
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2025-06",
|
||
"count": 5,
|
||
"ev_pct": 1.9875,
|
||
"win_rate": 0.6,
|
||
"profit_factor": 12.1145
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2025-11",
|
||
"count": 5,
|
||
"ev_pct": 6.6988,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 33.4941
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2025-12",
|
||
"count": 3,
|
||
"ev_pct": 9.5205,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 28.5616
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2026-01",
|
||
"count": 2,
|
||
"ev_pct": 30.7973,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 61.5946
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2026-02",
|
||
"count": 5,
|
||
"ev_pct": 11.0061,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 55.0306
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2026-03",
|
||
"count": 3,
|
||
"ev_pct": 3.166,
|
||
"win_rate": 0.3333,
|
||
"profit_factor": 3.345
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2026-04",
|
||
"count": 1,
|
||
"ev_pct": 9.9,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 9.9
|
||
},
|
||
{
|
||
"rule_id": "gt_model_buy_zigzag_bb",
|
||
"side": "buy",
|
||
"month": "2026-05",
|
||
"count": 1,
|
||
"ev_pct": 9.0429,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 9.0429
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-06",
|
||
"count": 289,
|
||
"ev_pct": 3.5574,
|
||
"win_rate": 0.8651,
|
||
"profit_factor": 9.7973
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 390,
|
||
"ev_pct": 3.192,
|
||
"win_rate": 0.8256,
|
||
"profit_factor": 6.122
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-08",
|
||
"count": 412,
|
||
"ev_pct": 3.8355,
|
||
"win_rate": 0.8714,
|
||
"profit_factor": 16.4526
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 343,
|
||
"ev_pct": 2.7847,
|
||
"win_rate": 0.8397,
|
||
"profit_factor": 8.1316
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-10",
|
||
"count": 367,
|
||
"ev_pct": 3.0828,
|
||
"win_rate": 0.8638,
|
||
"profit_factor": 16.7214
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-11",
|
||
"count": 440,
|
||
"ev_pct": 2.5623,
|
||
"win_rate": 0.7909,
|
||
"profit_factor": 6.006
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2025-12",
|
||
"count": 622,
|
||
"ev_pct": 2.2781,
|
||
"win_rate": 0.8135,
|
||
"profit_factor": 4.902
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2026-01",
|
||
"count": 628,
|
||
"ev_pct": 2.4819,
|
||
"win_rate": 0.8822,
|
||
"profit_factor": 12.6381
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2026-02",
|
||
"count": 596,
|
||
"ev_pct": 3.1395,
|
||
"win_rate": 0.9144,
|
||
"profit_factor": 17.9664
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2026-03",
|
||
"count": 736,
|
||
"ev_pct": 1.3824,
|
||
"win_rate": 0.7459,
|
||
"profit_factor": 2.01
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2026-04",
|
||
"count": 897,
|
||
"ev_pct": 0.8388,
|
||
"win_rate": 0.7759,
|
||
"profit_factor": 1.813
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_peak_local",
|
||
"side": "sell",
|
||
"month": "2026-05",
|
||
"count": 834,
|
||
"ev_pct": 2.5192,
|
||
"win_rate": 0.8321,
|
||
"profit_factor": 5.9052
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_zigzag_peak",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 3,
|
||
"ev_pct": 10.4846,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 31.4539
|
||
},
|
||
{
|
||
"rule_id": "gt_model_sell_zigzag_peak",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 5,
|
||
"ev_pct": 12.7462,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 63.7312
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-06",
|
||
"count": 131,
|
||
"ev_pct": 5.487,
|
||
"win_rate": 0.9389,
|
||
"profit_factor": 45.1788
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 260,
|
||
"ev_pct": 4.9049,
|
||
"win_rate": 0.9385,
|
||
"profit_factor": 35.729
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-08",
|
||
"count": 246,
|
||
"ev_pct": 5.4156,
|
||
"win_rate": 0.9715,
|
||
"profit_factor": 157.8935
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 170,
|
||
"ev_pct": 4.1968,
|
||
"win_rate": 0.9294,
|
||
"profit_factor": 28.4363
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-10",
|
||
"count": 173,
|
||
"ev_pct": 3.6467,
|
||
"win_rate": 0.9711,
|
||
"profit_factor": 141.2265
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-11",
|
||
"count": 222,
|
||
"ev_pct": 5.0714,
|
||
"win_rate": 0.9459,
|
||
"profit_factor": 30.843
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2025-12",
|
||
"count": 196,
|
||
"ev_pct": 3.895,
|
||
"win_rate": 0.9643,
|
||
"profit_factor": 40.9744
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2026-01",
|
||
"count": 200,
|
||
"ev_pct": 4.708,
|
||
"win_rate": 0.9,
|
||
"profit_factor": 26.6329
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2026-02",
|
||
"count": 233,
|
||
"ev_pct": 6.0765,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1415.8263
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2026-03",
|
||
"count": 205,
|
||
"ev_pct": 4.4932,
|
||
"win_rate": 0.9415,
|
||
"profit_factor": 16.1177
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2026-04",
|
||
"count": 199,
|
||
"ev_pct": 2.6254,
|
||
"win_rate": 0.8492,
|
||
"profit_factor": 12.0323
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_tight",
|
||
"side": "sell",
|
||
"month": "2026-05",
|
||
"count": 312,
|
||
"ev_pct": 6.6931,
|
||
"win_rate": 0.9776,
|
||
"profit_factor": 139.9974
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-06",
|
||
"count": 1046,
|
||
"ev_pct": 5.3143,
|
||
"win_rate": 0.9694,
|
||
"profit_factor": 60.8886
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 1503,
|
||
"ev_pct": 5.2952,
|
||
"win_rate": 0.9501,
|
||
"profit_factor": 27.4175
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-08",
|
||
"count": 1327,
|
||
"ev_pct": 5.2946,
|
||
"win_rate": 0.9661,
|
||
"profit_factor": 117.1986
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 1279,
|
||
"ev_pct": 5.1417,
|
||
"win_rate": 0.9312,
|
||
"profit_factor": 32.1165
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-10",
|
||
"count": 1258,
|
||
"ev_pct": 3.7386,
|
||
"win_rate": 0.9316,
|
||
"profit_factor": 33.5529
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-11",
|
||
"count": 1277,
|
||
"ev_pct": 5.0646,
|
||
"win_rate": 0.9507,
|
||
"profit_factor": 51.1384
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2025-12",
|
||
"count": 1269,
|
||
"ev_pct": 3.9295,
|
||
"win_rate": 0.963,
|
||
"profit_factor": 34.6971
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2026-01",
|
||
"count": 1398,
|
||
"ev_pct": 4.7231,
|
||
"win_rate": 0.9599,
|
||
"profit_factor": 64.7014
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2026-02",
|
||
"count": 1163,
|
||
"ev_pct": 5.8176,
|
||
"win_rate": 0.9948,
|
||
"profit_factor": 727.6797
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2026-03",
|
||
"count": 1303,
|
||
"ev_pct": 3.5755,
|
||
"win_rate": 0.8979,
|
||
"profit_factor": 6.9266
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2026-04",
|
||
"count": 1319,
|
||
"ev_pct": 2.857,
|
||
"win_rate": 0.8855,
|
||
"profit_factor": 11.4726
|
||
},
|
||
{
|
||
"rule_id": "sell_compound_top3",
|
||
"side": "sell",
|
||
"month": "2026-05",
|
||
"count": 1657,
|
||
"ev_pct": 5.4517,
|
||
"win_rate": 0.9572,
|
||
"profit_factor": 68.7177
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-06",
|
||
"count": 1055,
|
||
"ev_pct": 5.3027,
|
||
"win_rate": 0.9716,
|
||
"profit_factor": 69.0846
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 1516,
|
||
"ev_pct": 5.2797,
|
||
"win_rate": 0.9459,
|
||
"profit_factor": 33.0648
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-08",
|
||
"count": 1412,
|
||
"ev_pct": 5.1394,
|
||
"win_rate": 0.9441,
|
||
"profit_factor": 67.903
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 1232,
|
||
"ev_pct": 4.8002,
|
||
"win_rate": 0.9091,
|
||
"profit_factor": 23.4189
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-10",
|
||
"count": 1323,
|
||
"ev_pct": 3.7359,
|
||
"win_rate": 0.9327,
|
||
"profit_factor": 40.3843
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-11",
|
||
"count": 1287,
|
||
"ev_pct": 4.9171,
|
||
"win_rate": 0.9301,
|
||
"profit_factor": 31.5454
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2025-12",
|
||
"count": 1318,
|
||
"ev_pct": 3.5399,
|
||
"win_rate": 0.9317,
|
||
"profit_factor": 18.8513
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2026-01",
|
||
"count": 1469,
|
||
"ev_pct": 4.2984,
|
||
"win_rate": 0.9469,
|
||
"profit_factor": 42.8817
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2026-02",
|
||
"count": 1223,
|
||
"ev_pct": 5.6511,
|
||
"win_rate": 0.9853,
|
||
"profit_factor": 229.8736
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2026-03",
|
||
"count": 1292,
|
||
"ev_pct": 3.5037,
|
||
"win_rate": 0.8916,
|
||
"profit_factor": 7.1733
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2026-04",
|
||
"count": 1350,
|
||
"ev_pct": 2.7395,
|
||
"win_rate": 0.883,
|
||
"profit_factor": 9.8467
|
||
},
|
||
{
|
||
"rule_id": "sell_contrast_m10_bb_pos",
|
||
"side": "sell",
|
||
"month": "2026-05",
|
||
"count": 1627,
|
||
"ev_pct": 5.49,
|
||
"win_rate": 0.9521,
|
||
"profit_factor": 65.1094
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-06",
|
||
"count": 136,
|
||
"ev_pct": 6.9499,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 945.1828
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-07",
|
||
"count": 438,
|
||
"ev_pct": 7.6836,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 3365.4343
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-08",
|
||
"count": 231,
|
||
"ev_pct": 7.696,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1777.7845
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-09",
|
||
"count": 241,
|
||
"ev_pct": 8.0974,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1951.4689
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-10",
|
||
"count": 122,
|
||
"ev_pct": 4.2755,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 521.6132
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-11",
|
||
"count": 204,
|
||
"ev_pct": 6.5692,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1340.1171
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2025-12",
|
||
"count": 181,
|
||
"ev_pct": 6.2362,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1128.7579
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2026-01",
|
||
"count": 244,
|
||
"ev_pct": 8.4765,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 2068.2637
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2026-02",
|
||
"count": 199,
|
||
"ev_pct": 8.3106,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1653.8078
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2026-03",
|
||
"count": 233,
|
||
"ev_pct": 6.8041,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1585.3489
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2026-04",
|
||
"count": 237,
|
||
"ev_pct": 5.097,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 1207.9774
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"month": "2026-05",
|
||
"count": 472,
|
||
"ev_pct": 7.7879,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 3675.8689
|
||
}
|
||
],
|
||
"walk_forward_summary": {
|
||
"buy_compound_tight": {
|
||
"months": 12,
|
||
"positive_months": 9,
|
||
"positive_ratio": 0.75,
|
||
"mean_ev_pct": 5.7974
|
||
},
|
||
"buy_compound_top3": {
|
||
"months": 12,
|
||
"positive_months": 9,
|
||
"positive_ratio": 0.75,
|
||
"mean_ev_pct": 5.5076
|
||
},
|
||
"buy_contrast_m10_bb_pos": {
|
||
"months": 12,
|
||
"positive_months": 9,
|
||
"positive_ratio": 0.75,
|
||
"mean_ev_pct": 5.4605
|
||
},
|
||
"buy_mtf_cross_all_tf": {
|
||
"months": 12,
|
||
"positive_months": 11,
|
||
"positive_ratio": 0.9167,
|
||
"mean_ev_pct": 6.007
|
||
},
|
||
"gt_model_buy_trough_local": {
|
||
"months": 12,
|
||
"positive_months": 10,
|
||
"positive_ratio": 0.8333,
|
||
"mean_ev_pct": 6.2957
|
||
},
|
||
"gt_model_buy_zigzag_bb": {
|
||
"months": 8,
|
||
"positive_months": 8,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 10.2649
|
||
},
|
||
"gt_model_sell_peak_local": {
|
||
"months": 12,
|
||
"positive_months": 12,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 2.6379
|
||
},
|
||
"gt_model_sell_zigzag_peak": {
|
||
"months": 2,
|
||
"positive_months": 2,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 11.6154
|
||
},
|
||
"sell_compound_tight": {
|
||
"months": 12,
|
||
"positive_months": 12,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 4.7678
|
||
},
|
||
"sell_compound_top3": {
|
||
"months": 12,
|
||
"positive_months": 12,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 4.6836
|
||
},
|
||
"sell_contrast_m10_bb_pos": {
|
||
"months": 12,
|
||
"positive_months": 12,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 4.5331
|
||
},
|
||
"sell_mtf_cross_all_tf": {
|
||
"months": 12,
|
||
"positive_months": 12,
|
||
"positive_ratio": 1.0,
|
||
"mean_ev_pct": 6.9987
|
||
}
|
||
},
|
||
"fee_stress_mult": 2.0,
|
||
"fee_stress_by_rule": {
|
||
"buy_compound_top3": {
|
||
"count": 17631,
|
||
"ev_pct": 5.2063,
|
||
"win_rate": 0.7138,
|
||
"profit_factor": 3.4418
|
||
},
|
||
"buy_compound_tight": {
|
||
"count": 2287,
|
||
"ev_pct": 4.9966,
|
||
"win_rate": 0.6874,
|
||
"profit_factor": 3.0632
|
||
},
|
||
"buy_contrast_m10_bb_pos": {
|
||
"count": 17993,
|
||
"ev_pct": 5.2294,
|
||
"win_rate": 0.7098,
|
||
"profit_factor": 3.4977
|
||
},
|
||
"buy_mtf_cross_all_tf": {
|
||
"count": 3533,
|
||
"ev_pct": 5.3986,
|
||
"win_rate": 0.7085,
|
||
"profit_factor": 3.899
|
||
},
|
||
"sell_compound_top3": {
|
||
"count": 15799,
|
||
"ev_pct": 4.5906,
|
||
"win_rate": 0.9455,
|
||
"profit_factor": 29.2716
|
||
},
|
||
"sell_compound_tight": {
|
||
"count": 2547,
|
||
"ev_pct": 4.7878,
|
||
"win_rate": 0.9458,
|
||
"profit_factor": 38.8127
|
||
},
|
||
"sell_contrast_m10_bb_pos": {
|
||
"count": 16104,
|
||
"ev_pct": 4.4385,
|
||
"win_rate": 0.9343,
|
||
"profit_factor": 25.8628
|
||
},
|
||
"sell_mtf_cross_all_tf": {
|
||
"count": 2938,
|
||
"ev_pct": 7.1232,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 20927.8254
|
||
},
|
||
"gt_model_buy_zigzag_bb": {
|
||
"count": 25,
|
||
"ev_pct": 8.5824,
|
||
"win_rate": 0.84,
|
||
"profit_factor": 41.1466
|
||
},
|
||
"gt_model_buy_trough_local": {
|
||
"count": 1505,
|
||
"ev_pct": 5.9624,
|
||
"win_rate": 0.7302,
|
||
"profit_factor": 4.588
|
||
},
|
||
"gt_model_sell_zigzag_peak": {
|
||
"count": 8,
|
||
"ev_pct": 11.7981,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 94.3851
|
||
},
|
||
"gt_model_sell_peak_local": {
|
||
"count": 6554,
|
||
"ev_pct": 2.3084,
|
||
"win_rate": 0.8184,
|
||
"profit_factor": 4.8039
|
||
}
|
||
},
|
||
"live_order_cap_sim": {
|
||
"assumptions": {
|
||
"slippage_pct": 0.05,
|
||
"sizing": "gt_model_compound_no_daily_cap"
|
||
},
|
||
"taken_count": 845,
|
||
"total_count": 845,
|
||
"rules": {
|
||
"buy_compound_tight": {
|
||
"taken_count": 221,
|
||
"total_count": 221,
|
||
"metrics": {
|
||
"count": 221,
|
||
"ev_pct": 5.6133,
|
||
"win_rate": 0.6471,
|
||
"profit_factor": 3.1259
|
||
}
|
||
},
|
||
"sell_mtf_cross_all_tf": {
|
||
"taken_count": 624,
|
||
"total_count": 624,
|
||
"metrics": {
|
||
"count": 624,
|
||
"ev_pct": 7.0822,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 4419.2872
|
||
}
|
||
}
|
||
},
|
||
"portfolio_adj_ev_pct": 6.698
|
||
},
|
||
"go_no_go": {
|
||
"go": true,
|
||
"checks": [
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"pass": true,
|
||
"holdout_ev": 5.6633,
|
||
"holdout_pf": 3.1592,
|
||
"wf_positive_ratio": 0.75,
|
||
"fee_stress_ev": 4.9966
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"pass": true,
|
||
"holdout_ev": 7.1322,
|
||
"holdout_pf": 4450.4872,
|
||
"wf_positive_ratio": 1.0,
|
||
"fee_stress_ev": 7.1232
|
||
}
|
||
],
|
||
"live_cap_taken_ratio": 1.0
|
||
},
|
||
"portfolio_compare": {
|
||
"ground_truth_chrono": {
|
||
"initial_cash_krw": 1000000,
|
||
"final_asset_krw": 43913514.0,
|
||
"pnl_krw": 42913514.0,
|
||
"pnl_pct": 4291.35,
|
||
"total_fees_krw": 240578.0,
|
||
"cash_krw": 43913514.0,
|
||
"holding_qty": 0.0,
|
||
"holding_value_krw": 0.0,
|
||
"mark_price": 487.0,
|
||
"fee_rate": 0.0005,
|
||
"trade_count": 456,
|
||
"max_drawdown_pct": 6.17,
|
||
"peak_asset_krw": 1234838.0,
|
||
"trough_asset_krw": 1158619.0
|
||
},
|
||
"sim_sized": {
|
||
"initial_cash_krw": 1000000,
|
||
"final_asset_krw": 1746868.0,
|
||
"pnl_krw": 746868.0,
|
||
"pnl_pct": 74.69,
|
||
"total_fees_krw": 29780.0,
|
||
"cash_krw": 1509979.0,
|
||
"holding_qty": 486.425998,
|
||
"holding_value_krw": 236889.0,
|
||
"mark_price": 487.0,
|
||
"fee_rate": 0.0005,
|
||
"trade_count": 5225,
|
||
"max_drawdown_pct": 9.53,
|
||
"peak_asset_krw": 1023021.0,
|
||
"trough_asset_krw": 925549.0,
|
||
"sizing_mode": "gt_model_compound_causal",
|
||
"sizing_note": "전기간 복리·GT tier·총자산×비중, 보유현금 한도; 인과적 신호·tier(미래 미사용)"
|
||
},
|
||
"sim_fixed_order": {
|
||
"initial_cash_krw": 1000000,
|
||
"final_asset_krw": 58389.0,
|
||
"pnl_krw": -941611.0,
|
||
"pnl_pct": -94.16,
|
||
"total_fees_krw": 43869.0,
|
||
"cash_krw": -0.0,
|
||
"holding_qty": 119.896264,
|
||
"holding_value_krw": 58389.0,
|
||
"mark_price": 487.0,
|
||
"fee_rate": 0.0005,
|
||
"order_krw": 100000.0,
|
||
"sizing_mode": "fixed",
|
||
"trade_count": 5225
|
||
},
|
||
"sim_gt_model": {
|
||
"initial_cash_krw": 1000000,
|
||
"final_asset_krw": 1081984.0,
|
||
"pnl_krw": 81984.0,
|
||
"pnl_pct": 8.2,
|
||
"total_fees_krw": 240.0,
|
||
"cash_krw": 881042.0,
|
||
"holding_qty": 412.612808,
|
||
"holding_value_krw": 200942.0,
|
||
"mark_price": 487.0,
|
||
"fee_rate": 0.0005,
|
||
"trade_count": 33,
|
||
"max_drawdown_pct": 4.38,
|
||
"peak_asset_krw": 1072413.0,
|
||
"trough_asset_krw": 1025457.0,
|
||
"sizing_mode": "gt_model_compound_causal",
|
||
"sizing_note": "전기간 복리·GT tier·총자산×비중, 보유현금 한도; 인과적 신호·tier(미래 미사용)"
|
||
},
|
||
"sim_sized_holdout": {
|
||
"initial_asset_krw": 1605322.0,
|
||
"final_asset_krw": 1751246.0,
|
||
"pnl_krw": 145924.0,
|
||
"pnl_pct": 9.09,
|
||
"note": "전기간 복리 후 holdout 구간 자산 증감 (1M 재시작 아님)",
|
||
"trade_count": 845
|
||
},
|
||
"gt_capture_ratio": 0.0174,
|
||
"gt_pnl_pct": 4291.35,
|
||
"sim_sized_pnl_pct": 74.69,
|
||
"gt_model_capture_ratio": 0.0019,
|
||
"gt_allocation_analysis": {
|
||
"large_leg_ids": [
|
||
3,
|
||
5,
|
||
14,
|
||
18,
|
||
19,
|
||
20,
|
||
21,
|
||
22,
|
||
33,
|
||
40,
|
||
46,
|
||
49,
|
||
52,
|
||
53,
|
||
72,
|
||
74
|
||
],
|
||
"large_leg_count": 16,
|
||
"config_pct_large": 1.0,
|
||
"config_pct_small": 0.05,
|
||
"observed_implied_scale": {
|
||
"all": {
|
||
"count": 18,
|
||
"mean": 0.1106,
|
||
"median": 0.0527,
|
||
"p25": 0.051,
|
||
"p75": 0.054
|
||
},
|
||
"large_leg": {
|
||
"count": 1,
|
||
"mean": 1.0812,
|
||
"median": 1.0812,
|
||
"p25": 1.0812,
|
||
"p75": 1.0812
|
||
},
|
||
"small_leg": {
|
||
"count": 17,
|
||
"mean": 0.0535,
|
||
"median": 0.051,
|
||
"p25": 0.051,
|
||
"p75": 0.0539
|
||
}
|
||
},
|
||
"recommended_pct_large_leg": 1.0812,
|
||
"recommended_pct_small_leg": 0.051,
|
||
"note": "implied_scale = amount / (pre_buy_total_asset × weight_share); 시뮬 tier는 GT 분석 median 사용"
|
||
},
|
||
"causal_mode": {
|
||
"gt_signal_causal": true,
|
||
"sim_causal_tier": true,
|
||
"note": "인과적: t 시점까지 데이터만 사용 (운영 정합)"
|
||
}
|
||
},
|
||
"gt_model": {
|
||
"selection_mode": "split_buy_peak_sell",
|
||
"leg_definition": "이전 고점 매도 ~ 다음 고점 매도 구간 = leg_id; 기간말 잔여 구간은 마지막 leg",
|
||
"entry": {
|
||
"pivot": "trough",
|
||
"price": "Low",
|
||
"weight_rule": "inverse_price_normalized",
|
||
"weight_formula": "w_i = (1/price_i) / sum(1/price_j)",
|
||
"max_buys_per_leg": 12,
|
||
"min_bars_between_buys": 24,
|
||
"bb_filter": "bb_pos <= 0.45"
|
||
},
|
||
"exit": {
|
||
"pivot": "peak",
|
||
"price": "High",
|
||
"weight_rule": "fixed_split_or_full",
|
||
"weights_split": [
|
||
0.65,
|
||
0.35
|
||
],
|
||
"split_gap_pct": 2.5,
|
||
"max_sells_per_leg": 2
|
||
},
|
||
"capital": {
|
||
"buy": "target = total_asset * (weight/remaining_weights) * tier_scale; amount = min(target, available_cash/(1+fee))",
|
||
"optimal_buy_rate": "weight / sum(remaining_buy_weights_in_leg)",
|
||
"large_leg_top_pct": 0.2,
|
||
"pct_large_leg": 1.0,
|
||
"pct_small_leg": 0.05,
|
||
"min_order_krw": 5000.0,
|
||
"sell": "sell_base_qty * sell_weight * price (last sell = full leg_qty)"
|
||
},
|
||
"execution": {
|
||
"chrono": "amount_krw 배분·summary.pnl_pct = 시각순 체결(매도 후 현금 → 다음 매수 반영)",
|
||
"leg_block_json": "JSON 저장 순서 = leg별 매수 전량 → 매도 전량 (차트·테이블 leg 정합)"
|
||
}
|
||
},
|
||
"gt_weight_policy": {
|
||
"entry_weight_rule": "inverse_price_normalized",
|
||
"exit_split_weights": [
|
||
0.65,
|
||
0.35
|
||
],
|
||
"capital_large_pct": 1.0,
|
||
"capital_small_pct": 0.05,
|
||
"large_leg_top_pct": 0.2
|
||
},
|
||
"gt_leg_weight_validation": {
|
||
"legs": {
|
||
"0": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"1": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 12,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"2": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"3": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"4": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"5": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"6": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"7": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"8": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"9": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"10": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"11": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"12": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"13": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"14": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"15": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"16": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"17": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"18": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"19": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"20": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"21": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"22": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"23": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"24": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"25": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"26": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"27": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 1,
|
||
"valid": true
|
||
},
|
||
"28": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"29": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"30": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"31": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"32": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"33": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"34": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"35": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"36": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"37": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"38": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"39": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"40": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"41": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 12,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"42": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 11,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"43": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"44": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"45": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"46": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"47": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"48": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 8,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"49": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 10,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"50": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"51": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"52": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"53": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"54": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"55": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"56": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"57": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"58": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"59": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 9,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"60": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 5,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"61": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"62": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"63": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"64": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 7,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"65": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 2,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"66": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"67": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"68": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"69": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 1,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"70": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"71": {
|
||
"buy_sum": 0.999,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"72": {
|
||
"buy_sum": 1.001,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"73": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 6,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"74": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 4,
|
||
"n_sell": 2,
|
||
"valid": true
|
||
},
|
||
"75": {
|
||
"buy_sum": 1.0,
|
||
"sell_sum": 1.0,
|
||
"n_buy": 3,
|
||
"n_sell": 1,
|
||
"valid": true
|
||
}
|
||
},
|
||
"invalid_leg_ids": [],
|
||
"all_valid": true
|
||
},
|
||
"monitor_rules": [
|
||
{
|
||
"rule_id": "buy_compound_tight",
|
||
"side": "buy",
|
||
"kind": "compound_tight",
|
||
"conditions": [
|
||
{
|
||
"col": "m10_bb_pos",
|
||
"op": "between",
|
||
"lo": 0.020269805294580265,
|
||
"hi": 0.1573047482613718
|
||
},
|
||
{
|
||
"col": "m10_ga_cci_20",
|
||
"op": "between",
|
||
"lo": -176.0610418573743,
|
||
"hi": -134.25322440673844
|
||
},
|
||
{
|
||
"col": "m5_bb_pos",
|
||
"op": "between",
|
||
"lo": 0.04935035261803711,
|
||
"hi": 0.1678449416858898
|
||
}
|
||
],
|
||
"valid_fire_rate": 0.0143,
|
||
"metrics": {
|
||
"all": {
|
||
"count": 2287,
|
||
"ev_pct": 5.0966,
|
||
"win_rate": 0.6891,
|
||
"profit_factor": 3.1319
|
||
},
|
||
"train": {
|
||
"count": 1446,
|
||
"ev_pct": 4.3319,
|
||
"win_rate": 0.6812,
|
||
"profit_factor": 3.0046
|
||
},
|
||
"valid": {
|
||
"count": 620,
|
||
"ev_pct": 6.6782,
|
||
"win_rate": 0.7226,
|
||
"profit_factor": 3.3483
|
||
},
|
||
"holdout": {
|
||
"count": 221,
|
||
"ev_pct": 5.6633,
|
||
"win_rate": 0.6471,
|
||
"profit_factor": 3.1592
|
||
}
|
||
},
|
||
"pass_valid": true,
|
||
"pass_holdout": true
|
||
},
|
||
{
|
||
"rule_id": "sell_mtf_cross_all_tf",
|
||
"side": "sell",
|
||
"kind": "mtf_cross",
|
||
"conditions": [
|
||
{
|
||
"col": "m3_ga_cci_20",
|
||
"op": "between",
|
||
"lo": 71.08020816708225,
|
||
"hi": 152.0239279574577
|
||
},
|
||
{
|
||
"col": "m5_bb_pos",
|
||
"op": "between",
|
||
"lo": 0.7812942210429725,
|
||
"hi": 0.979827466617936
|
||
},
|
||
{
|
||
"col": "m10_bb_pos",
|
||
"op": "between",
|
||
"lo": 0.8052954063070535,
|
||
"hi": 1.0
|
||
},
|
||
{
|
||
"col": "m15_bb_pos",
|
||
"op": "between",
|
||
"lo": 0.8266597207479214,
|
||
"hi": 1.0
|
||
},
|
||
{
|
||
"col": "m30_ga_ha_bull",
|
||
"op": "eq_int",
|
||
"value": 1
|
||
},
|
||
{
|
||
"col": "m60_ga_ha_bull",
|
||
"op": "eq_int",
|
||
"value": 1
|
||
},
|
||
{
|
||
"col": "m240_ga_ha_bull",
|
||
"op": "eq_int",
|
||
"value": 1
|
||
},
|
||
{
|
||
"col": "d1_ga_ha_bull",
|
||
"op": "eq_int",
|
||
"value": 1
|
||
}
|
||
],
|
||
"valid_fire_rate": 0.013,
|
||
"metrics": {
|
||
"all": {
|
||
"count": 2938,
|
||
"ev_pct": 7.2232,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 21221.6254
|
||
},
|
||
"train": {
|
||
"count": 1749,
|
||
"ev_pct": 7.1667,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 12534.5465
|
||
},
|
||
"valid": {
|
||
"count": 565,
|
||
"ev_pct": 7.4984,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 4236.5917
|
||
},
|
||
"holdout": {
|
||
"count": 624,
|
||
"ev_pct": 7.1322,
|
||
"win_rate": 1.0,
|
||
"profit_factor": 4450.4872
|
||
}
|
||
},
|
||
"pass_valid": true,
|
||
"pass_holdout": true
|
||
}
|
||
],
|
||
"gt_portfolio_calibration": {
|
||
"portfolio": {
|
||
"gt_final_asset_krw": 43913513.0,
|
||
"subset_final_asset_krw": 1000000.0,
|
||
"asset_ratio": 0.0228,
|
||
"asset_accuracy_pct": 2.28,
|
||
"target_met_90": false,
|
||
"legs_total": 76,
|
||
"legs_covered": 0,
|
||
"leg_coverage_ratio": 0.0,
|
||
"full_pnl_pct": 4291.35,
|
||
"subset_pnl_pct": 0.0
|
||
},
|
||
"note": "캘리브레이션 미실행 — scripts/04_calibrate_gt_assets.py"
|
||
},
|
||
"criteria": {
|
||
"min_holdout_ev": 0.0,
|
||
"min_holdout_pf": 1.0,
|
||
"wf_positive_ratio": 0.5,
|
||
"wf_min_months": 3
|
||
}
|
||
} |