Files
Bithumb/docs/04_matching/matched_rules.json
xavis 7e305f480f docs 산출물(GT·분석·매칭·시뮬)을 Git 추적 대상에 포함한다.
.gitignore에서 docs 하위 제외 규칙을 제거하고 최신 HTML·CSV·JSON 리포트를 원격에 공유한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-31 19:56:17 +09:00

2451 lines
55 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": "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.0115,
"metrics": {
"all": {
"count": 1505,
"ev_pct": 6.0624,
"win_rate": 0.7316,
"profit_factor": 4.7082
},
"train": {
"count": 663,
"ev_pct": 6.3311,
"win_rate": 0.7647,
"profit_factor": 5.2928
},
"valid": {
"count": 498,
"ev_pct": 7.3995,
"win_rate": 0.749,
"profit_factor": 4.4607
},
"holdout": {
"count": 344,
"ev_pct": 3.6088,
"win_rate": 0.6424,
"profit_factor": 3.9708
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_ga_cci_20",
"op": "between",
"lo": -165.63146997929448,
"hi": -94.58417734722393
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0007919203113804,
"hi": 0.20459180244412847
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20106701606099592
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2273660357984182
},
{
"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
}
],
"valid_fire_rate": 0.0218,
"metrics": {
"all": {
"count": 3533,
"ev_pct": 5.4986,
"win_rate": 0.7107,
"profit_factor": 3.9995
},
"train": {
"count": 2225,
"ev_pct": 5.2142,
"win_rate": 0.7249,
"profit_factor": 4.2574
},
"valid": {
"count": 946,
"ev_pct": 7.1321,
"win_rate": 0.7368,
"profit_factor": 4.0913
},
"holdout": {
"count": 362,
"ev_pct": 2.9777,
"win_rate": 0.5552,
"profit_factor": 2.4718
}
},
"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.20106701606099592
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.75277202865237,
"hi": -118.66969390129654
}
],
"valid_fire_rate": 0.1045,
"metrics": {
"all": {
"count": 17631,
"ev_pct": 5.3063,
"win_rate": 0.7157,
"profit_factor": 3.5224
},
"train": {
"count": 10865,
"ev_pct": 4.9877,
"win_rate": 0.7211,
"profit_factor": 3.6198
},
"valid": {
"count": 4532,
"ev_pct": 6.8055,
"win_rate": 0.7396,
"profit_factor": 3.7237
},
"holdout": {
"count": 2234,
"ev_pct": 3.8147,
"win_rate": 0.641,
"profit_factor": 2.6773
}
},
"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.020269805294580265,
"hi": 0.1573047482613718
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8652920380018327
}
],
"valid_fire_rate": 0.1092,
"metrics": {
"all": {
"count": 17993,
"ev_pct": 5.3294,
"win_rate": 0.7119,
"profit_factor": 3.5811
},
"train": {
"count": 10999,
"ev_pct": 5.002,
"win_rate": 0.7131,
"profit_factor": 3.6686
},
"valid": {
"count": 4736,
"ev_pct": 6.6962,
"win_rate": 0.7435,
"profit_factor": 3.6926
},
"holdout": {
"count": 2258,
"ev_pct": 4.0579,
"win_rate": 0.6404,
"profit_factor": 2.9259
}
},
"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
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 121.46178461863994,
"hi": 162.4704293245592
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8255534770185807,
"hi": 0.9360858121763327
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2547,
"ev_pct": 4.8878,
"win_rate": 0.9466,
"profit_factor": 41.3078
},
"train": {
"count": 1464,
"ev_pct": 4.7871,
"win_rate": 0.9522,
"profit_factor": 46.3293
},
"valid": {
"count": 611,
"ev_pct": 4.853,
"win_rate": 0.9509,
"profit_factor": 33.2429
},
"holdout": {
"count": 472,
"ev_pct": 5.2451,
"win_rate": 0.9237,
"profit_factor": 40.7507
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8052954063070535,
"hi": 1.0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 1
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.65828056686297,
"hi": 181.1790204647342
}
],
"valid_fire_rate": 0.086,
"metrics": {
"all": {
"count": 15799,
"ev_pct": 4.6906,
"win_rate": 0.946,
"profit_factor": 30.8859
},
"train": {
"count": 9523,
"ev_pct": 4.8963,
"win_rate": 0.9532,
"profit_factor": 42.9901
},
"valid": {
"count": 3729,
"ev_pct": 4.3175,
"win_rate": 0.9415,
"profit_factor": 18.2386
},
"holdout": {
"count": 2547,
"ev_pct": 4.4673,
"win_rate": 0.9258,
"profit_factor": 27.1429
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.1345186926688078
}
],
"valid_fire_rate": 0.0886,
"metrics": {
"all": {
"count": 16104,
"ev_pct": 4.5385,
"win_rate": 0.9352,
"profit_factor": 27.3888
},
"train": {
"count": 9739,
"ev_pct": 4.7285,
"win_rate": 0.9388,
"profit_factor": 35.0533
},
"valid": {
"count": 3842,
"ev_pct": 4.1113,
"win_rate": 0.9357,
"profit_factor": 17.9674
},
"holdout": {
"count": 2523,
"ev_pct": 4.4557,
"win_rate": 0.9203,
"profit_factor": 24.1116
}
},
"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.0479,
"metrics": {
"all": {
"count": 6554,
"ev_pct": 2.4084,
"win_rate": 0.8282,
"profit_factor": 5.0874
},
"train": {
"count": 3026,
"ev_pct": 3.0144,
"win_rate": 0.8384,
"profit_factor": 7.9844
},
"valid": {
"count": 2077,
"ev_pct": 2.0954,
"win_rate": 0.8353,
"profit_factor": 4.3894
},
"holdout": {
"count": 1451,
"ev_pct": 1.5928,
"win_rate": 0.7967,
"profit_factor": 2.8173
}
},
"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.20106701606099592
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.75277202865237,
"hi": -118.66969390129654
}
],
"valid_fire_rate": 0.1045,
"metrics": {
"all": {
"count": 17631,
"ev_pct": 5.3063,
"win_rate": 0.7157,
"profit_factor": 3.5224
},
"train": {
"count": 10865,
"ev_pct": 4.9877,
"win_rate": 0.7211,
"profit_factor": 3.6198
},
"valid": {
"count": 4532,
"ev_pct": 6.8055,
"win_rate": 0.7396,
"profit_factor": 3.7237
},
"holdout": {
"count": 2234,
"ev_pct": 3.8147,
"win_rate": 0.641,
"profit_factor": 2.6773
}
},
"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.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": "buy_contrast_m10_bb_pos",
"side": "buy",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.020269805294580265,
"hi": 0.1573047482613718
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8652920380018327
}
],
"valid_fire_rate": 0.1092,
"metrics": {
"all": {
"count": 17993,
"ev_pct": 5.3294,
"win_rate": 0.7119,
"profit_factor": 3.5811
},
"train": {
"count": 10999,
"ev_pct": 5.002,
"win_rate": 0.7131,
"profit_factor": 3.6686
},
"valid": {
"count": 4736,
"ev_pct": 6.6962,
"win_rate": 0.7435,
"profit_factor": 3.6926
},
"holdout": {
"count": 2258,
"ev_pct": 4.0579,
"win_rate": 0.6404,
"profit_factor": 2.9259
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_ga_cci_20",
"op": "between",
"lo": -165.63146997929448,
"hi": -94.58417734722393
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0007919203113804,
"hi": 0.20459180244412847
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20106701606099592
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2273660357984182
},
{
"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
}
],
"valid_fire_rate": 0.0218,
"metrics": {
"all": {
"count": 3533,
"ev_pct": 5.4986,
"win_rate": 0.7107,
"profit_factor": 3.9995
},
"train": {
"count": 2225,
"ev_pct": 5.2142,
"win_rate": 0.7249,
"profit_factor": 4.2574
},
"valid": {
"count": 946,
"ev_pct": 7.1321,
"win_rate": 0.7368,
"profit_factor": 4.0913
},
"holdout": {
"count": 362,
"ev_pct": 2.9777,
"win_rate": 0.5552,
"profit_factor": 2.4718
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8052954063070535,
"hi": 1.0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 1
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.65828056686297,
"hi": 181.1790204647342
}
],
"valid_fire_rate": 0.086,
"metrics": {
"all": {
"count": 15799,
"ev_pct": 4.6906,
"win_rate": 0.946,
"profit_factor": 30.8859
},
"train": {
"count": 9523,
"ev_pct": 4.8963,
"win_rate": 0.9532,
"profit_factor": 42.9901
},
"valid": {
"count": 3729,
"ev_pct": 4.3175,
"win_rate": 0.9415,
"profit_factor": 18.2386
},
"holdout": {
"count": 2547,
"ev_pct": 4.4673,
"win_rate": 0.9258,
"profit_factor": 27.1429
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 121.46178461863994,
"hi": 162.4704293245592
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8255534770185807,
"hi": 0.9360858121763327
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2547,
"ev_pct": 4.8878,
"win_rate": 0.9466,
"profit_factor": 41.3078
},
"train": {
"count": 1464,
"ev_pct": 4.7871,
"win_rate": 0.9522,
"profit_factor": 46.3293
},
"valid": {
"count": 611,
"ev_pct": 4.853,
"win_rate": 0.9509,
"profit_factor": 33.2429
},
"holdout": {
"count": 472,
"ev_pct": 5.2451,
"win_rate": 0.9237,
"profit_factor": 40.7507
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.1345186926688078
}
],
"valid_fire_rate": 0.0886,
"metrics": {
"all": {
"count": 16104,
"ev_pct": 4.5385,
"win_rate": 0.9352,
"profit_factor": 27.3888
},
"train": {
"count": 9739,
"ev_pct": 4.7285,
"win_rate": 0.9388,
"profit_factor": 35.0533
},
"valid": {
"count": 3842,
"ev_pct": 4.1113,
"win_rate": 0.9357,
"profit_factor": 17.9674
},
"holdout": {
"count": 2523,
"ev_pct": 4.4557,
"win_rate": 0.9203,
"profit_factor": 24.1116
}
},
"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
},
{
"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.0115,
"metrics": {
"all": {
"count": 1505,
"ev_pct": 6.0624,
"win_rate": 0.7316,
"profit_factor": 4.7082
},
"train": {
"count": 663,
"ev_pct": 6.3311,
"win_rate": 0.7647,
"profit_factor": 5.2928
},
"valid": {
"count": 498,
"ev_pct": 7.3995,
"win_rate": 0.749,
"profit_factor": 4.4607
},
"holdout": {
"count": 344,
"ev_pct": 3.6088,
"win_rate": 0.6424,
"profit_factor": 3.9708
}
},
"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.0479,
"metrics": {
"all": {
"count": 6554,
"ev_pct": 2.4084,
"win_rate": 0.8282,
"profit_factor": 5.0874
},
"train": {
"count": 3026,
"ev_pct": 3.0144,
"win_rate": 0.8384,
"profit_factor": 7.9844
},
"valid": {
"count": 2077,
"ev_pct": 2.0954,
"win_rate": 0.8353,
"profit_factor": 4.3894
},
"holdout": {
"count": 1451,
"ev_pct": 1.5928,
"win_rate": 0.7967,
"profit_factor": 2.8173
}
},
"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.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
}
],
"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": "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.0115,
"metrics": {
"all": {
"count": 1505,
"ev_pct": 6.0624,
"win_rate": 0.7316,
"profit_factor": 4.7082
},
"train": {
"count": 663,
"ev_pct": 6.3311,
"win_rate": 0.7647,
"profit_factor": 5.2928
},
"valid": {
"count": 498,
"ev_pct": 7.3995,
"win_rate": 0.749,
"profit_factor": 4.4607
},
"holdout": {
"count": 344,
"ev_pct": 3.6088,
"win_rate": 0.6424,
"profit_factor": 3.9708
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_ga_cci_20",
"op": "between",
"lo": -165.63146997929448,
"hi": -94.58417734722393
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0007919203113804,
"hi": 0.20459180244412847
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20106701606099592
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2273660357984182
},
{
"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
}
],
"valid_fire_rate": 0.0218,
"metrics": {
"all": {
"count": 3533,
"ev_pct": 5.4986,
"win_rate": 0.7107,
"profit_factor": 3.9995
},
"train": {
"count": 2225,
"ev_pct": 5.2142,
"win_rate": 0.7249,
"profit_factor": 4.2574
},
"valid": {
"count": 946,
"ev_pct": 7.1321,
"win_rate": 0.7368,
"profit_factor": 4.0913
},
"holdout": {
"count": 362,
"ev_pct": 2.9777,
"win_rate": 0.5552,
"profit_factor": 2.4718
}
},
"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.20106701606099592
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.75277202865237,
"hi": -118.66969390129654
}
],
"valid_fire_rate": 0.1045,
"metrics": {
"all": {
"count": 17631,
"ev_pct": 5.3063,
"win_rate": 0.7157,
"profit_factor": 3.5224
},
"train": {
"count": 10865,
"ev_pct": 4.9877,
"win_rate": 0.7211,
"profit_factor": 3.6198
},
"valid": {
"count": 4532,
"ev_pct": 6.8055,
"win_rate": 0.7396,
"profit_factor": 3.7237
},
"holdout": {
"count": 2234,
"ev_pct": 3.8147,
"win_rate": 0.641,
"profit_factor": 2.6773
}
},
"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.020269805294580265,
"hi": 0.1573047482613718
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8652920380018327
}
],
"valid_fire_rate": 0.1092,
"metrics": {
"all": {
"count": 17993,
"ev_pct": 5.3294,
"win_rate": 0.7119,
"profit_factor": 3.5811
},
"train": {
"count": 10999,
"ev_pct": 5.002,
"win_rate": 0.7131,
"profit_factor": 3.6686
},
"valid": {
"count": 4736,
"ev_pct": 6.6962,
"win_rate": 0.7435,
"profit_factor": 3.6926
},
"holdout": {
"count": 2258,
"ev_pct": 4.0579,
"win_rate": 0.6404,
"profit_factor": 2.9259
}
},
"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
},
{
"rule_id": "sell_compound_tight",
"side": "sell",
"kind": "compound_tight",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 121.46178461863994,
"hi": 162.4704293245592
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8255534770185807,
"hi": 0.9360858121763327
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2547,
"ev_pct": 4.8878,
"win_rate": 0.9466,
"profit_factor": 41.3078
},
"train": {
"count": 1464,
"ev_pct": 4.7871,
"win_rate": 0.9522,
"profit_factor": 46.3293
},
"valid": {
"count": 611,
"ev_pct": 4.853,
"win_rate": 0.9509,
"profit_factor": 33.2429
},
"holdout": {
"count": 472,
"ev_pct": 5.2451,
"win_rate": 0.9237,
"profit_factor": 40.7507
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8052954063070535,
"hi": 1.0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 1
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.65828056686297,
"hi": 181.1790204647342
}
],
"valid_fire_rate": 0.086,
"metrics": {
"all": {
"count": 15799,
"ev_pct": 4.6906,
"win_rate": 0.946,
"profit_factor": 30.8859
},
"train": {
"count": 9523,
"ev_pct": 4.8963,
"win_rate": 0.9532,
"profit_factor": 42.9901
},
"valid": {
"count": 3729,
"ev_pct": 4.3175,
"win_rate": 0.9415,
"profit_factor": 18.2386
},
"holdout": {
"count": 2547,
"ev_pct": 4.4673,
"win_rate": 0.9258,
"profit_factor": 27.1429
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.1345186926688078
}
],
"valid_fire_rate": 0.0886,
"metrics": {
"all": {
"count": 16104,
"ev_pct": 4.5385,
"win_rate": 0.9352,
"profit_factor": 27.3888
},
"train": {
"count": 9739,
"ev_pct": 4.7285,
"win_rate": 0.9388,
"profit_factor": 35.0533
},
"valid": {
"count": 3842,
"ev_pct": 4.1113,
"win_rate": 0.9357,
"profit_factor": 17.9674
},
"holdout": {
"count": 2523,
"ev_pct": 4.4557,
"win_rate": 0.9203,
"profit_factor": 24.1116
}
},
"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.0479,
"metrics": {
"all": {
"count": 6554,
"ev_pct": 2.4084,
"win_rate": 0.8282,
"profit_factor": 5.0874
},
"train": {
"count": 3026,
"ev_pct": 3.0144,
"win_rate": 0.8384,
"profit_factor": 7.9844
},
"valid": {
"count": 2077,
"ev_pct": 2.0954,
"win_rate": 0.8353,
"profit_factor": 4.3894
},
"holdout": {
"count": 1451,
"ev_pct": 1.5928,
"win_rate": 0.7967,
"profit_factor": 2.8173
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"strict_pass": true,
"holdout_pass": true,
"rejected_count": 2,
"gt_overlap": {
"buy": {
"gt_count": 306,
"matched": 266,
"recall": 0.8693
},
"sell": {
"gt_count": 150,
"matched": 134,
"recall": 0.8933
}
},
"valid_bars_approx": 43351,
"all_rule_summaries": [
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20106701606099592
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 0
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -196.75277202865237,
"hi": -118.66969390129654
}
],
"valid_fire_rate": 0.1045,
"metrics": {
"all": {
"count": 17631,
"ev_pct": 5.3063,
"win_rate": 0.7157,
"profit_factor": 3.5224
},
"train": {
"count": 10865,
"ev_pct": 4.9877,
"win_rate": 0.7211,
"profit_factor": 3.6198
},
"valid": {
"count": 4532,
"ev_pct": 6.8055,
"win_rate": 0.7396,
"profit_factor": 3.7237
},
"holdout": {
"count": 2234,
"ev_pct": 3.8147,
"win_rate": 0.641,
"profit_factor": 2.6773
}
},
"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.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": "buy_contrast_m10_bb_pos",
"side": "buy",
"kind": "contrast",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.020269805294580265,
"hi": 0.1573047482613718
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8652920380018327
}
],
"valid_fire_rate": 0.1092,
"metrics": {
"all": {
"count": 17993,
"ev_pct": 5.3294,
"win_rate": 0.7119,
"profit_factor": 3.5811
},
"train": {
"count": 10999,
"ev_pct": 5.002,
"win_rate": 0.7131,
"profit_factor": 3.6686
},
"valid": {
"count": 4736,
"ev_pct": 6.6962,
"win_rate": 0.7435,
"profit_factor": 3.6926
},
"holdout": {
"count": 2258,
"ev_pct": 4.0579,
"win_rate": 0.6404,
"profit_factor": 2.9259
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "buy_mtf_cross_all_tf",
"side": "buy",
"kind": "mtf_cross",
"conditions": [
{
"col": "m3_ga_cci_20",
"op": "between",
"lo": -165.63146997929448,
"hi": -94.58417734722393
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0007919203113804,
"hi": 0.20459180244412847
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.20106701606099592
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2273660357984182
},
{
"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
}
],
"valid_fire_rate": 0.0218,
"metrics": {
"all": {
"count": 3533,
"ev_pct": 5.4986,
"win_rate": 0.7107,
"profit_factor": 3.9995
},
"train": {
"count": 2225,
"ev_pct": 5.2142,
"win_rate": 0.7249,
"profit_factor": 4.2574
},
"valid": {
"count": 946,
"ev_pct": 7.1321,
"win_rate": 0.7368,
"profit_factor": 4.0913
},
"holdout": {
"count": 362,
"ev_pct": 2.9777,
"win_rate": 0.5552,
"profit_factor": 2.4718
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.8052954063070535,
"hi": 1.0
},
{
"col": "m60_ga_ha_bull",
"op": "eq_int",
"value": 1
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 111.65828056686297,
"hi": 181.1790204647342
}
],
"valid_fire_rate": 0.086,
"metrics": {
"all": {
"count": 15799,
"ev_pct": 4.6906,
"win_rate": 0.946,
"profit_factor": 30.8859
},
"train": {
"count": 9523,
"ev_pct": 4.8963,
"win_rate": 0.9532,
"profit_factor": 42.9901
},
"valid": {
"count": 3729,
"ev_pct": 4.3175,
"win_rate": 0.9415,
"profit_factor": 18.2386
},
"holdout": {
"count": 2547,
"ev_pct": 4.4673,
"win_rate": 0.9258,
"profit_factor": 27.1429
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 121.46178461863994,
"hi": 162.4704293245592
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8255534770185807,
"hi": 0.9360858121763327
}
],
"valid_fire_rate": 0.0141,
"metrics": {
"all": {
"count": 2547,
"ev_pct": 4.8878,
"win_rate": 0.9466,
"profit_factor": 41.3078
},
"train": {
"count": 1464,
"ev_pct": 4.7871,
"win_rate": 0.9522,
"profit_factor": 46.3293
},
"valid": {
"count": 611,
"ev_pct": 4.853,
"win_rate": 0.9509,
"profit_factor": 33.2429
},
"holdout": {
"count": 472,
"ev_pct": 5.2451,
"win_rate": 0.9237,
"profit_factor": 40.7507
}
},
"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.8404304497544448,
"hi": 0.9835509404754346
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.1345186926688078
}
],
"valid_fire_rate": 0.0886,
"metrics": {
"all": {
"count": 16104,
"ev_pct": 4.5385,
"win_rate": 0.9352,
"profit_factor": 27.3888
},
"train": {
"count": 9739,
"ev_pct": 4.7285,
"win_rate": 0.9388,
"profit_factor": 35.0533
},
"valid": {
"count": 3842,
"ev_pct": 4.1113,
"win_rate": 0.9357,
"profit_factor": 17.9674
},
"holdout": {
"count": 2523,
"ev_pct": 4.4557,
"win_rate": 0.9203,
"profit_factor": 24.1116
}
},
"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
},
{
"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.0115,
"metrics": {
"all": {
"count": 1505,
"ev_pct": 6.0624,
"win_rate": 0.7316,
"profit_factor": 4.7082
},
"train": {
"count": 663,
"ev_pct": 6.3311,
"win_rate": 0.7647,
"profit_factor": 5.2928
},
"valid": {
"count": 498,
"ev_pct": 7.3995,
"win_rate": 0.749,
"profit_factor": 4.4607
},
"holdout": {
"count": 344,
"ev_pct": 3.6088,
"win_rate": 0.6424,
"profit_factor": 3.9708
}
},
"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.0479,
"metrics": {
"all": {
"count": 6554,
"ev_pct": 2.4084,
"win_rate": 0.8282,
"profit_factor": 5.0874
},
"train": {
"count": 3026,
"ev_pct": 3.0144,
"win_rate": 0.8384,
"profit_factor": 7.9844
},
"valid": {
"count": 2077,
"ev_pct": 2.0954,
"win_rate": 0.8353,
"profit_factor": 4.3894
},
"holdout": {
"count": 1451,
"ev_pct": 1.5928,
"win_rate": 0.7967,
"profit_factor": 2.8173
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"note": ""
}