Files
Bithumb/docs/04_matching/matched_rules.json
xavis 91c9338651 fix: GT 중복 인덱스 Series 오류 수정 및 파이프라인 산출물 갱신
봉 데이터 갱신 후 02~04 재실행. BB 저점 수집 시 _row_at_ts로 스칼라 추출.
hybrid Go/No-Go 및 matched_rules·fire_outcomes 동기화.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 08:41:33 +09:00

2501 lines
56 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": 1508,
"ev_pct": 6.2193,
"win_rate": 0.7394,
"profit_factor": 4.8607
},
"train": {
"count": 666,
"ev_pct": 6.3405,
"win_rate": 0.7658,
"profit_factor": 5.3187
},
"valid": {
"count": 510,
"ev_pct": 7.4617,
"win_rate": 0.7549,
"profit_factor": 4.5739
},
"holdout": {
"count": 332,
"ev_pct": 4.0675,
"win_rate": 0.6627,
"profit_factor": 4.4925
}
},
"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.0217975704436916,
"hi": 0.2431494170206665
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2135380413505097
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2485098739243929
},
{
"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.0323,
"metrics": {
"all": {
"count": 5244,
"ev_pct": 5.4262,
"win_rate": 0.7079,
"profit_factor": 3.9067
},
"train": {
"count": 3273,
"ev_pct": 5.0332,
"win_rate": 0.7207,
"profit_factor": 4.1345
},
"valid": {
"count": 1433,
"ev_pct": 7.203,
"win_rate": 0.7341,
"profit_factor": 4.0184
},
"holdout": {
"count": 538,
"ev_pct": 3.0841,
"win_rate": 0.5595,
"profit_factor": 2.4893
}
},
"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.2135380413505097
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -188.40579710144863,
"hi": -113.65120836054932
}
],
"valid_fire_rate": 0.0545,
"metrics": {
"all": {
"count": 9989,
"ev_pct": 5.4657,
"win_rate": 0.7181,
"profit_factor": 3.6911
},
"train": {
"count": 6342,
"ev_pct": 4.9429,
"win_rate": 0.7211,
"profit_factor": 3.6206
},
"valid": {
"count": 2418,
"ev_pct": 6.9135,
"win_rate": 0.7452,
"profit_factor": 3.9387
},
"holdout": {
"count": 1229,
"ev_pct": 5.315,
"win_rate": 0.6493,
"profit_factor": 3.4771
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8561892083441174
}
],
"valid_fire_rate": 0.1138,
"metrics": {
"all": {
"count": 19029,
"ev_pct": 5.4862,
"win_rate": 0.7174,
"profit_factor": 3.702
},
"train": {
"count": 11601,
"ev_pct": 5.0821,
"win_rate": 0.7175,
"profit_factor": 3.7549
},
"valid": {
"count": 5043,
"ev_pct": 6.6694,
"win_rate": 0.7434,
"profit_factor": 3.697
},
"holdout": {
"count": 2385,
"ev_pct": 4.9499,
"win_rate": 0.6621,
"profit_factor": 3.4775
}
},
"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.6734769690278859,
"hi": 0.9584317797555851
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8094990667113329,
"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.0182,
"metrics": {
"all": {
"count": 4019,
"ev_pct": 7.3121,
"win_rate": 1.0,
"profit_factor": 29387.4736
},
"train": {
"count": 2397,
"ev_pct": 7.1764,
"win_rate": 1.0,
"profit_factor": 17201.897
},
"valid": {
"count": 809,
"ev_pct": 7.2196,
"win_rate": 1.0,
"profit_factor": 5840.682
},
"holdout": {
"count": 813,
"ev_pct": 7.8043,
"win_rate": 1.0,
"profit_factor": 6344.8946
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8247158558563334,
"hi": 0.9337055148500956
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 107.30920624132844,
"hi": 148.54421175101805
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 118.85113382022408,
"hi": 158.3923823574028
}
],
"valid_fire_rate": 0.0069,
"metrics": {
"all": {
"count": 1394,
"ev_pct": 5.1381,
"win_rate": 0.9505,
"profit_factor": 51.7723
},
"train": {
"count": 795,
"ev_pct": 4.6835,
"win_rate": 0.9535,
"profit_factor": 50.8294
},
"valid": {
"count": 308,
"ev_pct": 4.7949,
"win_rate": 0.9416,
"profit_factor": 34.8027
},
"holdout": {
"count": 291,
"ev_pct": 6.7434,
"win_rate": 0.9519,
"profit_factor": 87.5998
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 93.20386715706546,
"hi": 168.50552522505774
}
],
"valid_fire_rate": 0.0612,
"metrics": {
"all": {
"count": 11480,
"ev_pct": 4.7861,
"win_rate": 0.945,
"profit_factor": 32.2052
},
"train": {
"count": 6949,
"ev_pct": 4.8062,
"win_rate": 0.9489,
"profit_factor": 38.6539
},
"valid": {
"count": 2713,
"ev_pct": 4.3635,
"win_rate": 0.9403,
"profit_factor": 20.0674
},
"holdout": {
"count": 1818,
"ev_pct": 5.3399,
"win_rate": 0.9373,
"profit_factor": 39.3855
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14607994670516883
}
],
"valid_fire_rate": 0.0919,
"metrics": {
"all": {
"count": 16859,
"ev_pct": 4.606,
"win_rate": 0.9369,
"profit_factor": 28.2017
},
"train": {
"count": 10141,
"ev_pct": 4.7242,
"win_rate": 0.938,
"profit_factor": 33.8839
},
"valid": {
"count": 4076,
"ev_pct": 4.1378,
"win_rate": 0.9401,
"profit_factor": 18.6955
},
"holdout": {
"count": 2642,
"ev_pct": 4.8742,
"win_rate": 0.9281,
"profit_factor": 29.9605
}
},
"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": 6600,
"ev_pct": 2.4127,
"win_rate": 0.8288,
"profit_factor": 5.1153
},
"train": {
"count": 3052,
"ev_pct": 2.999,
"win_rate": 0.8398,
"profit_factor": 8.0085
},
"valid": {
"count": 2119,
"ev_pct": 2.1815,
"win_rate": 0.8386,
"profit_factor": 4.6
},
"holdout": {
"count": 1429,
"ev_pct": 1.5034,
"win_rate": 0.7908,
"profit_factor": 2.6792
}
},
"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.2135380413505097
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -188.40579710144863,
"hi": -113.65120836054932
}
],
"valid_fire_rate": 0.0545,
"metrics": {
"all": {
"count": 9989,
"ev_pct": 5.4657,
"win_rate": 0.7181,
"profit_factor": 3.6911
},
"train": {
"count": 6342,
"ev_pct": 4.9429,
"win_rate": 0.7211,
"profit_factor": 3.6206
},
"valid": {
"count": 2418,
"ev_pct": 6.9135,
"win_rate": 0.7452,
"profit_factor": 3.9387
},
"holdout": {
"count": 1229,
"ev_pct": 5.315,
"win_rate": 0.6493,
"profit_factor": 3.4771
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.050986874829589954,
"hi": 0.17673357601131273
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -169.2052113398648,
"hi": -124.73123841544977
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -175.7862791639258,
"hi": -132.6451584428887
}
],
"valid_fire_rate": 0.0055,
"metrics": {
"all": {
"count": 1029,
"ev_pct": 5.5293,
"win_rate": 0.688,
"profit_factor": 3.4292
},
"train": {
"count": 686,
"ev_pct": 4.4243,
"win_rate": 0.6706,
"profit_factor": 3.0189
},
"valid": {
"count": 243,
"ev_pct": 6.448,
"win_rate": 0.7119,
"profit_factor": 3.187
},
"holdout": {
"count": 100,
"ev_pct": 10.8775,
"win_rate": 0.75,
"profit_factor": 9.8832
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8561892083441174
}
],
"valid_fire_rate": 0.1138,
"metrics": {
"all": {
"count": 19029,
"ev_pct": 5.4862,
"win_rate": 0.7174,
"profit_factor": 3.702
},
"train": {
"count": 11601,
"ev_pct": 5.0821,
"win_rate": 0.7175,
"profit_factor": 3.7549
},
"valid": {
"count": 5043,
"ev_pct": 6.6694,
"win_rate": 0.7434,
"profit_factor": 3.697
},
"holdout": {
"count": 2385,
"ev_pct": 4.9499,
"win_rate": 0.6621,
"profit_factor": 3.4775
}
},
"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.0217975704436916,
"hi": 0.2431494170206665
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2135380413505097
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2485098739243929
},
{
"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.0323,
"metrics": {
"all": {
"count": 5244,
"ev_pct": 5.4262,
"win_rate": 0.7079,
"profit_factor": 3.9067
},
"train": {
"count": 3273,
"ev_pct": 5.0332,
"win_rate": 0.7207,
"profit_factor": 4.1345
},
"valid": {
"count": 1433,
"ev_pct": 7.203,
"win_rate": 0.7341,
"profit_factor": 4.0184
},
"holdout": {
"count": 538,
"ev_pct": 3.0841,
"win_rate": 0.5595,
"profit_factor": 2.4893
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 93.20386715706546,
"hi": 168.50552522505774
}
],
"valid_fire_rate": 0.0612,
"metrics": {
"all": {
"count": 11480,
"ev_pct": 4.7861,
"win_rate": 0.945,
"profit_factor": 32.2052
},
"train": {
"count": 6949,
"ev_pct": 4.8062,
"win_rate": 0.9489,
"profit_factor": 38.6539
},
"valid": {
"count": 2713,
"ev_pct": 4.3635,
"win_rate": 0.9403,
"profit_factor": 20.0674
},
"holdout": {
"count": 1818,
"ev_pct": 5.3399,
"win_rate": 0.9373,
"profit_factor": 39.3855
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8247158558563334,
"hi": 0.9337055148500956
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 107.30920624132844,
"hi": 148.54421175101805
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 118.85113382022408,
"hi": 158.3923823574028
}
],
"valid_fire_rate": 0.0069,
"metrics": {
"all": {
"count": 1394,
"ev_pct": 5.1381,
"win_rate": 0.9505,
"profit_factor": 51.7723
},
"train": {
"count": 795,
"ev_pct": 4.6835,
"win_rate": 0.9535,
"profit_factor": 50.8294
},
"valid": {
"count": 308,
"ev_pct": 4.7949,
"win_rate": 0.9416,
"profit_factor": 34.8027
},
"holdout": {
"count": 291,
"ev_pct": 6.7434,
"win_rate": 0.9519,
"profit_factor": 87.5998
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14607994670516883
}
],
"valid_fire_rate": 0.0919,
"metrics": {
"all": {
"count": 16859,
"ev_pct": 4.606,
"win_rate": 0.9369,
"profit_factor": 28.2017
},
"train": {
"count": 10141,
"ev_pct": 4.7242,
"win_rate": 0.938,
"profit_factor": 33.8839
},
"valid": {
"count": 4076,
"ev_pct": 4.1378,
"win_rate": 0.9401,
"profit_factor": 18.6955
},
"holdout": {
"count": 2642,
"ev_pct": 4.8742,
"win_rate": 0.9281,
"profit_factor": 29.9605
}
},
"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.6734769690278859,
"hi": 0.9584317797555851
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8094990667113329,
"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.0182,
"metrics": {
"all": {
"count": 4019,
"ev_pct": 7.3121,
"win_rate": 1.0,
"profit_factor": 29387.4736
},
"train": {
"count": 2397,
"ev_pct": 7.1764,
"win_rate": 1.0,
"profit_factor": 17201.897
},
"valid": {
"count": 809,
"ev_pct": 7.2196,
"win_rate": 1.0,
"profit_factor": 5840.682
},
"holdout": {
"count": 813,
"ev_pct": 7.8043,
"win_rate": 1.0,
"profit_factor": 6344.8946
}
},
"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": 1508,
"ev_pct": 6.2193,
"win_rate": 0.7394,
"profit_factor": 4.8607
},
"train": {
"count": 666,
"ev_pct": 6.3405,
"win_rate": 0.7658,
"profit_factor": 5.3187
},
"valid": {
"count": 510,
"ev_pct": 7.4617,
"win_rate": 0.7549,
"profit_factor": 4.5739
},
"holdout": {
"count": 332,
"ev_pct": 4.0675,
"win_rate": 0.6627,
"profit_factor": 4.4925
}
},
"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": 6600,
"ev_pct": 2.4127,
"win_rate": 0.8288,
"profit_factor": 5.1153
},
"train": {
"count": 3052,
"ev_pct": 2.999,
"win_rate": 0.8398,
"profit_factor": 8.0085
},
"valid": {
"count": 2119,
"ev_pct": 2.1815,
"win_rate": 0.8386,
"profit_factor": 4.6
},
"holdout": {
"count": 1429,
"ev_pct": 1.5034,
"win_rate": 0.7908,
"profit_factor": 2.6792
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.050986874829589954,
"hi": 0.17673357601131273
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -169.2052113398648,
"hi": -124.73123841544977
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -175.7862791639258,
"hi": -132.6451584428887
}
],
"valid_fire_rate": 0.0055,
"metrics": {
"all": {
"count": 1029,
"ev_pct": 5.5293,
"win_rate": 0.688,
"profit_factor": 3.4292
},
"train": {
"count": 686,
"ev_pct": 4.4243,
"win_rate": 0.6706,
"profit_factor": 3.0189
},
"valid": {
"count": 243,
"ev_pct": 6.448,
"win_rate": 0.7119,
"profit_factor": 3.187
},
"holdout": {
"count": 100,
"ev_pct": 10.8775,
"win_rate": 0.75,
"profit_factor": 9.8832
}
},
"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.6734769690278859,
"hi": 0.9584317797555851
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8094990667113329,
"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.0182,
"metrics": {
"all": {
"count": 4019,
"ev_pct": 7.3121,
"win_rate": 1.0,
"profit_factor": 29387.4736
},
"train": {
"count": 2397,
"ev_pct": 7.1764,
"win_rate": 1.0,
"profit_factor": 17201.897
},
"valid": {
"count": 809,
"ev_pct": 7.2196,
"win_rate": 1.0,
"profit_factor": 5840.682
},
"holdout": {
"count": 813,
"ev_pct": 7.8043,
"win_rate": 1.0,
"profit_factor": 6344.8946
}
},
"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": 1508,
"ev_pct": 6.2193,
"win_rate": 0.7394,
"profit_factor": 4.8607
},
"train": {
"count": 666,
"ev_pct": 6.3405,
"win_rate": 0.7658,
"profit_factor": 5.3187
},
"valid": {
"count": 510,
"ev_pct": 7.4617,
"win_rate": 0.7549,
"profit_factor": 4.5739
},
"holdout": {
"count": 332,
"ev_pct": 4.0675,
"win_rate": 0.6627,
"profit_factor": 4.4925
}
},
"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.0217975704436916,
"hi": 0.2431494170206665
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2135380413505097
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2485098739243929
},
{
"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.0323,
"metrics": {
"all": {
"count": 5244,
"ev_pct": 5.4262,
"win_rate": 0.7079,
"profit_factor": 3.9067
},
"train": {
"count": 3273,
"ev_pct": 5.0332,
"win_rate": 0.7207,
"profit_factor": 4.1345
},
"valid": {
"count": 1433,
"ev_pct": 7.203,
"win_rate": 0.7341,
"profit_factor": 4.0184
},
"holdout": {
"count": 538,
"ev_pct": 3.0841,
"win_rate": 0.5595,
"profit_factor": 2.4893
}
},
"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.2135380413505097
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -188.40579710144863,
"hi": -113.65120836054932
}
],
"valid_fire_rate": 0.0545,
"metrics": {
"all": {
"count": 9989,
"ev_pct": 5.4657,
"win_rate": 0.7181,
"profit_factor": 3.6911
},
"train": {
"count": 6342,
"ev_pct": 4.9429,
"win_rate": 0.7211,
"profit_factor": 3.6206
},
"valid": {
"count": 2418,
"ev_pct": 6.9135,
"win_rate": 0.7452,
"profit_factor": 3.9387
},
"holdout": {
"count": 1229,
"ev_pct": 5.315,
"win_rate": 0.6493,
"profit_factor": 3.4771
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8561892083441174
}
],
"valid_fire_rate": 0.1138,
"metrics": {
"all": {
"count": 19029,
"ev_pct": 5.4862,
"win_rate": 0.7174,
"profit_factor": 3.702
},
"train": {
"count": 11601,
"ev_pct": 5.0821,
"win_rate": 0.7175,
"profit_factor": 3.7549
},
"valid": {
"count": 5043,
"ev_pct": 6.6694,
"win_rate": 0.7434,
"profit_factor": 3.697
},
"holdout": {
"count": 2385,
"ev_pct": 4.9499,
"win_rate": 0.6621,
"profit_factor": 3.4775
}
},
"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.6734769690278859,
"hi": 0.9584317797555851
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8094990667113329,
"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.0182,
"metrics": {
"all": {
"count": 4019,
"ev_pct": 7.3121,
"win_rate": 1.0,
"profit_factor": 29387.4736
},
"train": {
"count": 2397,
"ev_pct": 7.1764,
"win_rate": 1.0,
"profit_factor": 17201.897
},
"valid": {
"count": 809,
"ev_pct": 7.2196,
"win_rate": 1.0,
"profit_factor": 5840.682
},
"holdout": {
"count": 813,
"ev_pct": 7.8043,
"win_rate": 1.0,
"profit_factor": 6344.8946
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8247158558563334,
"hi": 0.9337055148500956
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 107.30920624132844,
"hi": 148.54421175101805
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 118.85113382022408,
"hi": 158.3923823574028
}
],
"valid_fire_rate": 0.0069,
"metrics": {
"all": {
"count": 1394,
"ev_pct": 5.1381,
"win_rate": 0.9505,
"profit_factor": 51.7723
},
"train": {
"count": 795,
"ev_pct": 4.6835,
"win_rate": 0.9535,
"profit_factor": 50.8294
},
"valid": {
"count": 308,
"ev_pct": 4.7949,
"win_rate": 0.9416,
"profit_factor": 34.8027
},
"holdout": {
"count": 291,
"ev_pct": 6.7434,
"win_rate": 0.9519,
"profit_factor": 87.5998
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 93.20386715706546,
"hi": 168.50552522505774
}
],
"valid_fire_rate": 0.0612,
"metrics": {
"all": {
"count": 11480,
"ev_pct": 4.7861,
"win_rate": 0.945,
"profit_factor": 32.2052
},
"train": {
"count": 6949,
"ev_pct": 4.8062,
"win_rate": 0.9489,
"profit_factor": 38.6539
},
"valid": {
"count": 2713,
"ev_pct": 4.3635,
"win_rate": 0.9403,
"profit_factor": 20.0674
},
"holdout": {
"count": 1818,
"ev_pct": 5.3399,
"win_rate": 0.9373,
"profit_factor": 39.3855
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14607994670516883
}
],
"valid_fire_rate": 0.0919,
"metrics": {
"all": {
"count": 16859,
"ev_pct": 4.606,
"win_rate": 0.9369,
"profit_factor": 28.2017
},
"train": {
"count": 10141,
"ev_pct": 4.7242,
"win_rate": 0.938,
"profit_factor": 33.8839
},
"valid": {
"count": 4076,
"ev_pct": 4.1378,
"win_rate": 0.9401,
"profit_factor": 18.6955
},
"holdout": {
"count": 2642,
"ev_pct": 4.8742,
"win_rate": 0.9281,
"profit_factor": 29.9605
}
},
"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": 6600,
"ev_pct": 2.4127,
"win_rate": 0.8288,
"profit_factor": 5.1153
},
"train": {
"count": 3052,
"ev_pct": 2.999,
"win_rate": 0.8398,
"profit_factor": 8.0085
},
"valid": {
"count": 2119,
"ev_pct": 2.1815,
"win_rate": 0.8386,
"profit_factor": 4.6
},
"holdout": {
"count": 1429,
"ev_pct": 1.5034,
"win_rate": 0.7908,
"profit_factor": 2.6792
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"strict_pass": true,
"holdout_pass": true,
"rejected_count": 2,
"gt_overlap": {
"buy": {
"gt_count": 325,
"matched": 274,
"recall": 0.8431
},
"sell": {
"gt_count": 160,
"matched": 141,
"recall": 0.8812
}
},
"valid_bars_approx": 44330,
"all_rule_summaries": [
{
"rule_id": "buy_compound_top3",
"side": "buy",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2135380413505097
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -188.40579710144863,
"hi": -113.65120836054932
}
],
"valid_fire_rate": 0.0545,
"metrics": {
"all": {
"count": 9989,
"ev_pct": 5.4657,
"win_rate": 0.7181,
"profit_factor": 3.6911
},
"train": {
"count": 6342,
"ev_pct": 4.9429,
"win_rate": 0.7211,
"profit_factor": 3.6206
},
"valid": {
"count": 2418,
"ev_pct": 6.9135,
"win_rate": 0.7452,
"profit_factor": 3.9387
},
"holdout": {
"count": 1229,
"ev_pct": 5.315,
"win_rate": 0.6493,
"profit_factor": 3.4771
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.050986874829589954,
"hi": 0.17673357601131273
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -169.2052113398648,
"hi": -124.73123841544977
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": -175.7862791639258,
"hi": -132.6451584428887
}
],
"valid_fire_rate": 0.0055,
"metrics": {
"all": {
"count": 1029,
"ev_pct": 5.5293,
"win_rate": 0.688,
"profit_factor": 3.4292
},
"train": {
"count": 686,
"ev_pct": 4.4243,
"win_rate": 0.6706,
"profit_factor": 3.0189
},
"valid": {
"count": 243,
"ev_pct": 6.448,
"win_rate": 0.7119,
"profit_factor": 3.187
},
"holdout": {
"count": 100,
"ev_pct": 10.8775,
"win_rate": 0.75,
"profit_factor": 9.8832
}
},
"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.02269722528896669,
"hi": 0.16417141470116056
},
{
"col": "m10_bb_pos",
"op": "lte",
"value": 0.8561892083441174
}
],
"valid_fire_rate": 0.1138,
"metrics": {
"all": {
"count": 19029,
"ev_pct": 5.4862,
"win_rate": 0.7174,
"profit_factor": 3.702
},
"train": {
"count": 11601,
"ev_pct": 5.0821,
"win_rate": 0.7175,
"profit_factor": 3.7549
},
"valid": {
"count": 5043,
"ev_pct": 6.6694,
"win_rate": 0.7434,
"profit_factor": 3.697
},
"holdout": {
"count": 2385,
"ev_pct": 4.9499,
"win_rate": 0.6621,
"profit_factor": 3.4775
}
},
"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.0217975704436916,
"hi": 0.2431494170206665
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.0010558937498797,
"hi": 0.2085149451832707
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2135380413505097
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.0,
"hi": 0.2485098739243929
},
{
"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.0323,
"metrics": {
"all": {
"count": 5244,
"ev_pct": 5.4262,
"win_rate": 0.7079,
"profit_factor": 3.9067
},
"train": {
"count": 3273,
"ev_pct": 5.0332,
"win_rate": 0.7207,
"profit_factor": 4.1345
},
"valid": {
"count": 1433,
"ev_pct": 7.203,
"win_rate": 0.7341,
"profit_factor": 4.0184
},
"holdout": {
"count": 538,
"ev_pct": 3.0841,
"win_rate": 0.5595,
"profit_factor": 2.4893
}
},
"pass_valid": true,
"pass_holdout": true
},
{
"rule_id": "sell_compound_top3",
"side": "sell",
"kind": "compound",
"conditions": [
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 93.20386715706546,
"hi": 168.50552522505774
}
],
"valid_fire_rate": 0.0612,
"metrics": {
"all": {
"count": 11480,
"ev_pct": 4.7861,
"win_rate": 0.945,
"profit_factor": 32.2052
},
"train": {
"count": 6949,
"ev_pct": 4.8062,
"win_rate": 0.9489,
"profit_factor": 38.6539
},
"valid": {
"count": 2713,
"ev_pct": 4.3635,
"win_rate": 0.9403,
"profit_factor": 20.0674
},
"holdout": {
"count": 1818,
"ev_pct": 5.3399,
"win_rate": 0.9373,
"profit_factor": 39.3855
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.8247158558563334,
"hi": 0.9337055148500956
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 107.30920624132844,
"hi": 148.54421175101805
},
{
"col": "m10_ga_cci_20",
"op": "between",
"lo": 118.85113382022408,
"hi": 158.3923823574028
}
],
"valid_fire_rate": 0.0069,
"metrics": {
"all": {
"count": 1394,
"ev_pct": 5.1381,
"win_rate": 0.9505,
"profit_factor": 51.7723
},
"train": {
"count": 795,
"ev_pct": 4.6835,
"win_rate": 0.9535,
"profit_factor": 50.8294
},
"valid": {
"count": 308,
"ev_pct": 4.7949,
"win_rate": 0.9416,
"profit_factor": 34.8027
},
"holdout": {
"count": 291,
"ev_pct": 6.7434,
"win_rate": 0.9519,
"profit_factor": 87.5998
}
},
"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.8328462659060121,
"hi": 0.9770682040908933
},
{
"col": "m10_bb_pos",
"op": "gte",
"value": 0.14607994670516883
}
],
"valid_fire_rate": 0.0919,
"metrics": {
"all": {
"count": 16859,
"ev_pct": 4.606,
"win_rate": 0.9369,
"profit_factor": 28.2017
},
"train": {
"count": 10141,
"ev_pct": 4.7242,
"win_rate": 0.938,
"profit_factor": 33.8839
},
"valid": {
"count": 4076,
"ev_pct": 4.1378,
"win_rate": 0.9401,
"profit_factor": 18.6955
},
"holdout": {
"count": 2642,
"ev_pct": 4.8742,
"win_rate": 0.9281,
"profit_factor": 29.9605
}
},
"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.6734769690278859,
"hi": 0.9584317797555851
},
{
"col": "m5_bb_pos",
"op": "between",
"lo": 0.776608631452867,
"hi": 0.9797670778565873
},
{
"col": "m10_bb_pos",
"op": "between",
"lo": 0.7897850598593097,
"hi": 1.0
},
{
"col": "m15_bb_pos",
"op": "between",
"lo": 0.8094990667113329,
"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.0182,
"metrics": {
"all": {
"count": 4019,
"ev_pct": 7.3121,
"win_rate": 1.0,
"profit_factor": 29387.4736
},
"train": {
"count": 2397,
"ev_pct": 7.1764,
"win_rate": 1.0,
"profit_factor": 17201.897
},
"valid": {
"count": 809,
"ev_pct": 7.2196,
"win_rate": 1.0,
"profit_factor": 5840.682
},
"holdout": {
"count": 813,
"ev_pct": 7.8043,
"win_rate": 1.0,
"profit_factor": 6344.8946
}
},
"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": 1508,
"ev_pct": 6.2193,
"win_rate": 0.7394,
"profit_factor": 4.8607
},
"train": {
"count": 666,
"ev_pct": 6.3405,
"win_rate": 0.7658,
"profit_factor": 5.3187
},
"valid": {
"count": 510,
"ev_pct": 7.4617,
"win_rate": 0.7549,
"profit_factor": 4.5739
},
"holdout": {
"count": 332,
"ev_pct": 4.0675,
"win_rate": 0.6627,
"profit_factor": 4.4925
}
},
"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": 6600,
"ev_pct": 2.4127,
"win_rate": 0.8288,
"profit_factor": 5.1153
},
"train": {
"count": 3052,
"ev_pct": 2.999,
"win_rate": 0.8398,
"profit_factor": 8.0085
},
"valid": {
"count": 2119,
"ev_pct": 2.1815,
"win_rate": 0.8386,
"profit_factor": 4.6
},
"holdout": {
"count": 1429,
"ev_pct": 1.5034,
"win_rate": 0.7908,
"profit_factor": 2.6792
}
},
"pass_valid": true,
"pass_holdout": true
}
],
"note": ""
}