Skip to content

Releases: Open-Lemma/options-implied-probability

OIPD v2.0.4

28 Apr 22:32
ae0eb50

Choose a tag to compare

We made a no-code web interface!

  • Check open-lemma.com
  • And revamped the documentation to be much clearer

Thanks to our new contributors 👇 👇

A lot of bug fixes!

Probability Domain and CDF Improvements

  • Added full-domain probability grids for ProbCurve and ProbSurface,
    including smart grid_points=None sizing and explicit full_domain=True
    exports/plots.
  • CDFs now use the 1st derivative of call-price instead of integrating
    the PDF (which is itself a 2nd derivative)
  • density_results() and plot() now default to compact, smooth view domains;
    points controls view resolution, while grid_points controls native
    numerical resolution.

Lazy Probability Materialization

  • Added lazy probability materialization for ProbCurve and ProbSurface.
    Probability objects store the fitted-volatility recipe first and
    build price/PDF/CDF arrays only when queried, exported, or plotted.
  • implied_distribution() now accepts grid_points=None and
    cdf_violation_policy="warn".

Warning Diagnostics

  • Added warning_diagnostics events and summaries on public curve and surface
    objects, with concise grouped warnings instead of repeated row/expiry noise.
  • Added warn-and-repair CDF monotonicity handling via
    cdf_violation_policy="warn"; strict users can choose "raise".
  • Added diagnostics for stale quotes, price fallback, SVI butterfly risk,
    skipped expiries, CDF repairs, and fan-chart skips.

Market Data, Forward Inference, and SVI Robustness

  • Improved Black-76 put-call parity forward inference: nearest-ATM selection,
    selected-subset outlier filtering, richer diagnostics, and no influence from
    far-from-ATM pairs that merely pass validation.
  • Temporarily disabled the default bid/ask relative-spread gate; explicit
    max_bid_ask_relative_spread values still apply.
  • Added bid/ask-only ingestion, raw yfinance
    spot handling, and lowercase volume preservation.
  • Fixed SVI weighting so reliable bid/ask spreads take precedence over volume,
    with diagnostics for the chosen auxiliary weight source and fallback reason.
  • Simplified the public volatility/probability API by hiding legacy
    Black-Scholes, Newton solver, and explicit dividend-input knobs; default fits
    remain parity-forward Black-76.

OIPD v2.0.3

12 Apr 16:56

Choose a tag to compare

What's Changed

  • Updated valuation_date and expiry date to accept timestamps, instead of just calendar dates
  • This provides support for 0DTE options

Case study: spotting advanced knowledge trading 18min prior to Trump tweet

Trump announced a 90-day pause on most reciprocal tariffs on April 9, 2025. Reuters reports indications of advanced knowledge trading

  • Trump announced tariffs at 1:18pm, moving the SPY price substantially
  • we see abnormal implied distributions starting from 1pm, prior to his tweet

min-by-min-implied_distributions

Notes:

  • implied distributions of 0DTE April 9 2025 options
  • 1m frequency SPY price downloaded using Alpaca free API
  • free 1m options data from London Strategic

OIPD v2.0.2

09 Mar 15:33

Choose a tag to compare

Minor updates:

  • Added DataFrame export methods for fitted results:
    • ProbCurve.density_results(domain=None, points=200)
    • ProbSurface.density_results(domain=None, points=200, start=None, end=None, step_days=1)
    • extended VolSurface.iv_results(domain=None, points=200, include_observed=True, start=None, end=None, step_days=1)

OIPD v2.0.1

20 Feb 15:42

Choose a tag to compare

OIPD v2: Overview of new capabilities

Previously in v1, OIPD generated the probability distribution of a future asset on a single future date.

OIPD has advanced in 2 directions:

  1. It computes the market's expectations about the probable future prices of an asset, based on information contained in options data.

Computing probabilities over time

  1. It provides an opinionated, end-to-end volatility surface fitting pipeline:

Volatility fitting

v2.0.1 Updates:

  • Improved the theory of interpolating the probability surface. Probabilities can't be interpolated over time directly, only the volatility smiles can be interpolated linearly in total-variance space. So we've made the ProbSurface use the fitted VolSurface to directly
  • Bug fixes: Made the t input consistent everywhere (same domain requirements and same type requirements)

Special thanks everyone who contributed to the development of v2:

Thanks to everyone who has contributed code:
Contributors

And special thanks for support on theory, implementation, or advisory:

  • integral-alpha.com
  • Jannic H., Chun H. H., and Melanie C.
  • and others who prefer to go unnamed

OIPD v2.0.0

06 Feb 12:39

Choose a tag to compare

OIPD v2: Overview of new capabilities

Previously in v1, OIPD generated the probability distribution of a future asset on a single future date.

OIPD has advanced in 2 directions:

  1. It computes the market's expectations about the probable future prices of an asset, based on information contained in options data.

Computing probabilities over time

  1. It provides an opinionated, end-to-end volatility surface fitting pipeline:

Volatility fitting

Special thanks everyone who contributed to the development of v2:

Thanks to everyone who has contributed code:
Contributors

And special thanks for support on theory, implementation, or advisory:

  • integral-alpha.com
  • Jannic H., Chun H. H., and Melanie C.
  • and others who prefer to go unnamed

1.0 release!

18 Sep 17:25

Choose a tag to compare

What's Changed

  • Improve put-call parity preprocessing by @tyrneh in #64

New Contributors

Full Changelog: v0.0.6...v1.0.1