feat(CORE-001C): type historical unit materialization

This commit is contained in:
Bu5hm4nn
2026-03-24 22:30:36 +01:00
parent 7c2729485c
commit c7c8654be7
8 changed files with 309 additions and 19 deletions

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
from datetime import timedelta
from app.domain.backtesting_math import materialize_backtest_portfolio_state
from app.models.backtest import (
BacktestPortfolioState,
BacktestScenario,
@@ -93,12 +94,13 @@ class EventComparisonService:
preset = self.event_preset_service.get_preset(preset_slug)
history = self._load_preset_history(preset)
entry_spot = history[0].close
initial_portfolio = BacktestPortfolioState(
currency=currency,
initial_portfolio = materialize_backtest_portfolio_state(
symbol=preset.symbol,
underlying_units=underlying_units,
entry_spot=entry_spot,
loan_amount=loan_amount,
margin_call_ltv=margin_call_ltv,
currency=currency,
cash_balance=cash_balance,
financing_rate=financing_rate,
)
@@ -124,12 +126,13 @@ class EventComparisonService:
raise ValueError("Event comparison requires at least one template slug")
resolved_history = history or self._load_preset_history(preset)
scenario_portfolio = BacktestPortfolioState(
currency=initial_portfolio.currency,
scenario_portfolio = materialize_backtest_portfolio_state(
symbol=preset.symbol,
underlying_units=initial_portfolio.underlying_units,
entry_spot=resolved_history[0].close,
loan_amount=initial_portfolio.loan_amount,
margin_call_ltv=initial_portfolio.margin_call_ltv,
currency=initial_portfolio.currency,
cash_balance=initial_portfolio.cash_balance,
financing_rate=initial_portfolio.financing_rate,
)