Financial experiments in Python — interactive notebooks demonstrating key concepts in quantitative finance, portfolio theory, and risk management, built with marimo.
finance/
├── demos/ # Interactive marimo notebooks
│ ├── prices_returns.py Price series and return calculations
│ ├── normality.py Distribution analysis of returns
│ ├── annualization.py Annualizing returns and volatility
│ ├── rolling_window.py Rolling statistics and windows
│ ├── sharp_ratio.py Sharpe ratio analysis
│ ├── drawdown.py Drawdown visualization
│ ├── duration_matching.py Bond duration matching (immunization)
│ ├── value_at_risk.py Value at Risk (VaR) estimation
│ ├── efficient_frontier1.py Markowitz efficient frontier (2-asset)
│ ├── efficient_frontier2.py Markowitz efficient frontier (n-asset)
│ ├── tracking_err.py Tracking error and information ratio
│ ├── crash_correlations.py Correlation breakdown during crashes
│ ├── candle_sticks.py Candlestick charting
│ ├── valuation_multiples.py Valuation multiples analysis
│ ├── cir.py CIR interest rate model
│ ├── bond_risk.py Zero-coupon bond risk with CIR
│ └── cppi.py Constant Proportion Portfolio Insurance│ ├── cppi_liability.py CPPI vs. alternatives for liability funding├── toolkit/ # Core library
│ ├── data.py Data fetching and preprocessing
│ ├── general.py General-purpose utilities
│ ├── portfolio.py Portfolio construction & optimization
│ ├── risk.py Risk measurement and analytics
│ └── ui.py Visualization helpers
├── research/ # 🔬 Personal market research (future)
├── tests/ # Test suite
└── requirements.txt # Dependencies
- Python 3.10+
- pip
git clone <repo-url>
cd finance
pip install -r requirements.txtAll demos are marimo notebooks. To run any demo:
marimo edit demos/<notebook>.pyOr start the marimo server to browse all notebooks:
marimo edit demos/| Notebook | Topic |
|---|---|
prices_returns |
Converting price series to returns (simple & log) |
normality |
Testing whether returns follow a normal distribution |
annualization |
Scaling daily statistics to annual equivalents |
rolling_window |
Computing rolling means, volatility, and correlations |
sharp_ratio |
Risk-adjusted return measurement |
drawdown |
Peak-to-trough decline analysis |
duration_matching |
Bond immunization via duration matching with CIR |
value_at_risk |
Parametric, historical, and Monte Carlo VaR |
efficient_frontier1 |
Two-asset portfolio optimization |
efficient_frontier2 |
N-asset Markowitz mean-variance optimization |
tracking_err |
Benchmark-relative risk metrics |
crash_correlations |
How correlations spike during market stress |
candle_sticks |
OHLC candlestick charting with volume |
valuation_multiples |
P/E, P/B, EV/EBITDA and other multiples |
cir |
Cox-Ingersoll-Ross interest rate model simulation |
bond_risk |
Zero-coupon bond risk analysis under CIR rates |
cppi |
Constant Proportion Portfolio Insurance strategy |
cppi_liability |
CPPI vs. alternative strategies for liability funding |
The research/ directory is reserved for my own market research — explorations, backtests, and empirical studies beyond textbook theory. This is where future work and findings will live.
The toolkit/ package provides reusable building blocks:
data— Fetch market data via yfinance, clean and transform seriesgeneral— Math and statistical helpersportfolio— Portfolio weights, optimization, efficient frontierrisk— VaR, CVaR, drawdowns, risk decompositionsui— Plotly and matplotlib-based visualization functions
MIT © 2026 Szymon Wieloch — see LICENSE.