mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 16:44:15 +08:00
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:
@@ -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}},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user