feat: complete matrix-native backtest engine

Unify strategy execution across backtest, screener, and monitoring; isolate backtest workloads in spawn workers; and add shared matrix caching plus valid-bar indicator acceleration.
This commit is contained in:
lytem28
2026-07-16 12:17:27 +08:00
parent b1845cf491
commit b6cf0495e1
74 changed files with 12113 additions and 1501 deletions
+15 -8
View File
@@ -2,12 +2,12 @@ from datetime import date
import polars as pl
from app.strategy.engine import StrategyDef, StrategyEngine
from app.strategy.engine import StrategyDataContext, StrategyDef, StrategyEngine
def _make_engine() -> StrategyEngine:
def _make_engine() -> tuple[StrategyEngine, StrategyDataContext]:
df = pl.DataFrame({"symbol": ["A", "B", "C"], "value": [1, 2, 3]})
engine = StrategyEngine(enriched_loader=lambda _as_of: df)
engine = StrategyEngine(strategy_dirs=[])
engine._strategies["saved_params"] = StrategyDef(
meta={"id": "saved_params", "scoring": {}, "limit": 100},
basic_filter={"enabled": False},
@@ -24,13 +24,19 @@ def _make_engine() -> StrategyEngine:
lookback_days=1,
source="custom",
)
return engine
return engine, StrategyDataContext(
asset_type="stock",
timeframe="1d",
as_of=date(2026, 7, 15),
current=df,
)
def test_run_applies_saved_strategy_params():
result = _make_engine().run(
engine, context = _make_engine()
result = engine.run(
"saved_params",
date(2026, 7, 15),
context,
overrides={"params": {"min_value": 2}},
)
@@ -38,9 +44,10 @@ def test_run_applies_saved_strategy_params():
def test_explicit_params_override_saved_strategy_params():
result = _make_engine().run(
engine, context = _make_engine()
result = engine.run(
"saved_params",
date(2026, 7, 15),
context,
params={"min_value": 3},
overrides={"params": {"min_value": 2}},
)