test: exclude factor warmup from performance window
This commit is contained in:
@@ -233,3 +233,35 @@ def test_factor_backtest_research_requires_matching_daily_calendars() -> None:
|
|||||||
execution_price_field="open",
|
execution_price_field="open",
|
||||||
valuation_price_field="close",
|
valuation_price_field="close",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_factor_backtest_starts_at_first_signal_instead_of_price_warmup() -> None:
|
||||||
|
"""因子预热行情不能作为空仓日混入研究绩效区间。"""
|
||||||
|
dates = pd.date_range("2026-01-05", periods=5, freq="B")
|
||||||
|
scores = pd.DataFrame({"A": [1.0]}, index=dates[2:3])
|
||||||
|
opens = pd.DataFrame({"A": [1.0, 1.0, 1.0, 10.0, 10.0]}, index=dates)
|
||||||
|
closes = pd.DataFrame({"A": [100.0, 200.0, 300.0, 11.0, 12.0]}, index=dates)
|
||||||
|
config = ExecutionConfig(
|
||||||
|
commission_bps=0,
|
||||||
|
stamp_tax_bps=0,
|
||||||
|
slippage_bps=0,
|
||||||
|
min_trade_amount=0,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = run_factor_backtest_research(
|
||||||
|
scores,
|
||||||
|
execution_prices=opens,
|
||||||
|
valuation_prices=closes,
|
||||||
|
top_k=1,
|
||||||
|
execution_price_field="open",
|
||||||
|
valuation_price_field="close",
|
||||||
|
initial_cash=1_000.0,
|
||||||
|
config=config,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert result.nav.index.equals(dates[2:])
|
||||||
|
pd.testing.assert_series_equal(
|
||||||
|
result.nav,
|
||||||
|
pd.Series([1.0, 1.1, 1.2], index=dates[2:], name="nav"),
|
||||||
|
)
|
||||||
|
assert result.stats()["n_days"] == 3
|
||||||
|
|||||||
Reference in New Issue
Block a user