fix(workspaces): seed new defaults from live quote

This commit is contained in:
Bu5hm4nn
2026-03-25 19:48:58 +01:00
parent 782e8f692e
commit aae67dfd9b
5 changed files with 77 additions and 17 deletions

View File

@@ -159,13 +159,11 @@ def strategy_benefit_per_unit(strategy: Mapping[str, Any], *, current_spot: floa
return round(float(benefit), 2)
def resolve_portfolio_spot_from_quote(
config: PortfolioConfig,
def resolve_collateral_spot_from_quote(
quote: Mapping[str, object],
*,
fallback_symbol: str | None = None,
) -> tuple[float, str, str]:
configured_price = float(config.entry_price or 0.0)
) -> tuple[float, str, str] | None:
quote_price = _safe_quote_price(quote.get("price"))
quote_source = str(quote.get("source", "unknown"))
quote_updated_at = str(quote.get("updated_at", ""))
@@ -173,12 +171,12 @@ def resolve_portfolio_spot_from_quote(
quote_unit = str(quote.get("quote_unit", "")).strip().lower()
if quote_price <= 0 or not quote_symbol or quote_unit != "share":
return configured_price, "configured_entry_price", ""
return None
try:
metadata = instrument_metadata(quote_symbol)
except ValueError:
return configured_price, "configured_entry_price", ""
return None
converted_spot = metadata.price_per_weight_from_asset_price(
PricePerAsset(amount=decimal_from_float(quote_price), currency=BaseCurrency.USD, symbol=quote_symbol),
@@ -187,6 +185,19 @@ def resolve_portfolio_spot_from_quote(
return _decimal_to_float(converted_spot.amount), quote_source, quote_updated_at
def resolve_portfolio_spot_from_quote(
config: PortfolioConfig,
quote: Mapping[str, object],
*,
fallback_symbol: str | None = None,
) -> tuple[float, str, str]:
resolved = resolve_collateral_spot_from_quote(quote, fallback_symbol=fallback_symbol)
if resolved is not None:
return resolved
configured_price = float(config.entry_price or 0.0)
return configured_price, "configured_entry_price", ""
def portfolio_snapshot_from_config(
config: PortfolioConfig | None = None,
*,