Skip to main content

A high-performance, professional-grade (i tried) quantitative option pricing library with Numba and Cython optimizations.

Project description

OptionPricer

A high-performance, professional-grade (to the best of my ability) quantitative finance library for option pricing, optimized heavily via NumPy vectorization, Numba JIT, and Cython AOT compilation.

Development Journey & Architecture

This package was built systematically through strict, high-performance architectural phases:

  1. Phase 1: NumPy Vectorization

    • Eliminated slow Python loops in the core hot paths.
    • Replaced scalar stock price reconstructions with precomputed power arrays, yielding a 3.7x baseline speedup on the binomial lattice.
  2. Phase 2: Advanced Monte Carlo & Variance Reduction

    • Implemented Sobol Quasi-Random sequences to ensure superior space-filling over standard pseudo-random engines.
    • Introduced Antithetic Variates ($Z$ and $-Z$) and Control Variates (using terminal spot price correlation) to achieve up to 800x variance reduction, allowing high precision at drastically lower path counts.
  3. Phase 3: Numba JIT Compilation

    • Compiled the sequential backward-induction algorithms into machine code via LLVM.
    • Handled Python's GIL overhead by isolating numerical loops inside pure-C equivalents, dropping execution time from 48ms down to 5ms for large $N$.
  4. Phase 4: Cython Extensions & Pre-compiled Wheels

    • Statically typed the core mathematical functions (cdef, double[:] memoryviews) into an AOT compiled C-extension to completely eliminate runtime compilation warmup.
  5. Phase 5: Algorithmic Routing

    • Engineered smart heuristics for implied volatility. Routes to Peter Jäckel's 'Let's Be Rational' for standard Euro options, falls back to Newton-Raphson for near-ATM scenarios, and seamlessly redirects to SciPy's robust brentq for deep OTM/ITM and American edge cases.
  6. Phase 6: Professional Software Engineering

    • Enforced strict dependency boundaries.
    • Fully annotated with Python Type Hints and Google-style docstrings.
    • Prepared for distribution via PyPA build and twine CI/CD standards.

Performance Benchmarks

  • Black-Scholes (Analytical): ~0.028 ms
  • Implied Volatility (Brentq Solver): ~0.144 ms
  • Binomial Tree (American, N=1000): ~0.362 ms
  • Monte Carlo (Optimized, N=32,768): ~0.519 ms
  • Binomial Tree (American, N=5000): ~6.766 ms

Usage

pip install optionpricer
from optionpricer import build_tree, monte_carlo_prices, implied_vol

# Price a 5,000-step American Put via Cython
price = build_tree(S=100, K=100, T=1, r=0.05, sigma=0.2, N=5000, option_type="put", american=True)

# Generate 32,000 variance-reduced Monte Carlo paths
mc_price = monte_carlo_prices(S=100, K=100, T=1, r=0.05, sigma=0.2)

Painstakingly written manual code :sob:
buzzword buzzowrd buzzword

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

optionpricer-0.1.11.tar.gz (164.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

optionpricer-0.1.11-cp313-cp313-macosx_10_13_universal2.whl (312.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

File details

Details for the file optionpricer-0.1.11.tar.gz.

File metadata

  • Download URL: optionpricer-0.1.11.tar.gz
  • Upload date:
  • Size: 164.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for optionpricer-0.1.11.tar.gz
Algorithm Hash digest
SHA256 fab72a1bd3dccd785b84f30613b5119458beb46e60b73e3c2452305d8a66e163
MD5 295b4617a9a5433be2befb7ca9f930a3
BLAKE2b-256 d47bafdfc70e3c818d3bc59ae6e56d53a2e72da631a8cd28ec8b2b62a2694f95

See more details on using hashes here.

File details

Details for the file optionpricer-0.1.11-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for optionpricer-0.1.11-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 42c88e8bee0c78c657d3cc9ba3c10131bdeacd20b9a30521911b2d1d319a2c9d
MD5 e986844d8df130fde0a62e9b819f0002
BLAKE2b-256 5ebecf0023f5be0c6a0b6f27e63912b2d5def5c54c6195b7330a8b00717dba63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page