ACTUNEO is an open-source, community-driven actuarial Python library that empowers African and Zimbabwean actuaries to perform core actuarial, financial, and statistical computations with ease. The goal is to build a localized yet globally compatible toolkit that supports insurance, pensions, and investment analytics, while integrating with modern data science tools.
- mortality: Mortality tables and survival functions
- finance: Interest theory, yield curve construction/interpolation, duration, and convexity
- life: Life assurance, annuities, reserves, and premium calculations
- pensions: Contribution schedules, benefit projections, and actuarial valuations for pension schemes
- ifrs17: Insurance contract measurement models (GMM, VFA, PAA), CSM, risk adjustment, discounting
- loss_reserving: Chain-ladder, Bornhuetter-Ferguson, and stochastic reserving models
- macro_africa: Country-specific economic data connectors (inflation, GDP, currency exchange)
- simulation: Monte Carlo simulations for stochastic actuarial models
- utils: Data input-output helpers, validation, and reporting utilities
- Localized Assumptions (Roadmap): Support for market-specific mortality, inflation, and interest rate tables
- Regulatory Alignment (Roadmap): Extensible templates for regulatory reporting (e.g., IPEC Zimbabwe, PASA, SAM)
- Currency Handling (Roadmap): Multi-currency modelling (USD, ZWL, Rand, etc.) with inflation-adjusted projections
- Socioeconomic Context (Roadmap): Assumptions relevant to informal sector, microinsurance, and low-coverage environments
pip install actuneogit clone https://github.com/ShannonT20/ACTUNEO.git
cd ACTUNEO
pip install -e .pip install -e ".[dev]"import numpy as np
from actuneo.mortality import MortalityTable, SurvivalFunctions
# Create a mortality table
ages = np.arange(20, 101)
qx = 0.001 * (ages - 20) / 80 # Simplified mortality rates
mt = MortalityTable(ages, qx, name="Example Table")
# Calculate life expectancy
le = mt.life_expectancy(30)
print(f"Life expectancy at age 30: {le:.1f} years")
# Survival functions
sf = SurvivalFunctions(mt, interest_rate=0.05)
survival_prob = sf.npx(30, 20) # Probability of surviving 20 years from age 30
print(f"20-year survival probability: {survival_prob:.3f}")from actuneo.finance import InterestTheory, YieldCurve
# Interest theory
it = InterestTheory(interest_rate=0.05)
fv = it.future_value(1000, 10) # Future value of $1000 in 10 years
print(f"Future value: ${fv:.2f}")
# Yield curve
maturities = [1, 2, 5, 10, 30]
yields = [0.03, 0.035, 0.045, 0.055, 0.065]
yc = YieldCurve(maturities, yields)
yield_15y = yc.get_yield(15)
print(f"15-year yield: {yield_15y:.3%}")from actuneo.life import LifeAssurance
# Life assurance calculations
la = LifeAssurance(mt, interest_rate=0.05)
premium = la.whole_life_assurance(30, sum_assured=100000)
print(f"Whole life premium at age 30: ${premium:.2f}")
# Reserve calculation
reserve = la.reserve_whole_life(30, 5, annual_premium=1500)
print(f"Reserve after 5 years: ${reserve:.2f}")📚 Full documentation is available at https://actuneo.readthedocs.io/
The documentation includes:
- Installation Guide: Step-by-step installation instructions
- Quick Start: Get started with ACTUNEO in minutes
- Examples: Comprehensive code examples for all modules
- API Reference: Complete API documentation for all classes and functions
- Contributing Guide: How to contribute to the project
- Changelog: Version history and release notes
We welcome contributions from the actuarial community, especially from African and Zimbabwean actuaries and students. Here's how you can contribute:
- Fork the repository
- Clone your fork:
git clone https://github.com/ShannonT20/ACTUNEO.git - Create a virtual environment:
python -m venv venv - Activate the environment:
venv\Scripts\activate(Windows) orsource venv/bin/activate(Unix) - Install development dependencies:
pip install -e ".[dev]" - Run tests:
pytest
- Follow PEP 8 style guidelines
- Write comprehensive tests for new features
- Update documentation for API changes
- Add examples for new functionality
- Ensure cross-platform compatibility
- African Mortality Tables: Contribute localized mortality data and improvement models
- Regulatory Frameworks: Implement calculations for specific African regulatory requirements
- Pension Systems: Develop models for various pension scheme structures
- IFRS 17: Implement insurance contract measurement models
- Loss Reserving: Add stochastic reserving methods
- Documentation: Improve documentation and add tutorials
- Testing: Expand test coverage and add integration tests
- Basic package structure
- Mortality tables and survival functions
- Financial calculations (interest, yield curves)
- Life assurance and annuity calculations
- Unit testing framework
- Documentation setup
- Pension calculations
- IFRS 17 implementation
- Loss reserving methods
- African economic data connectors
- Stochastic simulation tools
- Machine learning integration
- Web application interfaces
- Regulatory reporting tools
- Multi-language support
Run the test suite:
pytestRun with coverage:
pytest --cov=actuneo --cov-report=htmlThis project is licensed under the MIT License - see the LICENSE file for details.
If you use ACTUNEO in your research or work, please cite:
@software{sikadi_actuneo_2025,
author = {Sikadi, Shannon Tafadzwa},
title = {ACTUNEO: African Actuarial Python Library},
url = {https://github.com/ShannonT20/ACTUNEO},
year = {2025}
}- Author: Shannon Tafadzwa Sikadi
- Email: shannonsikadi@gmail.com
- GitHub: https://github.com/ShannonT20/ACTUNEO
- LinkedIn: https://www.linkedin.com/in/shannon-sikadi-9370b3196/
- Inspired by existing actuarial libraries like
lifecontingencies,actuarialmath, andpandas - Special thanks to the African actuarial community for their support and feedback
- Built with modern Python data science tools (NumPy, Pandas, SciPy, Matplotlib)
ACTUNEO: Empowering African actuaries through open-source technology.