from __future__ import annotations import pandas as pd from web_core.analytics import backtest_signals from web_core.constants import TREND_BEAR, TREND_BULL, TREND_NEUTRAL def test_backtest_signals_supports_cost_and_hold_controls() -> None: idx = pd.date_range("2025-01-01", periods=8, freq="D") df = pd.DataFrame( { "Close": [100.0, 101.0, 103.0, 104.0, 102.0, 99.0, 97.0, 98.0], "trend_state": [ TREND_NEUTRAL, TREND_BULL, TREND_BULL, TREND_BEAR, TREND_BEAR, TREND_BULL, TREND_BULL, TREND_BULL, ], }, index=idx, ) out = backtest_signals( df, slippage_bps=5.0, fee_bps=2.0, stop_loss_pct=2.0, take_profit_pct=3.0, min_hold_bars=1, max_hold_bars=3, ) assert out["trades"] >= 1 assert "avg_pnl_pct" in out