Skip to main content

Exact and entropic martingale optimal transport experiments for robust pricing.

Project description

MOT Pricing

CI Docs PyPI Python

mot-pricing turns the original one-off notebook into a reproducible Python project for robust pricing with martingale optimal transport (MOT).

The reference experiment in this repository studies:

  • S1 ~ Uniform[1, 3]
  • S2 ~ Uniform[0, 4]
  • payoff |S1 - S2|
  • exact martingale constraint E[S2 | S1] = S1

The codebase includes:

  • an exact linear-programming solver for discrete MOT
  • a numerically stable entropic regularization solver
  • discrete marginal helpers plus convex-order checks
  • a built-in payoff library for spread-style payoffs
  • a curated gallery runner for multi-example experiment showcases
  • corrected unrestricted coupling benchmarks
  • a configurable CLI and script for custom uniform interval experiments
  • JSON summaries for reproducible experiment outputs
  • reusable reporting helpers for figures, diagnostics, and summaries
  • tests for the exact and regularized solvers

Public Outputs

  • Docs site: https://anouarmohamed.github.io/NoteBook/
  • GitHub releases: the tag workflow attaches wheel and source distribution assets
  • PyPI package: https://pypi.org/project/mot-pricing/
  • TestPyPI package: https://test.pypi.org/project/mot-pricing/
  • Trusted publishing and GitHub Pages are active for this repository

Why this repo exists

The original notebook had strong ideas but mixed together derivation, experimentation, plotting, and solver logic. It also had a few correctness and presentation issues:

  • unrestricted benchmark labels were flipped
  • the dual value was compared to the wrong primal quantity in the regularized section
  • the h update used direct exponentials and produced overflow warnings

This project keeps the same experiment while packaging it into reusable, testable code.

Quick Start

Install from PyPI:

pip install mot-pricing

Then run the CLI:

mot-uniform --n 50 --x-interval 1 3 --y-interval 0 4 --payoff abs_spread --eps 1.0 0.3 0.1 0.03 0.01 --output-dir artifacts

Generate the curated gallery:

mot-gallery --output-dir gallery_artifacts

For editable local development:

python -m venv .venv
.venv\Scripts\activate
pip install -e .[dev]
pytest

To build the docs locally:

pip install -e .[docs]
mkdocs serve

If you prefer not to install the package in editable mode:

pip install -r requirements.txt
python scripts/run_uniform_abs_spread.py --output-dir artifacts

Custom payoff example:

mot-uniform --n 60 --x-interval 1 3 --y-interval 0 4 --payoff call_on_spread --strike 0.25 --eps 0.3 0.1

Expected Results

For the default uniform example:

  • the exact MOT upper value converges toward 1.0
  • the lower value is about 0.6
  • the unrestricted comonotone coupling is the minimum benchmark
  • the unrestricted countermonotone coupling is the maximum benchmark
  • the regularized value approaches the exact LP value as eps -> 0

For the broader API:

  • DiscreteMarginal represents weighted discrete laws
  • check_convex_order_discrete(...) provides a practical feasibility diagnostic
  • built-in payoffs include abs_spread, squared_distance, call_on_spread, put_on_spread, and straddle_on_spread
  • save_experiment_artifacts(...) writes figures and machine-readable summaries
  • builtin_gallery_specs() and save_gallery_assets(...) generate a mini research gallery

Repo Layout

  • src/mot_pricing/: solver library
  • scripts/: runnable entry script
  • tests/: regression and numerical checks
  • CHANGELOG.md: release history
  • CONTRIBUTING.md: local development and release flow
  • notebooks/: notebook material preserved from the original exploration
  • docs/: GitHub Pages documentation source
  • .github/workflows/: CI for test automation

Notebook Status

The original notebook is preserved under notebooks/ as legacy exploratory work. A clean report notebook now imports the library directly, and the library plus CLI are the canonical implementation.

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

mot_pricing-0.4.1.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

mot_pricing-0.4.1-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file mot_pricing-0.4.1.tar.gz.

File metadata

  • Download URL: mot_pricing-0.4.1.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mot_pricing-0.4.1.tar.gz
Algorithm Hash digest
SHA256 5c5a1f26d158b7a0dade7ba226d6a22d2bd5535e2543c1679bd61cd7d0e30702
MD5 74d1744f70f459cb845ff654ea0c72e7
BLAKE2b-256 26b7a5cd70a10729f9c3a159fab62d1cbb2e650c9db4eff59bca1236871f778f

See more details on using hashes here.

Provenance

The following attestation bundles were made for mot_pricing-0.4.1.tar.gz:

Publisher: publish-package.yml on AnouarMohamed/NoteBook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mot_pricing-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: mot_pricing-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mot_pricing-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a1aa9d33574f50dbdd2e1ba164139b2949e8fe53c716660cca5b574a1bfcf109
MD5 462b110d580ed49ffe8e336e7753065d
BLAKE2b-256 85b450563409d6b45dc8639860354b2180a1874ba6e5ed5d9297c657b207916d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mot_pricing-0.4.1-py3-none-any.whl:

Publisher: publish-package.yml on AnouarMohamed/NoteBook

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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