feat: strategy builder

This commit is contained in:
OpenSquared
2026-07-19 09:39:09 +02:00
parent e7247d4c4c
commit 3417bb6075
6 changed files with 142 additions and 62 deletions

View File

@@ -5,7 +5,7 @@ from pydantic import BaseModel
from services.option_chain import get_chain_slice
from services.vol_surface import build_surface, apply_scenario
from services.strategy_engine import payoff_curves
from services.strategy_engine import payoff_curves, DEFAULT_CONTRACT_SIZE
from services.strategy_optimizer import optimize as run_optimizer
from services.database import (
save_scenario, get_scenarios, delete_scenario,
@@ -34,6 +34,7 @@ class ScenarioIn(BaseModel):
manual_grid: Optional[List[Dict[str, Any]]] = None
rate: float = 0.05
n_expiries: int = 3
contract_size: float = DEFAULT_CONTRACT_SIZE
class PriceRequest(BaseModel):
@@ -121,6 +122,7 @@ def price(req: PriceRequest):
result = payoff_curves(
legs, chain_slice, surface_now, surface_scenario,
req.scenario.horizon_days, req.scenario.rate,
contract_size=req.scenario.contract_size,
)
result["spot"] = chain_slice["spot"]
result["scenario_spot"] = surface_scenario.spot
@@ -146,6 +148,7 @@ def optimize(req: OptimizeRequest):
constraints=req.constraints.model_dump(),
objective=req.constraints.objective,
top_n=req.constraints.top_n,
contract_size=req.scenario.contract_size,
)
except Exception as e:
import traceback