feat: saxo price

This commit is contained in:
OpenSquared
2026-07-23 17:09:53 +02:00
parent 7267443d5b
commit d04aeace1c
2 changed files with 34 additions and 8 deletions

View File

@@ -60,17 +60,23 @@ def _synthesize_quote(
# Bounded, stable catalogs worth fully caching in our own DB (StockOption/StockIndexOption
# are far too large to bulk-fetch — those stay resolved on demand via Keywords search).
# ContractFutures (outright futures — Brent, WTI, Gold, Copper, index e-minis) and FxSpot
# (FX pairs) are the underlying-side equivalents of the option types above — added so the
# Instruments Watchlist "Quote" link (services.database.set_instrument_watchlist_saxo_quote_symbol)
# has a real catalog to search instead of only ever finding option instruments.
CATALOG_ASSET_TYPES = ["FuturesOption", "FxVanillaOption", "ContractFutures", "FxSpot"]
# ContractFutures/CfdOnFutures/FxSpot are the underlying-side equivalents of the option
# types above — added so the Instruments Watchlist "Quote" link
# (services.database.set_instrument_watchlist_saxo_quote_symbol) has a real catalog to
# search instead of only ever finding option instruments. Two flavors of "futures" on
# purpose: ContractFutures lists one instrument PER expiry month (e.g. Brent LCOU6 =
# Sep 2026, LCOZ6 = Dec 2026 — needs manual rolling as contracts expire), while
# CfdOnFutures is Saxo's CFD product tracking the same underlying continuously, closer
# to what a "spot price" ticker like yfinance's BZ=F implies. Confirmed 2026-07-23 via
# the Config -> Saxo "Tester" tool that ContractFutures/LCOU6 resolves live for Brent;
# CfdOnFutures availability not yet confirmed for this account.
CATALOG_ASSET_TYPES = ["FuturesOption", "FxVanillaOption", "ContractFutures", "CfdOnFutures", "FxSpot"]
# Which of CATALOG_ASSET_TYPES are options (Instruments Watchlist "Option" picker) vs.
# underlyings (the "Quote" picker) — see routers/instruments_watchlist.py's saxo-*-link
# endpoints and frontend/src/pages/Config.tsx's SaxoLinkPicker.
OPTION_ASSET_TYPES = ["FuturesOption", "FxVanillaOption", "StockOption", "StockIndexOption"]
UNDERLYING_ASSET_TYPES = ["ContractFutures", "FxSpot", "StockIndex"]
UNDERLYING_ASSET_TYPES = ["ContractFutures", "CfdOnFutures", "FxSpot", "StockIndex"]
# symbol -> resolved instrument details, cheap in-process cache (roots don't change within a session)
_root_uic_cache: Dict[str, Dict[str, Any]] = {}