Skip to main content

vanilla-option-pricers

Numba-vectorised Black-Scholes-Merton and Bachelier prices, Greeks, and implied-volatility fits over NumPy arrays for quantitative research pipelines

It is a focused, function-based numerical library, not a derivatives framework: callers supply forwards, discount factors, maturities, and market conventions.

Install: pip install vanilla-option-pricers · Import: vanilla_option_pricers · Status: Beta

PyPI Python CI Docs License Downloads Monthly

Why vanilla-option-pricers

Research pipelines often need focused pricing functions rather than a derivatives framework. This package provides forward-based Black-Scholes-Merton and Bachelier prices, Greeks, and implied-volatility inversion through scalar functions, aligned-array helpers, and per-expiry containers. The runtime dependency surface is limited to NumPy and Numba.

Key differentiators

  • Log-normal and absolute-normal models side by side. Black-Scholes-Merton and Bachelier functions share a forward-and-discount-factor interface. The Bachelier convention is annualised absolute normal volatility in the same units as the forward and strike.
  • Implied volatility as a first-class fitter. Scalar, slice, and chain helpers recover model volatilities from caller-supplied option prices.
  • Inverse-workflow branches. The 'IC' and 'IP' codes select branches used in coin-denominated inverse-option workflows. They do not perform every quote, numeraire, or payoff normalisation required by a market contract; callers remain responsible for those conversions. For the contract theory, see Lucic and Sepp (2024), Valuation and Hedging of Cryptocurrency Inverse Options, Quantitative Finance, 24(7), 851–869.
  • Two runtime dependencies. NumPy and Numba; no object hierarchy, calendar, curve, pandas, or SciPy layer.

When to use it — and when not

Use vanilla-option-pricers for forward-based vanilla prices, Greeks, and implied-volatility fits inside option-chain processing, volatility-surface preprocessing, simulation post-processing, or calibration objectives.

It is deliberately not a derivatives framework: it does not construct spots, forwards, discount curves, calendars, or settlement conventions, and it does not price American, exotic, or stochastic-volatility models. For pricing and calibration under stochastic volatility, use stochvolmodels; for portfolio-level analytics and reporting, use qis.

Installation

PyPI Installation

pip install vanilla-option-pricers

Upgrade to Latest Version

pip install --upgrade vanilla-option-pricers

Requirements

Core Dependencies

  • python >= 3.10
  • numba >= 0.60.0
  • numpy >= 2.0

The two runtime dependencies are NumPy and Numba. There is no dependency on any higher-level analytics package.

Supported Option Types

VanillaOptionPricers supports the following option types (passed as string parameters):

Option Type String Code Description
Call 'C' Standard call option
Put 'P' Standard put option
Inverse-workflow call branch 'IC' Caller supplies the required market normalisation
Inverse-workflow put branch 'IP' Caller supplies the required market normalisation

Five-minute quickstart

This scalar price-to-implied-volatility round trip works from any directory after installation:

from vanilla_option_pricers import compute_bsm_vanilla_price, infer_bsm_implied_vol

forward, discfactor, ttm, strike, vol = 101.25, 0.99, 0.25, 105.0, 0.20
price = compute_bsm_vanilla_price(forward, strike, ttm, vol, "C", discfactor)
implied_vol = infer_bsm_implied_vol(
    forward, ttm, strike, price, discfactor, "C"
)
print(f"call_price={price:.6f} implied_vol={implied_vol:.8f}")
call_price=2.481051 implied_vol=0.20000000

For arrays, chains, parity checks, and the Bachelier convention, clone the repository and use the authoritative deterministic workflow:

Open In Colab

Use the authoritative, deterministic pricing and IV script. It prices one aligned BSM slice, recovers the input implied volatilities, checks put-call parity, demonstrates the absolute Bachelier volatility convention, and reports cold and warm execution separately.

python examples/getting_started/pricing_and_iv.py

