fix(workspaces): seed new defaults from live quote
This commit is contained in:
@@ -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,
|
||||
*,
|
||||
|
||||
Reference in New Issue
Block a user