Skip to main content

Module options

Module options 

Source
Expand description

US equity and ETF option prints and one-minute option candles from the London Strategic Edge vault.

let client = LseVaultClient::from_env()?;
let start = Utc.with_ymd_and_hms(2026, 9, 22, 15, 0, 0).unwrap();
let end = start + Duration::minutes(5);

let prints = client.fetch_option_flow(Some("SPY"), start, end);
futures::pin_mut!(prints);

while let Some(print) = prints.next().await {
    let print = print?;
    println!("{} {} x{} delta={:?}", print.contract.ticker, print.price, print.volume, print.greeks.delta);
}

§⚠️ Licensing

Data retrieved here is not redistributable. See the module documentation and https://londonstrategicedge.com/terms.

§What this feed is — and is not

  • Prints, not quotes. Every row is an executed option trade. There is no bid, ask or book anywhere on these paths, so nothing here can build an OrderBookL1.
  • ⚠️ Greeks are PRINT-TRIGGERED, not continuous. Each print carries the greeks the provider computed at that print, and nothing publishes them in between. A contract’s greeks are therefore only as fresh as its last trade, which on an illiquid strike can be weeks old — and an unheld contract that never trades is never marked at all. This is a property of the source: the provider’s chain snapshot endpoint, which would be the continuous alternative, serves stale stored fields (expired contracts, a dte that disagrees with the expiry) and is deliberately not wrapped. Do not treat the latest print’s greeks as a current risk figure without checking its age.
  • Timestamps are batch stamps at whole-second granularity. Every print inside one second carries a stamp within a few milliseconds of every other, so the sub-second part is not a print time. Never order, de-duplicate or join on the timestamp alone; the provider’s print id is the unique key.
  • Strikes are not always round. Contracts adjusted for a corporate action carry fractional strikes (2.67, 9.85), so the strike is a Decimal and the contract’s identity is its ticker, not a strike rebuilt from integers.
  • ⚠️ A contract is read from its ticker, not from the row’s separate fields. The served strike is a float and has carried noise (504.99999999999994 for a 505 strike), so kind, strike and expiry are all read exactly from the OSI ticker. A row whose ticker is not an OSI symbol is a decode error.
  • An unknown underlying or ticker is an empty result, not an error. The provider answers 200 with no rows for a symbol it has never heard of, indistinguishable here from a quiet period.
  • Exercise style is not reported, so none is claimed: most listed US equity options are American, but index options are European, and guessing would be this library inventing a fact.

Structs§

LseOptionCandle
One minute of trading in one option contract.
LseOptionContract
One option contract, as the provider identifies it.
LseOptionPrint
One executed option trade, with the greeks the provider computed at that print.

Constants§

OPTION_FLOW_SETTLE_MARGIN
How long after a moment the provider’s print tape can be relied on to be complete up to it.