Files
Bithumb/docs/04_matching/matched_rules.json
xavis d7848df6f7 refactor: GT·시뮬·운영 3축 정리 및 hybrid 실거래 정합
Phase C/dry-run·미사용 모듈·재생성 HTML을 제거하고, 운영 체결을
sim_causal_hybrid와 동일한 hybrid 로직으로 통합한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 23:50:28 +09:00

2518 lines
57 KiB
JSON

{
"method": "gt_profile_plus_full_bar_ev_filter",
"label_mode": "leg_gt",
"train_ratio": 0.7,
"holdout_ratio": 0.15,
"criteria": {
"min_fires_valid": 10,
"min_fires_holdout": 5,
"min_ev_valid_pct": 0.0,
"min_profit_factor_valid": 1.0,
"max_valid_fire_rate": 0.35
},
"selected": [
{
"rule_id": "gt_model_buy_zigzag_bb",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_buy_signal",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0002,
"metrics": {
"all": {
"count": 25,
"ev_pct": 8.6824,
"win_rate": 0.84,
"profit_factor": 44.9
},
"train": {
"count": 14,
"ev_pct": 6.908,
"win_rate": 0.8571,
"profit_factor": 109.1666
},
"valid": {
"count": 10,
"ev_pct": 11.1305,
"win_rate": 0.8,
"profit_factor": 28.4806
},
"holdout": {
"count": 1,
"ev_pct": 9.0429,
"win_rate": 1.0,
"profit_factor": 9.0429
}
},
"pass_valid": true,
"pass_holdout": false
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.02225009472391165,
"hi": 0.24829322108487767
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2400835423107455
},
{
"col": "m30_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m240_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "d1_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0228,
"metrics": {
"all": {
"count": 4248,
"ev_pct": 5.486,
"win_rate": 0.7363,
"profit_factor": 4.3732
},
"train": {
"count": 2758,
"ev_pct": 4.9175,
"win_rate": 0.7208,
"profit_factor": 3.8415
},
"valid": {
"count": 1012,
"ev_pct": 7.9951,
"win_rate": 0.8261,
"profit_factor": 8.5158
},
"holdout": {
"count": 478,
"ev_pct": 3.4543,
"win_rate": 0.636,
"profit_factor": 2.5588
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_buy_trough_local",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_trough_local",
"op": "eq_int",
"value": 1
},
{
"col": "bb_pos",
"op": "lte",
"value": 0.45
}
],
"valid_fire_rate": 0.0114,
"metrics": {
"all": {
"count": 1506,
"ev_pct": 6.2247,
"win_rate": 0.739,
"profit_factor": 4.859
},
"train": {
"count": 669,
"ev_pct": 6.3469,
"win_rate": 0.7668,
"profit_factor": 5.3425
},
"valid": {
"count": 507,
"ev_pct": 7.4598,
"win_rate": 0.7535,
"profit_factor": 4.552
},
"holdout": {
"count": 330,
"ev_pct": 4.0791,
"win_rate": 0.6606,
"profit_factor": 4.4814
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.53481289151543,
"hi": -118.19602423726946
}
],
"valid_fire_rate": 0.0647,
"metrics": {
"all": {
"count": 11568,
"ev_pct": 5.389,
"win_rate": 0.7159,
"profit_factor": 3.53
},
"train": {
"count": 7328,
"ev_pct": 4.8912,
"win_rate": 0.7201,
"profit_factor": 3.5447
},
"valid": {
"count": 2871,
"ev_pct": 6.8916,
"win_rate": 0.7402,
"profit_factor": 3.6933
},
"holdout": {
"count": 1369,
"ev_pct": 4.9023,
"win_rate": 0.6421,
"profit_factor": 3.0916
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_tight",
"side": "buy",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.04926406505452075,
"hi": 0.17056205475779587
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -176.08366788851922,
"hi": -133.4800557108608
}
],
"valid_fire_rate": 0.0149,
"metrics": {
"all": {
"count": 2461,
"ev_pct": 5.4605,
"win_rate": 0.7017,
"profit_factor": 3.3918
},
"train": {
"count": 1552,
"ev_pct": 4.5999,
"win_rate": 0.6907,
"profit_factor": 3.1874
},
"valid": {
"count": 661,
"ev_pct": 6.8095,
"win_rate": 0.7262,
"profit_factor": 3.4851
},
"holdout": {
"count": 248,
"ev_pct": 7.2513,
"win_rate": 0.7056,
"profit_factor": 4.3089
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_mtf_cross_all_tf",
"side": "sell",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.6750785337434262,
"hi": 0.9593012516978001
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8206164588850927,
"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
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0151,
"metrics": {
"all": {
"count": 3480,
"ev_pct": 7.5844,
"win_rate": 1.0,
"profit_factor": 26393.624
},
"train": {
"count": 2056,
"ev_pct": 7.5064,
"win_rate": 1.0,
"profit_factor": 15433.2445
},
"valid": {
"count": 670,
"ev_pct": 7.2347,
"win_rate": 1.0,
"profit_factor": 4847.2609
},
"holdout": {
"count": 754,
"ev_pct": 8.1076,
"win_rate": 1.0,
"profit_factor": 6113.1186
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8252236664366895,
"hi": 0.9364576511584775
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 119.31363996378025,
"hi": 158.95227481534286
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2563,
"ev_pct": 4.9479,
"win_rate": 0.9462,
"profit_factor": 41.0043
},
"train": {
"count": 1450,
"ev_pct": 4.75,
"win_rate": 0.9524,
"profit_factor": 43.2686
},
"valid": {
"count": 624,
"ev_pct": 4.7054,
"win_rate": 0.9487,
"profit_factor": 31.7944
},
"holdout": {
"count": 489,
"ev_pct": 5.844,
"win_rate": 0.9243,
"profit_factor": 49.6781
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.04253803255844,
"hi": 180.08898611506828
}
],
"valid_fire_rate": 0.053,
"metrics": {
"all": {
"count": 9903,
"ev_pct": 4.81,
"win_rate": 0.9456,
"profit_factor": 32.2148
},
"train": {
"count": 5923,
"ev_pct": 4.8106,
"win_rate": 0.9534,
"profit_factor": 41.5226
},
"valid": {
"count": 2350,
"ev_pct": 4.4023,
"win_rate": 0.9413,
"profit_factor": 19.4534
},
"holdout": {
"count": 1630,
"ev_pct": 5.3955,
"win_rate": 0.9233,
"profit_factor": 34.54
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_contrast_m10_bb_pos",
"side": "sell",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14589043491619427
}
],
"valid_fire_rate": 0.091,
"metrics": {
"all": {
"count": 16536,
"ev_pct": 4.6125,
"win_rate": 0.9368,
"profit_factor": 27.9852
},
"train": {
"count": 9918,
"ev_pct": 4.7163,
"win_rate": 0.9389,
"profit_factor": 34.1885
},
"valid": {
"count": 4035,
"ev_pct": 4.1748,
"win_rate": 0.94,
"profit_factor": 19.066
},
"holdout": {
"count": 2583,
"ev_pct": 4.8977,
"win_rate": 0.9237,
"profit_factor": 27.1049
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_sell_peak_local",
"side": "sell",
"kind": "gt_model",
"conditions": [
{
"col": "gt_peak_local",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0478,
"metrics": {
"all": {
"count": 6593,
"ev_pct": 2.4183,
"win_rate": 0.8288,
"profit_factor": 5.121
},
"train": {
"count": 3057,
"ev_pct": 2.9951,
"win_rate": 0.8394,
"profit_factor": 8.0097
},
"valid": {
"count": 2120,
"ev_pct": 2.1911,
"win_rate": 0.8396,
"profit_factor": 4.6181
},
"holdout": {
"count": 1416,
"ev_pct": 1.5133,
"win_rate": 0.7895,
"profit_factor": 2.6755
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"selected_best_effort": [],
"holdout_passed": [
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.53481289151543,
"hi": -118.19602423726946
}
],
"valid_fire_rate": 0.0647,
"metrics": {
"all": {
"count": 11568,
"ev_pct": 5.389,
"win_rate": 0.7159,
"profit_factor": 3.53
},
"train": {
"count": 7328,
"ev_pct": 4.8912,
"win_rate": 0.7201,
"profit_factor": 3.5447
},
"valid": {
"count": 2871,
"ev_pct": 6.8916,
"win_rate": 0.7402,
"profit_factor": 3.6933
},
"holdout": {
"count": 1369,
"ev_pct": 4.9023,
"win_rate": 0.6421,
"profit_factor": 3.0916
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_tight",
"side": "buy",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.04926406505452075,
"hi": 0.17056205475779587
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -176.08366788851922,
"hi": -133.4800557108608
}
],
"valid_fire_rate": 0.0149,
"metrics": {
"all": {
"count": 2461,
"ev_pct": 5.4605,
"win_rate": 0.7017,
"profit_factor": 3.3918
},
"train": {
"count": 1552,
"ev_pct": 4.5999,
"win_rate": 0.6907,
"profit_factor": 3.1874
},
"valid": {
"count": 661,
"ev_pct": 6.8095,
"win_rate": 0.7262,
"profit_factor": 3.4851
},
"holdout": {
"count": 248,
"ev_pct": 7.2513,
"win_rate": 0.7056,
"profit_factor": 4.3089
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_contrast_m10_bb_pos",
"side": "buy",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8588208478908868
}
],
"valid_fire_rate": 0.1136,
"metrics": {
"all": {
"count": 19150,
"ev_pct": 5.4936,
"win_rate": 0.7173,
"profit_factor": 3.7049
},
"train": {
"count": 11702,
"ev_pct": 5.0822,
"win_rate": 0.7174,
"profit_factor": 3.7529
},
"valid": {
"count": 5040,
"ev_pct": 6.6694,
"win_rate": 0.7427,
"profit_factor": 3.6894
},
"holdout": {
"count": 2408,
"ev_pct": 5.0317,
"win_rate": 0.664,
"profit_factor": 3.5291
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.02225009472391165,
"hi": 0.24829322108487767
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2400835423107455
},
{
"col": "m30_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m240_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "d1_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0228,
"metrics": {
"all": {
"count": 4248,
"ev_pct": 5.486,
"win_rate": 0.7363,
"profit_factor": 4.3732
},
"train": {
"count": 2758,
"ev_pct": 4.9175,
"win_rate": 0.7208,
"profit_factor": 3.8415
},
"valid": {
"count": 1012,
"ev_pct": 7.9951,
"win_rate": 0.8261,
"profit_factor": 8.5158
},
"holdout": {
"count": 478,
"ev_pct": 3.4543,
"win_rate": 0.636,
"profit_factor": 2.5588
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.04253803255844,
"hi": 180.08898611506828
}
],
"valid_fire_rate": 0.053,
"metrics": {
"all": {
"count": 9903,
"ev_pct": 4.81,
"win_rate": 0.9456,
"profit_factor": 32.2148
},
"train": {
"count": 5923,
"ev_pct": 4.8106,
"win_rate": 0.9534,
"profit_factor": 41.5226
},
"valid": {
"count": 2350,
"ev_pct": 4.4023,
"win_rate": 0.9413,
"profit_factor": 19.4534
},
"holdout": {
"count": 1630,
"ev_pct": 5.3955,
"win_rate": 0.9233,
"profit_factor": 34.54
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8252236664366895,
"hi": 0.9364576511584775
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 119.31363996378025,
"hi": 158.95227481534286
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2563,
"ev_pct": 4.9479,
"win_rate": 0.9462,
"profit_factor": 41.0043
},
"train": {
"count": 1450,
"ev_pct": 4.75,
"win_rate": 0.9524,
"profit_factor": 43.2686
},
"valid": {
"count": 624,
"ev_pct": 4.7054,
"win_rate": 0.9487,
"profit_factor": 31.7944
},
"holdout": {
"count": 489,
"ev_pct": 5.844,
"win_rate": 0.9243,
"profit_factor": 49.6781
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_contrast_m10_bb_pos",
"side": "sell",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14589043491619427
}
],
"valid_fire_rate": 0.091,
"metrics": {
"all": {
"count": 16536,
"ev_pct": 4.6125,
"win_rate": 0.9368,
"profit_factor": 27.9852
},
"train": {
"count": 9918,
"ev_pct": 4.7163,
"win_rate": 0.9389,
"profit_factor": 34.1885
},
"valid": {
"count": 4035,
"ev_pct": 4.1748,
"win_rate": 0.94,
"profit_factor": 19.066
},
"holdout": {
"count": 2583,
"ev_pct": 4.8977,
"win_rate": 0.9237,
"profit_factor": 27.1049
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_mtf_cross_all_tf",
"side": "sell",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.6750785337434262,
"hi": 0.9593012516978001
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8206164588850927,
"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
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0151,
"metrics": {
"all": {
"count": 3480,
"ev_pct": 7.5844,
"win_rate": 1.0,
"profit_factor": 26393.624
},
"train": {
"count": 2056,
"ev_pct": 7.5064,
"win_rate": 1.0,
"profit_factor": 15433.2445
},
"valid": {
"count": 670,
"ev_pct": 7.2347,
"win_rate": 1.0,
"profit_factor": 4847.2609
},
"holdout": {
"count": 754,
"ev_pct": 8.1076,
"win_rate": 1.0,
"profit_factor": 6113.1186
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_buy_trough_local",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_trough_local",
"op": "eq_int",
"value": 1
},
{
"col": "bb_pos",
"op": "lte",
"value": 0.45
}
],
"valid_fire_rate": 0.0114,
"metrics": {
"all": {
"count": 1506,
"ev_pct": 6.2247,
"win_rate": 0.739,
"profit_factor": 4.859
},
"train": {
"count": 669,
"ev_pct": 6.3469,
"win_rate": 0.7668,
"profit_factor": 5.3425
},
"valid": {
"count": 507,
"ev_pct": 7.4598,
"win_rate": 0.7535,
"profit_factor": 4.552
},
"holdout": {
"count": 330,
"ev_pct": 4.0791,
"win_rate": 0.6606,
"profit_factor": 4.4814
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_sell_peak_local",
"side": "sell",
"kind": "gt_model",
"conditions": [
{
"col": "gt_peak_local",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0478,
"metrics": {
"all": {
"count": 6593,
"ev_pct": 2.4183,
"win_rate": 0.8288,
"profit_factor": 5.121
},
"train": {
"count": 3057,
"ev_pct": 2.9951,
"win_rate": 0.8394,
"profit_factor": 8.0097
},
"valid": {
"count": 2120,
"ev_pct": 2.1911,
"win_rate": 0.8396,
"profit_factor": 4.6181
},
"holdout": {
"count": 1416,
"ev_pct": 1.5133,
"win_rate": 0.7895,
"profit_factor": 2.6755
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"monitor_rules": [
{
"rule_id": "buy_compound_tight",
"side": "buy",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.04926406505452075,
"hi": 0.17056205475779587
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -176.08366788851922,
"hi": -133.4800557108608
}
],
"valid_fire_rate": 0.0149,
"metrics": {
"all": {
"count": 2461,
"ev_pct": 5.4605,
"win_rate": 0.7017,
"profit_factor": 3.3918
},
"train": {
"count": 1552,
"ev_pct": 4.5999,
"win_rate": 0.6907,
"profit_factor": 3.1874
},
"valid": {
"count": 661,
"ev_pct": 6.8095,
"win_rate": 0.7262,
"profit_factor": 3.4851
},
"holdout": {
"count": 248,
"ev_pct": 7.2513,
"win_rate": 0.7056,
"profit_factor": 4.3089
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_mtf_cross_all_tf",
"side": "sell",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.6750785337434262,
"hi": 0.9593012516978001
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8206164588850927,
"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
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0151,
"metrics": {
"all": {
"count": 3480,
"ev_pct": 7.5844,
"win_rate": 1.0,
"profit_factor": 26393.624
},
"train": {
"count": 2056,
"ev_pct": 7.5064,
"win_rate": 1.0,
"profit_factor": 15433.2445
},
"valid": {
"count": 670,
"ev_pct": 7.2347,
"win_rate": 1.0,
"profit_factor": 4847.2609
},
"holdout": {
"count": 754,
"ev_pct": 8.1076,
"win_rate": 1.0,
"profit_factor": 6113.1186
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"active_rules": [
{
"rule_id": "gt_model_buy_zigzag_bb",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_buy_signal",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0002,
"metrics": {
"all": {
"count": 25,
"ev_pct": 8.6824,
"win_rate": 0.84,
"profit_factor": 44.9
},
"train": {
"count": 14,
"ev_pct": 6.908,
"win_rate": 0.8571,
"profit_factor": 109.1666
},
"valid": {
"count": 10,
"ev_pct": 11.1305,
"win_rate": 0.8,
"profit_factor": 28.4806
},
"holdout": {
"count": 1,
"ev_pct": 9.0429,
"win_rate": 1.0,
"profit_factor": 9.0429
}
},
"pass_valid": true,
"pass_holdout": false
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.02225009472391165,
"hi": 0.24829322108487767
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2400835423107455
},
{
"col": "m30_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m240_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "d1_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0228,
"metrics": {
"all": {
"count": 4248,
"ev_pct": 5.486,
"win_rate": 0.7363,
"profit_factor": 4.3732
},
"train": {
"count": 2758,
"ev_pct": 4.9175,
"win_rate": 0.7208,
"profit_factor": 3.8415
},
"valid": {
"count": 1012,
"ev_pct": 7.9951,
"win_rate": 0.8261,
"profit_factor": 8.5158
},
"holdout": {
"count": 478,
"ev_pct": 3.4543,
"win_rate": 0.636,
"profit_factor": 2.5588
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_buy_trough_local",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_trough_local",
"op": "eq_int",
"value": 1
},
{
"col": "bb_pos",
"op": "lte",
"value": 0.45
}
],
"valid_fire_rate": 0.0114,
"metrics": {
"all": {
"count": 1506,
"ev_pct": 6.2247,
"win_rate": 0.739,
"profit_factor": 4.859
},
"train": {
"count": 669,
"ev_pct": 6.3469,
"win_rate": 0.7668,
"profit_factor": 5.3425
},
"valid": {
"count": 507,
"ev_pct": 7.4598,
"win_rate": 0.7535,
"profit_factor": 4.552
},
"holdout": {
"count": 330,
"ev_pct": 4.0791,
"win_rate": 0.6606,
"profit_factor": 4.4814
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.53481289151543,
"hi": -118.19602423726946
}
],
"valid_fire_rate": 0.0647,
"metrics": {
"all": {
"count": 11568,
"ev_pct": 5.389,
"win_rate": 0.7159,
"profit_factor": 3.53
},
"train": {
"count": 7328,
"ev_pct": 4.8912,
"win_rate": 0.7201,
"profit_factor": 3.5447
},
"valid": {
"count": 2871,
"ev_pct": 6.8916,
"win_rate": 0.7402,
"profit_factor": 3.6933
},
"holdout": {
"count": 1369,
"ev_pct": 4.9023,
"win_rate": 0.6421,
"profit_factor": 3.0916
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_tight",
"side": "buy",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.04926406505452075,
"hi": 0.17056205475779587
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -176.08366788851922,
"hi": -133.4800557108608
}
],
"valid_fire_rate": 0.0149,
"metrics": {
"all": {
"count": 2461,
"ev_pct": 5.4605,
"win_rate": 0.7017,
"profit_factor": 3.3918
},
"train": {
"count": 1552,
"ev_pct": 4.5999,
"win_rate": 0.6907,
"profit_factor": 3.1874
},
"valid": {
"count": 661,
"ev_pct": 6.8095,
"win_rate": 0.7262,
"profit_factor": 3.4851
},
"holdout": {
"count": 248,
"ev_pct": 7.2513,
"win_rate": 0.7056,
"profit_factor": 4.3089
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_mtf_cross_all_tf",
"side": "sell",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.6750785337434262,
"hi": 0.9593012516978001
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8206164588850927,
"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
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0151,
"metrics": {
"all": {
"count": 3480,
"ev_pct": 7.5844,
"win_rate": 1.0,
"profit_factor": 26393.624
},
"train": {
"count": 2056,
"ev_pct": 7.5064,
"win_rate": 1.0,
"profit_factor": 15433.2445
},
"valid": {
"count": 670,
"ev_pct": 7.2347,
"win_rate": 1.0,
"profit_factor": 4847.2609
},
"holdout": {
"count": 754,
"ev_pct": 8.1076,
"win_rate": 1.0,
"profit_factor": 6113.1186
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8252236664366895,
"hi": 0.9364576511584775
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 119.31363996378025,
"hi": 158.95227481534286
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2563,
"ev_pct": 4.9479,
"win_rate": 0.9462,
"profit_factor": 41.0043
},
"train": {
"count": 1450,
"ev_pct": 4.75,
"win_rate": 0.9524,
"profit_factor": 43.2686
},
"valid": {
"count": 624,
"ev_pct": 4.7054,
"win_rate": 0.9487,
"profit_factor": 31.7944
},
"holdout": {
"count": 489,
"ev_pct": 5.844,
"win_rate": 0.9243,
"profit_factor": 49.6781
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.04253803255844,
"hi": 180.08898611506828
}
],
"valid_fire_rate": 0.053,
"metrics": {
"all": {
"count": 9903,
"ev_pct": 4.81,
"win_rate": 0.9456,
"profit_factor": 32.2148
},
"train": {
"count": 5923,
"ev_pct": 4.8106,
"win_rate": 0.9534,
"profit_factor": 41.5226
},
"valid": {
"count": 2350,
"ev_pct": 4.4023,
"win_rate": 0.9413,
"profit_factor": 19.4534
},
"holdout": {
"count": 1630,
"ev_pct": 5.3955,
"win_rate": 0.9233,
"profit_factor": 34.54
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_contrast_m10_bb_pos",
"side": "sell",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14589043491619427
}
],
"valid_fire_rate": 0.091,
"metrics": {
"all": {
"count": 16536,
"ev_pct": 4.6125,
"win_rate": 0.9368,
"profit_factor": 27.9852
},
"train": {
"count": 9918,
"ev_pct": 4.7163,
"win_rate": 0.9389,
"profit_factor": 34.1885
},
"valid": {
"count": 4035,
"ev_pct": 4.1748,
"win_rate": 0.94,
"profit_factor": 19.066
},
"holdout": {
"count": 2583,
"ev_pct": 4.8977,
"win_rate": 0.9237,
"profit_factor": 27.1049
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_sell_peak_local",
"side": "sell",
"kind": "gt_model",
"conditions": [
{
"col": "gt_peak_local",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0478,
"metrics": {
"all": {
"count": 6593,
"ev_pct": 2.4183,
"win_rate": 0.8288,
"profit_factor": 5.121
},
"train": {
"count": 3057,
"ev_pct": 2.9951,
"win_rate": 0.8394,
"profit_factor": 8.0097
},
"valid": {
"count": 2120,
"ev_pct": 2.1911,
"win_rate": 0.8396,
"profit_factor": 4.6181
},
"holdout": {
"count": 1416,
"ev_pct": 1.5133,
"win_rate": 0.7895,
"profit_factor": 2.6755
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"strict_pass": true,
"holdout_pass": true,
"rejected_count": 2,
"gt_overlap": {
"buy": {
"gt_count": 318,
"matched": 273,
"recall": 0.8585
},
"sell": {
"gt_count": 157,
"matched": 140,
"recall": 0.8917
}
},
"valid_bars_approx": 44353,
"all_rule_summaries": [
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.53481289151543,
"hi": -118.19602423726946
}
],
"valid_fire_rate": 0.0647,
"metrics": {
"all": {
"count": 11568,
"ev_pct": 5.389,
"win_rate": 0.7159,
"profit_factor": 3.53
},
"train": {
"count": 7328,
"ev_pct": 4.8912,
"win_rate": 0.7201,
"profit_factor": 3.5447
},
"valid": {
"count": 2871,
"ev_pct": 6.8916,
"win_rate": 0.7402,
"profit_factor": 3.6933
},
"holdout": {
"count": 1369,
"ev_pct": 4.9023,
"win_rate": 0.6421,
"profit_factor": 3.0916
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_compound_tight",
"side": "buy",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.04926406505452075,
"hi": 0.17056205475779587
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -176.08366788851922,
"hi": -133.4800557108608
}
],
"valid_fire_rate": 0.0149,
"metrics": {
"all": {
"count": 2461,
"ev_pct": 5.4605,
"win_rate": 0.7017,
"profit_factor": 3.3918
},
"train": {
"count": 1552,
"ev_pct": 4.5999,
"win_rate": 0.6907,
"profit_factor": 3.1874
},
"valid": {
"count": 661,
"ev_pct": 6.8095,
"win_rate": 0.7262,
"profit_factor": 3.4851
},
"holdout": {
"count": 248,
"ev_pct": 7.2513,
"win_rate": 0.7056,
"profit_factor": 4.3089
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_contrast_m10_bb_pos",
"side": "buy",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.021172207503886126,
"hi": 0.16409846055318933
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8588208478908868
}
],
"valid_fire_rate": 0.1136,
"metrics": {
"all": {
"count": 19150,
"ev_pct": 5.4936,
"win_rate": 0.7173,
"profit_factor": 3.7049
},
"train": {
"count": 11702,
"ev_pct": 5.0822,
"win_rate": 0.7174,
"profit_factor": 3.7529
},
"valid": {
"count": 5040,
"ev_pct": 6.6694,
"win_rate": 0.7427,
"profit_factor": 3.6894
},
"holdout": {
"count": 2408,
"ev_pct": 5.0317,
"win_rate": 0.664,
"profit_factor": 3.5291
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.02225009472391165,
"hi": 0.24829322108487767
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0002639734376405,
"hi": 0.2055391802948894
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20698250741759133
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2400835423107455
},
{
"col": "m30_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m240_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "d1_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0228,
"metrics": {
"all": {
"count": 4248,
"ev_pct": 5.486,
"win_rate": 0.7363,
"profit_factor": 4.3732
},
"train": {
"count": 2758,
"ev_pct": 4.9175,
"win_rate": 0.7208,
"profit_factor": 3.8415
},
"valid": {
"count": 1012,
"ev_pct": 7.9951,
"win_rate": 0.8261,
"profit_factor": 8.5158
},
"holdout": {
"count": 478,
"ev_pct": 3.4543,
"win_rate": 0.636,
"profit_factor": 2.5588
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.04253803255844,
"hi": 180.08898611506828
}
],
"valid_fire_rate": 0.053,
"metrics": {
"all": {
"count": 9903,
"ev_pct": 4.81,
"win_rate": 0.9456,
"profit_factor": 32.2148
},
"train": {
"count": 5923,
"ev_pct": 4.8106,
"win_rate": 0.9534,
"profit_factor": 41.5226
},
"valid": {
"count": 2350,
"ev_pct": 4.4023,
"win_rate": 0.9413,
"profit_factor": 19.4534
},
"holdout": {
"count": 1630,
"ev_pct": 5.3955,
"win_rate": 0.9233,
"profit_factor": 34.54
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8252236664366895,
"hi": 0.9364576511584775
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 119.31363996378025,
"hi": 158.95227481534286
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2563,
"ev_pct": 4.9479,
"win_rate": 0.9462,
"profit_factor": 41.0043
},
"train": {
"count": 1450,
"ev_pct": 4.75,
"win_rate": 0.9524,
"profit_factor": 43.2686
},
"valid": {
"count": 624,
"ev_pct": 4.7054,
"win_rate": 0.9487,
"profit_factor": 31.7944
},
"holdout": {
"count": 489,
"ev_pct": 5.844,
"win_rate": 0.9243,
"profit_factor": 49.6781
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_contrast_m10_bb_pos",
"side": "sell",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8370267885275882,
"hi": 0.9796418765981115
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14589043491619427
}
],
"valid_fire_rate": 0.091,
"metrics": {
"all": {
"count": 16536,
"ev_pct": 4.6125,
"win_rate": 0.9368,
"profit_factor": 27.9852
},
"train": {
"count": 9918,
"ev_pct": 4.7163,
"win_rate": 0.9389,
"profit_factor": 34.1885
},
"valid": {
"count": 4035,
"ev_pct": 4.1748,
"win_rate": 0.94,
"profit_factor": 19.066
},
"holdout": {
"count": 2583,
"ev_pct": 4.8977,
"win_rate": 0.9237,
"profit_factor": 27.1049
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_mtf_cross_all_tf",
"side": "sell",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_bb_pos",
"op": "between",
"lo": 0.6750785337434262,
"hi": 0.9593012516978001
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.7821369534082708,
"hi": 0.9843377974456614
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7941295136276819,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8206164588850927,
"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
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
}
],
"valid_fire_rate": 0.0151,
"metrics": {
"all": {
"count": 3480,
"ev_pct": 7.5844,
"win_rate": 1.0,
"profit_factor": 26393.624
},
"train": {
"count": 2056,
"ev_pct": 7.5064,
"win_rate": 1.0,
"profit_factor": 15433.2445
},
"valid": {
"count": 670,
"ev_pct": 7.2347,
"win_rate": 1.0,
"profit_factor": 4847.2609
},
"holdout": {
"count": 754,
"ev_pct": 8.1076,
"win_rate": 1.0,
"profit_factor": 6113.1186
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_buy_zigzag_bb",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_buy_signal",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0002,
"metrics": {
"all": {
"count": 25,
"ev_pct": 8.6824,
"win_rate": 0.84,
"profit_factor": 44.9
},
"train": {
"count": 14,
"ev_pct": 6.908,
"win_rate": 0.8571,
"profit_factor": 109.1666
},
"valid": {
"count": 10,
"ev_pct": 11.1305,
"win_rate": 0.8,
"profit_factor": 28.4806
},
"holdout": {
"count": 1,
"ev_pct": 9.0429,
"win_rate": 1.0,
"profit_factor": 9.0429
}
},
"pass_valid": true,
"pass_holdout": false
},
{
"rule_id": "gt_model_buy_trough_local",
"side": "buy",
"kind": "gt_model",
"conditions": [
{
"col": "gt_trough_local",
"op": "eq_int",
"value": 1
},
{
"col": "bb_pos",
"op": "lte",
"value": 0.45
}
],
"valid_fire_rate": 0.0114,
"metrics": {
"all": {
"count": 1506,
"ev_pct": 6.2247,
"win_rate": 0.739,
"profit_factor": 4.859
},
"train": {
"count": 669,
"ev_pct": 6.3469,
"win_rate": 0.7668,
"profit_factor": 5.3425
},
"valid": {
"count": 507,
"ev_pct": 7.4598,
"win_rate": 0.7535,
"profit_factor": 4.552
},
"holdout": {
"count": 330,
"ev_pct": 4.0791,
"win_rate": 0.6606,
"profit_factor": 4.4814
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "gt_model_sell_zigzag_peak",
"side": "sell",
"kind": "gt_model",
"conditions": [
{
"col": "gt_sell_signal",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0,
"metrics": {
"all": {
"count": 8,
"ev_pct": 11.8981,
"win_rate": 1.0,
"profit_factor": 95.1851
},
"train": {
"count": 8,
"ev_pct": 11.8981,
"win_rate": 1.0,
"profit_factor": 95.1851
},
"valid": {
"count": 0,
"ev_pct": 0.0,
"win_rate": 0.0,
"profit_factor": 0.0
},
"holdout": {
"count": 0,
"ev_pct": 0.0,
"win_rate": 0.0,
"profit_factor": 0.0
}
},
"pass_valid": false,
"pass_holdout": false
},
{
"rule_id": "gt_model_sell_peak_local",
"side": "sell",
"kind": "gt_model",
"conditions": [
{
"col": "gt_peak_local",
"op": "eq_int",
"value": 1
}
],
"valid_fire_rate": 0.0478,
"metrics": {
"all": {
"count": 6593,
"ev_pct": 2.4183,
"win_rate": 0.8288,
"profit_factor": 5.121
},
"train": {
"count": 3057,
"ev_pct": 2.9951,
"win_rate": 0.8394,
"profit_factor": 8.0097
},
"valid": {
"count": 2120,
"ev_pct": 2.1911,
"win_rate": 0.8396,
"profit_factor": 4.6181
},
"holdout": {
"count": 1416,
"ev_pct": 1.5133,
"win_rate": 0.7895,
"profit_factor": 2.6755
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"note": ""
}