fix(pre-alpha): preserve injected backtest services
This commit is contained in:
@@ -4,7 +4,10 @@ from datetime import date
|
||||
|
||||
import pytest
|
||||
|
||||
from app.services.backtesting.historical_provider import SyntheticHistoricalProvider
|
||||
from app.services.backtesting.service import BacktestService
|
||||
from app.services.backtesting.ui_service import BacktestPageService
|
||||
from tests.helpers_backtest_sources import StaticBacktestSource
|
||||
|
||||
|
||||
def test_backtest_page_service_uses_fixture_window_for_deterministic_run() -> None:
|
||||
@@ -186,6 +189,23 @@ def test_backtest_preview_validation_requires_supported_fixture_window_even_with
|
||||
)
|
||||
|
||||
|
||||
def test_backtest_preview_validation_accepts_close_supplied_entry_spot() -> None:
|
||||
service = BacktestPageService()
|
||||
|
||||
entry_spot = service.validate_preview_inputs(
|
||||
symbol="GLD",
|
||||
start_date=date(2024, 1, 2),
|
||||
end_date=date(2024, 1, 8),
|
||||
template_slug="protective-put-atm-12m",
|
||||
underlying_units=1000.0,
|
||||
loan_amount=68000.0,
|
||||
margin_call_ltv=0.75,
|
||||
entry_spot=100.005,
|
||||
)
|
||||
|
||||
assert entry_spot == 100.0
|
||||
|
||||
|
||||
def test_backtest_preview_validation_rejects_mismatched_supplied_entry_spot() -> None:
|
||||
service = BacktestPageService()
|
||||
|
||||
@@ -200,3 +220,17 @@ def test_backtest_preview_validation_rejects_mismatched_supplied_entry_spot() ->
|
||||
margin_call_ltv=0.75,
|
||||
entry_spot=99.0,
|
||||
)
|
||||
|
||||
|
||||
def test_backtest_page_service_does_not_mutate_injected_backtest_service() -> None:
|
||||
provider = SyntheticHistoricalProvider(
|
||||
source=StaticBacktestSource(),
|
||||
implied_volatility=0.2,
|
||||
risk_free_rate=0.01,
|
||||
)
|
||||
injected_service = BacktestService(provider=provider)
|
||||
|
||||
BacktestPageService(backtest_service=injected_service)
|
||||
|
||||
history = injected_service.provider.load_history("GLD", date(2024, 1, 3), date(2024, 1, 3))
|
||||
assert history[0].close == 123.0
|
||||
|
||||
Reference in New Issue
Block a user