Actura is an enterprise-grade actuarial platform that bridges the gap between complex risk mathematics and modern UI/UX. It provides actuaries and risk engineers with a powerful Python-based valuation engine (handling everything from Monte Carlo simulations to IFRS 17 trajectories) paired with a sleek, neo-skeuomorphic Vue 3 dashboard.
Real-time stochastic projection, tail risk (CVaR) analysis, and comprehensive reserve profiles.
A visual, node-based DAG (Directed Acyclic Graph) editor for designing insurance cash flow blueprints without writing code.
- 🧩 Visual Logic Builder: Drag-and-drop DAG editor to map out premiums, benefits, and decrement models seamlessly.
- 📈 Stochastic Engine: Integrated Economic Scenario Generators (ESG) and advanced Monte Carlo simulations.
- 📊 Risk Analytics: Built-in calculation for BEL, VaR 95%, CVaR / CTE 95, and quantile fan-charts.
- ⚙️ IFRS 17 Ready: Automated CSM (Contractual Service Margin) mechanics and Risk Adjustment tracking.
- ⚡ High-Performance Backend: Powered by FastAPI for rapid deterministic and stochastic valuations.
- 🐳 Docker-Ready: Fully containerized architecture with Nginx reverse proxy for immediate, production-like deployment.
Actura uses a modern decoupled architecture:
- Frontend: Vue 3 SPA handling graph interactions (Vue Flow) and charting (ECharts).
- Backend: FastAPI providing REST endpoints to handle math-heavy actuarial modeling, state management, and DB interactions.
- Database: PostgreSQL (via SQLAlchemy) to store projects, blueprints, and stochastic results.
- Proxy: Nginx for static serving and routing.
See Architecture Documentation for deeper details.
Actura evaluates insurance cash flows as a Directed Acyclic Graph (DAG).
- Nodes represent financial events (e.g. premium collection, mortality decrements, expense payouts).
- Edges dictate the flow of policyholder states and cash across the timeline. The graph is compiled by the Vue 3 frontend, saved as a JSON blueprint to the database, and executed by the Python actuarial engine over projection timesteps.
See Blueprint Engine for more details.
- Project Setup: Create a new project and select an actuarial preset (e.g., 20-Year Term Life).
- Blueprint Design: In the Visual Builder, drag and drop nodes to define logic (e.g., attach an Expense node to the Inflow).
- Simulation: Hit "Run Simulation". The backend parses the DAG and generates cash flow trajectories.
- Risk Dashboard: View the aggregated results (BEL, Net Cash Flow, Stochastic Fan Charts) on the main dashboard.
- Backend: Python 3.10+, FastAPI, SQLAlchemy, NumPy, Pandas, SciPy.
- Frontend: Vue 3 (Composition API), Vite, Tailwind CSS, Vue Flow, Apache ECharts.
- Infrastructure: Docker, Docker Compose, Nginx, PostgreSQL.
- Clone the repository
git clone https://github.com/rytsia1/actuarial-valuation-engine.git cd actuarial-valuation-engine - Build and spin up the containers
docker compose up --build -d
- Access the Platform
- 🖥️ UI Dashboard:
http://localhost:3000 - ⚙️ API Docs:
http://localhost:8000/docs
- 🖥️ UI Dashboard:
For local development setup without Docker, check out Development Guide.
The backend exposes a REST API via FastAPI.
/projects/: CRUD operations for workspaces./projects/{id}/blueprints/: Blueprint DAG persistence./projects/{id}/valuations/: Trigger stochastic or deterministic engine runs.
See the full API Documentation.
Actura leverages pytest for robust numerical validation.
docker exec -it actura_postgres pytest tests/We assert calculations against standard actuarial tables (e.g., SOA ILT) to guarantee numerical precision.
- Vectorized array operations via NumPy allows for 1000+ stochastic scenarios to be run in under a second.
- Vue Flow handles 100+ DAG nodes efficiently using hardware-accelerated rendering.
- ECharts leverages Canvas/WebGL for smooth 60fps charting of large stochastic datasets.
- Export to Excel/CSV for IFRS 17 disclosures
- Collaborative real-time blueprint editing
- Integration with external ESG providers (e.g., Moody's / Barrie & Hibbert)
- Additional decrement tables support (Morbidity, Multi-state transitions)