fix: GT 중복 인덱스 Series 오류 수정 및 파이프라인 산출물 갱신

봉 데이터 갱신 후 02~04 재실행. BB 저점 수집 시 _row_at_ts로 스칼라 추출.
hybrid Go/No-Go 및 matched_rules·fire_outcomes 동기화.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
xavis
2026-06-04 08:41:33 +09:00
parent 92a929e28e
commit 91c9338651
9 changed files with 167516 additions and 175818 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -511,8 +511,9 @@ def _collect_buy_troughs(
loc = bb_seg["Low"].astype(float).idxmin() loc = bb_seg["Low"].astype(float).idxmin()
idx = _bar_index(df, loc) idx = _bar_index(df, loc)
if all(abs(idx - p.idx) >= min_bars for p in out): if all(abs(idx - p.idx) >= min_bars for p in out):
row_bb = _row_at_ts(bb_seg, loc)
out.append( out.append(
Pivot(idx, loc, "trough", float(bb_seg.loc[loc, "Low"])) Pivot(idx, loc, "trough", float(row_bb["Low"]))
) )
out.sort(key=lambda x: x.ts) out.sort(key=lambda x: x.ts)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,7 @@
"m5_ga_keltner_pos", "m5_ga_keltner_pos",
"m5_ga_mfi_14", "m5_ga_mfi_14",
"m5_ga_donchian_pos", "m5_ga_donchian_pos",
"m5_RSI", "m5_ga_cci_oversold",
"m10_bb_pos", "m10_bb_pos",
"m10_ga_cci_20", "m10_ga_cci_20",
"m10_ga_ha_bull", "m10_ga_ha_bull",
@@ -22,21 +22,21 @@
"m10_ga_keltner_pos", "m10_ga_keltner_pos",
"m10_stoch_k", "m10_stoch_k",
"m15_bb_pos", "m15_bb_pos",
"m15_ga_cci_20",
"m15_ga_ha_bull", "m15_ga_ha_bull",
"m15_ga_cci_20",
"m15_ga_keltner_pos", "m15_ga_keltner_pos",
"m15_ga_donchian_pos", "m15_ga_donchian_pos",
"m15_stoch_k", "m15_stoch_k",
"m30_ga_ha_bull", "m30_ga_ha_bull",
"m30_bb_pos", "m30_bb_pos",
"m30_ga_cci_20", "m30_ga_cci_20",
"m30_ga_williams_overbought", "m30_ga_cci_overbought",
"m30_ga_donchian_pos", "m30_ga_donchian_pos",
"m30_ga_keltner_pos", "m30_ga_keltner_pos",
"m60_ga_ha_bull", "m60_ga_ha_bull",
"m60_ga_cci_20",
"m60_bb_pos", "m60_bb_pos",
"m60_ga_williams_overbought", "m60_ga_williams_overbought",
"m60_ga_cci_20",
"m60_ga_cci_overbought", "m60_ga_cci_overbought",
"m60_ga_keltner_pos", "m60_ga_keltner_pos",
"m240_ga_ha_bull", "m240_ga_ha_bull",
@@ -46,13 +46,13 @@
"m240_bb_pos", "m240_bb_pos",
"m240_ga_keltner_pos", "m240_ga_keltner_pos",
"d1_ga_ha_bull", "d1_ga_ha_bull",
"d1_ga_cci_20",
"d1_ga_cci_oversold", "d1_ga_cci_oversold",
"d1_ga_cci_20",
"d1_ga_hammer",
"d1_bb_pos", "d1_bb_pos",
"d1_ga_cci_overbought", "d1_ga_chart_ha_trend",
"d1_ga_ha_trend_up", "m10_ga_williams_r",
"w1_ga_three_black_crows", "m10_ga_mfi_14"
"w1_ga_pattern_wedge_rising"
], ],
"sell_profile_features": [ "sell_profile_features": [
"m3_bb_pos", "m3_bb_pos",
@@ -66,7 +66,7 @@
"m5_ga_keltner_pos", "m5_ga_keltner_pos",
"m5_ga_mfi_14", "m5_ga_mfi_14",
"m5_ga_donchian_pos", "m5_ga_donchian_pos",
"m5_RSI", "m5_ga_cci_oversold",
"m10_bb_pos", "m10_bb_pos",
"m10_ga_cci_20", "m10_ga_cci_20",
"m10_ga_ha_bull", "m10_ga_ha_bull",
@@ -74,21 +74,21 @@
"m10_ga_keltner_pos", "m10_ga_keltner_pos",
"m10_stoch_k", "m10_stoch_k",
"m15_bb_pos", "m15_bb_pos",
"m15_ga_cci_20",
"m15_ga_ha_bull", "m15_ga_ha_bull",
"m15_ga_cci_20",
"m15_ga_keltner_pos", "m15_ga_keltner_pos",
"m15_ga_donchian_pos", "m15_ga_donchian_pos",
"m15_stoch_k", "m15_stoch_k",
"m30_ga_ha_bull", "m30_ga_ha_bull",
"m30_bb_pos", "m30_bb_pos",
"m30_ga_cci_20", "m30_ga_cci_20",
"m30_ga_williams_overbought", "m30_ga_cci_overbought",
"m30_ga_donchian_pos", "m30_ga_donchian_pos",
"m30_ga_keltner_pos", "m30_ga_keltner_pos",
"m60_ga_ha_bull", "m60_ga_ha_bull",
"m60_ga_cci_20",
"m60_bb_pos", "m60_bb_pos",
"m60_ga_williams_overbought", "m60_ga_williams_overbought",
"m60_ga_cci_20",
"m60_ga_cci_overbought", "m60_ga_cci_overbought",
"m60_ga_keltner_pos", "m60_ga_keltner_pos",
"m240_ga_ha_bull", "m240_ga_ha_bull",
@@ -98,16 +98,16 @@
"m240_bb_pos", "m240_bb_pos",
"m240_ga_keltner_pos", "m240_ga_keltner_pos",
"d1_ga_ha_bull", "d1_ga_ha_bull",
"d1_ga_cci_20",
"d1_ga_cci_oversold", "d1_ga_cci_oversold",
"d1_ga_cci_20",
"d1_ga_hammer",
"d1_bb_pos", "d1_bb_pos",
"d1_ga_cci_overbought", "d1_ga_chart_ha_trend",
"d1_ga_ha_trend_up", "m10_ga_williams_r",
"w1_ga_three_black_crows", "m10_ga_mfi_14"
"w1_ga_pattern_wedge_rising"
], ],
"buy_gt_count": 318, "buy_gt_count": 325,
"sell_gt_count": 158, "sell_gt_count": 160,
"rule_count": 12, "rule_count": 12,
"rules": [ "rules": [
{ {
@@ -119,25 +119,25 @@
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.0, "lo": 0.0,
"hi": 0.20698250741759133 "hi": 0.2135380413505097
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.0002639734376405, "lo": 0.0010558937498797,
"hi": 0.2055391802948894 "hi": 0.2085149451832707
}, },
{ {
"col": "m10_ga_cci_20", "col": "m5_ga_cci_20",
"op": "between", "op": "between",
"lo": -196.53481289151543, "lo": -188.40579710144863,
"hi": -118.19602423726946 "hi": -113.65120836054932
} }
], ],
"profile_cols": [ "profile_cols": [
"m10_bb_pos", "m10_bb_pos",
"m5_bb_pos", "m5_bb_pos",
"m10_ga_cci_20" "m5_ga_cci_20"
] ]
}, },
{ {
@@ -148,20 +148,26 @@
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.021172207503886126, "lo": 0.02269722528896669,
"hi": 0.16409846055318933 "hi": 0.16417141470116056
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.04926406505452075, "lo": 0.050986874829589954,
"hi": 0.17056205475779587 "hi": 0.17673357601131273
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": -169.2052113398648,
"hi": -124.73123841544977
}, },
{ {
"col": "m10_ga_cci_20", "col": "m10_ga_cci_20",
"op": "between", "op": "between",
"lo": -176.08366788851922, "lo": -175.7862791639258,
"hi": -133.4800557108608 "hi": -132.6451584428887
} }
] ]
}, },
@@ -173,13 +179,13 @@
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.021172207503886126, "lo": 0.02269722528896669,
"hi": 0.16409846055318933 "hi": 0.16417141470116056
}, },
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "lte", "op": "lte",
"value": 0.8588208478908868 "value": 0.8561892083441174
} }
] ]
}, },
@@ -191,26 +197,26 @@
{ {
"col": "m3_bb_pos", "col": "m3_bb_pos",
"op": "between", "op": "between",
"lo": 0.02225009472391165, "lo": 0.0217975704436916,
"hi": 0.24829322108487767 "hi": 0.2431494170206665
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.0002639734376405, "lo": 0.0010558937498797,
"hi": 0.2055391802948894 "hi": 0.2085149451832707
}, },
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.0, "lo": 0.0,
"hi": 0.20698250741759133 "hi": 0.2135380413505097
}, },
{ {
"col": "m15_bb_pos", "col": "m15_bb_pos",
"op": "between", "op": "between",
"lo": 0.0, "lo": 0.0,
"hi": 0.2400835423107455 "hi": 0.2485098739243929
}, },
{ {
"col": "m30_ga_ha_bull", "col": "m30_ga_ha_bull",
@@ -231,11 +237,6 @@
"col": "d1_ga_ha_bull", "col": "d1_ga_ha_bull",
"op": "eq_int", "op": "eq_int",
"value": 0 "value": 0
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
} }
] ]
}, },
@@ -247,26 +248,26 @@
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.7941295136276819, "lo": 0.7897850598593097,
"hi": 1.0 "hi": 1.0
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.7821369534082708, "lo": 0.776608631452867,
"hi": 0.9843377974456614 "hi": 0.9797670778565873
}, },
{ {
"col": "m10_ga_cci_20", "col": "m5_ga_cci_20",
"op": "between", "op": "between",
"lo": 111.04253803255844, "lo": 93.20386715706546,
"hi": 180.08898611506828 "hi": 168.50552522505774
} }
], ],
"profile_cols": [ "profile_cols": [
"m10_bb_pos", "m10_bb_pos",
"m5_bb_pos", "m5_bb_pos",
"m10_ga_cci_20" "m5_ga_cci_20"
] ]
}, },
{ {
@@ -277,20 +278,26 @@
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.8370267885275882, "lo": 0.8328462659060121,
"hi": 0.9796418765981115 "hi": 0.9770682040908933
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.8252236664366895, "lo": 0.8247158558563334,
"hi": 0.9364576511584775 "hi": 0.9337055148500956
},
{
"col": "m5_ga_cci_20",
"op": "between",
"lo": 107.30920624132844,
"hi": 148.54421175101805
}, },
{ {
"col": "m10_ga_cci_20", "col": "m10_ga_cci_20",
"op": "between", "op": "between",
"lo": 119.31363996378025, "lo": 118.85113382022408,
"hi": 158.95227481534286 "hi": 158.3923823574028
} }
] ]
}, },
@@ -302,13 +309,13 @@
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.8370267885275882, "lo": 0.8328462659060121,
"hi": 0.9796418765981115 "hi": 0.9770682040908933
}, },
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "gte", "op": "gte",
"value": 0.14589043491619427 "value": 0.14607994670516883
} }
] ]
}, },
@@ -320,25 +327,25 @@
{ {
"col": "m3_bb_pos", "col": "m3_bb_pos",
"op": "between", "op": "between",
"lo": 0.6750785337434262, "lo": 0.6734769690278859,
"hi": 0.9593012516978001 "hi": 0.9584317797555851
}, },
{ {
"col": "m5_bb_pos", "col": "m5_bb_pos",
"op": "between", "op": "between",
"lo": 0.7821369534082708, "lo": 0.776608631452867,
"hi": 0.9843377974456614 "hi": 0.9797670778565873
}, },
{ {
"col": "m10_bb_pos", "col": "m10_bb_pos",
"op": "between", "op": "between",
"lo": 0.7941295136276819, "lo": 0.7897850598593097,
"hi": 1.0 "hi": 1.0
}, },
{ {
"col": "m15_bb_pos", "col": "m15_bb_pos",
"op": "between", "op": "between",
"lo": 0.8206164588850927, "lo": 0.8094990667113329,
"hi": 1.0 "hi": 1.0
}, },
{ {
@@ -360,11 +367,6 @@
"col": "d1_ga_ha_bull", "col": "d1_ga_ha_bull",
"op": "eq_int", "op": "eq_int",
"value": 1 "value": 1
},
{
"col": "w1_ga_three_black_crows",
"op": "eq_int",
"value": 0
} }
] ]
}, },

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff