Longevity bond pricing and mortality modeling toolkit
Project description
๐งฎ PyMORT โ Longevity Bond Pricing & Mortality Modeling
A teaching-size Python library and CLI for pricing longevity-linked securities and modeling mortality risk.
๐ฆ PyPI package: https://pypi.org/project/pymort-palqc/
โจ Overview
PyMORT provides a compact yet extensible framework for mortality modeling and longevity-linked security pricing.
It is designed for educational and research purposes within the Data Science & Advanced Programming MSc course (HEC Lausanne, Winter 2025).
๐ฆ Key Features
Mortality Models
- Lee-Carter model for mortality forecasting
- Cairns-Blake-Dowd (CBD) model extensions
- Age-Period-Cohort models
- Stochastic mortality projections
Pricing Instruments
- Longevity bonds (survivor-linked coupons)
- Survivor swaps and forwards
- q-forwards (mortality derivatives)
- Annuity valuations
Risk Analysis
- Scenario analysis and stress testing
- Sensitivity to mortality parameters
- Hedging strategy optimization
- Mortality surface visualization
Core Tools
- CLI and Python package modes
- Full test coverage (80%+) with pytest and hypothesis
- Type safety via strict mypy configuration
- Reproducible builds using Makefile targets
๐ Project Structure
pymort/
โโโ src/
โ โโโ pymort/
โ โโโ analysis/ # Mortality analysis & risk tools
โ โ โโโ bootstrap.py
โ โ โโโ fitting.py
โ โ โโโ projections.py
โ โ โโโ reporting.py
โ โ โโโ risk_tools.py
โ โ โโโ scenario.py
โ โ โโโ scenario_analysis.py
โ โ โโโ sensitivities.py
โ โ โโโ smoothing.py # CPsplines-based smoothing (optional)
โ โ โโโ validation.py
โ โ
โ โโโ interest_rates/ # Interest-rate models
โ โ โโโ hull_white.py
โ โ
โ โโโ models/ # Mortality models
โ โ โโโ apc_m3.py
โ โ โโโ cbd_m5.py
โ โ โโโ cbd_m6.py
โ โ โโโ cbd_m7.py
โ โ โโโ gompertz.py
โ โ โโโ lc_m1.py
โ โ โโโ lc_m2.py
โ โ โโโ utils.py
โ โ
โ โโโ pricing/ # Pricing of longevity-linked instruments
โ โ โโโ hedging.py
โ โ โโโ liabilities.py
โ โ โโโ longevity_bonds.py
โ โ โโโ mortality_derivatives.py
โ โ โโโ risk_neutral.py
โ โ โโโ survivor_swaps.py
โ โ โโโ utils.py
โ โ
โ โโโ visualization/ # Plotting & diagnostics
โ โ โโโ fans.py
โ โ โโโ lexis.py
โ โ
โ โโโ cli.py # Command-line interface
โ โโโ lifetables.py
โ โโโ pipeline.py # High-level pricing & sensitivity pipeline
โ โโโ utils.py
โ โโโ _types.py
โ โโโ py.typed # PEP 561 typing marker
โ
โโโ streamlit_app/ # Interactive Streamlit application
โ โโโ App.py
โ โโโ pages/
โ โ โโโ 1_Data_Upload.py
โ โ โโโ 2_Data_Slicing.py
โ โ โโโ 3_Fit_Select.py
โ โ โโโ 4_Projection_P.py
โ โ โโโ 5_Risk_Neutral_Q.py
โ โ โโโ 6_Pricing.py
โ โ โโโ 7_Hedging.py
โ โ โโโ 8_Scenario_Analysis.py
โ โ โโโ 9_Sensitivities.py
โ โ โโโ 10_Report_Export.py
โ โโโ assets/
โ โ โโโ logo.png
โ โโโ .streamlit/
โ โโโ config.toml
โ โโโ secrets.toml
โ
โโโ cpsplines/ # External CPsplines dependency (optional)
โ โโโ README.md # Install notes & Python โฅ 3.12 requirement
โ
โโโ tests/ # Pytest suite (โฅ80% coverage)
โ
โโโ validation_against_StMoMo/ # External validation vs R (StMoMo)
โ โโโ stmomo_fit_cbd.R
โ โโโ stmomo_fit_lc.R
โ โโโ validate_vs_stmomo.py
โ โโโ outputs/
โ
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # CI: tests, coverage, ruff, mypy
โ โโโ release.yml # Build & PyPI release
โ
โโโ .coverage # Local coverage database (gitignored)
โโโ coverage.xml # Coverage report (CI / Codecov)
โ
โโโ .editorconfig
โโโ .gitignore
โโโ .pre-commit-config.yaml # Pre-commit hooks (ruff, mypy, etc.)
โโโ .secrets.baseline # Secret scanning baseline
โ
โโโ CONTRIBUTING.md # Contribution guidelines
โโโ PROJECT_SPECIFICATION.md # Technical & academic specification
โโโ README.md # Main project README
โโโ README_cli.md # CLI documentation
โโโ LICENSE # MIT license
โโโ Makefile # Developer shortcuts
โโโ pyproject.toml # Build, deps, tooling config
โโโ requirements.txt
๐ ๏ธ Development Workflow
make install-dev # Set up development environment
make check # Run all quality checks
make test # Run tests with coverage
๐ Documentation
See PROJECT_SPECIFICATION.md for full project requirements.
See CONTRIBUTING.md for development guidelines.
See README_cli.md for CLI documentation.
๐ License
MIT License - see LICENSE for details.
๐ค Author
Developed and maintained by Pierre-Antoine Le Quellec (@palqc) MSc Finance โ HEC Lausanne | Focus: Financial Data Science & Risk Analytics.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymort_palqc-1.0.6.tar.gz.
File metadata
- Download URL: pymort_palqc-1.0.6.tar.gz
- Upload date:
- Size: 147.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaebf0ef710cc02fbb490fab74f7309ce77a0c8190607a2d3589ec0f0c65e075
|
|
| MD5 |
8ee23095af8e04d008bd6bac3f3d0b78
|
|
| BLAKE2b-256 |
4c5b069be85b11507b973941c27f82db76811547b7fe400bdafcb6a36f98c3b6
|
File details
Details for the file pymort_palqc-1.0.6-py3-none-any.whl.
File metadata
- Download URL: pymort_palqc-1.0.6-py3-none-any.whl
- Upload date:
- Size: 128.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbe96011a8a4b95802e1cfefc470ad33684fc0ded3303223778ff3744147d896
|
|
| MD5 |
a997d58e51960ab14dc8401fe51cfcd0
|
|
| BLAKE2b-256 |
7bf6bd8b050e2f9e212d782cea163e6ac2a0c3a6a4b282acfee2586aae55005a
|