fix: unify backtest execution and add forward validation candidates
Share point-in-time signals and a cash-funded order ledger across backtests and trading. Correct eligibility, missing-price fills, quality factors, regime inputs, warmup windows, and cash-injection accounting. Add reproducible registered-strategy comparisons and paired forward candidates with a 20% resize band. Validation: 125 Python tests, 23 web tests, TypeScript/Vite build, 87 strategy causality checks, and real-data target/order/equity parity for 10 strategies.
This commit is contained in:
@@ -258,11 +258,10 @@ def _merge_refresh(existing: pd.DataFrame | None, new: pd.DataFrame,
|
||||
|
||||
|
||||
def _fill_open(close: pd.DataFrame, open_raw: pd.DataFrame | None) -> pd.DataFrame:
|
||||
"""Align open prices to the close panel; fall back to close where open is missing."""
|
||||
if open_raw is None or open_raw.empty:
|
||||
return close.copy()
|
||||
aligned = open_raw.reindex(index=close.index, columns=close.columns).ffill()
|
||||
return aligned.fillna(close)
|
||||
"""Align quotes without manufacturing a print from a stale or later price."""
|
||||
if open_raw is None:
|
||||
return pd.DataFrame(np.nan, index=close.index, columns=close.columns)
|
||||
return open_raw.reindex(index=close.index, columns=close.columns)
|
||||
|
||||
|
||||
YAHOO_FIELDS = {"close": "Close", "open": "Open", "high": "High", "low": "Low", "volume": "Volume"}
|
||||
|
||||
Reference in New Issue
Block a user