The rendered quickstart includes that source directly and explains its inputs and output. The script requires no market data, network access, credentials, or optional dependencies.

The Colab entry point installs the latest release from public PyPI, reports its exact version and import path, and runs the same mechanically checked workflow with no saved notebook outputs.

Continue with the Bachelier convention, package-root API, and package comparison guides.

Execution model

The public API has distinct execution paths:

  • scalar pricing kernels are Numba dispatchers;
  • slice, grid, and chain helpers use compiled loops over aligned inputs; and
  • five *_vector convenience wrappers use numpy.vectorize.

The first Numba call includes compilation time. Runtime depends on input shape, dtype, machine, and whether the relevant signature has already been compiled; this README makes no universal timing or superiority claim.

Typical uses

The package is intended for:

  • quantitative research using forward-based European vanilla prices and Greeks;
  • option-chain and volatility-surface preprocessing;
  • calibration or simulation post-processing that needs price/volatility inversion; and
  • numerical experiments or teaching examples built around explicit model inputs.

Ecosystem

This package is part of Artur Sepp's open-source Python stack for quantitative finance. The maintainer profile is the canonical ten-package catalogue.

Package Purpose
qis Performance analytics, factsheets, and visualisation
optimalportfolios Portfolio construction and backtesting
factorlasso Sparse factor models and factor covariance estimation
bbg-fetch Bloomberg data fetching
option-chain-analytics Point-in-time option-chain normalisation, reconstruction, queries, and visualisation
trendfollowing Trend-following systems: closed-form theory and replication
privateassets Money-weighted multi-factor alpha from private-asset cash flows
goal-based-allocation Dynamic MV allocation under regime-switching jump-diffusions
stochvolmodels Stochastic volatility pricing analytics
vanilla-option-pricers (this package) Numba-vectorised BSM/Bachelier prices, Greeks, and implied-volatility fits

vanilla-option-pricers is standalone and depends only on NumPy and Numba. It supplies the vanilla pricing layer used by option-chain-analytics and stochvolmodels; those packages own point-in-time chain workflows and stochastic-volatility models respectively.

Feedback & contributing

Citation

A machine-readable citation is available in CITATION.cff.

If you use VanillaOptionPricers in your research, please cite it as:

@software{sepp2026vanillaoptionpricers,
  title={VanillaOptionPricers: Numba-vectorised Black-Scholes-Merton and Bachelier prices, Greeks, and implied-volatility fits over NumPy arrays},
  author={Sepp, Artur},
  year={2026},
  version={2.2.1},
  url={https://github.com/ArturSepp/VanillaOptionPricers},
  note={Python package for forward-based vanilla option pricing and implied-volatility fitting}
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for vanilla-option-pricers 2.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vanilla-option-pricers 2.2.1
File Size Uploaded
vanilla_option_pricers-2.2.1.tar.gz 29.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vanilla-option-pricers 2.2.1
File Interpreter ABI Platform
vanilla_option_pricers-2.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 59.1 kB

Release files / vanilla_option_pricers-2.2.1.tar.gz

Download URL vanilla_option_pricers-2.2.1.tar.gz
Size 29.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e0adc5aa81b58a7607d82b981ebc6ed6c38a06fac437693cde5393954fa0c016
BLAKE2b-256 checksum
How to use checksums
f962f018f384913c6c7412c57bf05e916a4684c166cd640388299ed30c70544b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / vanilla_option_pricers-2.2.1-py3-none-any.whl

Download URL vanilla_option_pricers-2.2.1-py3-none-any.whl
Size 29.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2b3fb0dbebcbf183bff4e947adfb09c67e87686d52152be1d7735715a988ff5
BLAKE2b-256 checksum
How to use checksums
a6aec8bfc5a2e3fe279433de586b95938e1d279d9c9338c59278c2f9173b61ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.2.1 This release

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.3.1

2 release files

1.3.0

1 release file

1.2.3

1 release file

1.2.2

2 release files

1.2.1

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page