Quantitative Researcher & Open-Source Author | Risk Magazine Quant of the Year 2024
Focused on systematic strategies, portfolio optimisation, stochastic volatility modelling, and robust statistical methods. Currently Global Head of Quantitative Analytics at LGT Private Banking. Co-originator of the Robust Optimisation of Strategic and Active Asset Allocation (ROSAA) framework and the Karasinski-Sepp log-normal beta stochastic volatility model.
For publications, speaking, and full background → artursepp.com
Over 20 years of building quantitative models — across equity, credit and rates derivatives on the sell-side, a systematic CTA, market-neutral crypto/DeFi, and now multi-asset private banking — one pattern holds: volatility regimes migrate across asset classes, and models that feel robust fail at the worst moment. These ten open-source packages are my working answer, spanning the full quant workflow from market data — prices, fundamentals and point-in-time option chains — to signal generation, factor modelling, and portfolio construction, through to performance measurement of private assets.
Developed alongside my published research, these packages provide runnable implementations of the methods described in the papers. Together, the repositories have received more than 1,000 stars and 190 forks.
New to the ecosystem? Start with qis for analytics and reporting, optimalportfolios for portfolio construction, or stochvolmodels for volatility modelling.
| Package | Concept | Version | Stars | Forks | Monthly Downloads |
Total Downloads |
|---|---|---|---|---|---|---|
| Portfolio Construction, Factor Models, Backtest Reporting | ||||||
| QuantInvestStrats (qis) | Performance analytics, backtesting and factsheets | 626 | 71 | 21k | 202k | |
| OptimalPortfolios (optimalportfolios) | Portfolio optimisation and rolling backtests | 93 | 38 | 11k | 66k | |
| factorlasso (factorlasso) | Sparse factor models with sign-constrained LASSO | 26 | 6 | 9k | 30k | |
| Volatility and Option Modelling | ||||||
| StochVolModels (stochvolmodels) | Stochastic volatility pricing and calibration | 235 | 48 | 3k | 30k | |
| OptionChainAnalytics (option-chain-analytics) | Point-in-time option-chain data and queries | 3 | 1 | 3k | 18k | |
| VanillaOptionPricers (vanilla-option-pricers) | Vectorised BSM and Bachelier pricing | 14 | 9 | 2k | 8k | |
| Dynamic Trading Strategies | ||||||
| TrendFollowingSystems (trendfollowing) | Closed-form trend-following analytics | 25 | 6 | 877 | 2k | |
| GoalBasedAllocation (goal-based-allocation) | Goal-based allocation with wealth floors | 12 | 2 | 928 | 2k | |
| Illiquid Private Markets | ||||||
| privateassets (privateassets) | Multi-factor PME for private assets | 4 | 1 | 643 | 1k | |
| Data | ||||||
| BloombergFetch (bbg-fetch) | Bloomberg data in pandas DataFrames | 19 | 8 | 2k | 40k |
Stars, forks and download counts are refreshed automatically by a GitHub Action; the version badge is live.
The packages compose into a single research workflow — market data → analytics and reporting → factor models → portfolio construction — with an options branch where vanilla pricing and point-in-time chains feed stochastic volatility modelling:
flowchart LR
fl["`**factorlasso**
factor models & covariances`"]
qis["`**qis**
analytics & reporting`"]
oca["`**option-chain-analytics**
point-in-time option chains`"]
vop["`**vanilla-option-pricers**
BSM & Bachelier pricing`"]
bbg["`**bbg-fetch**
Bloomberg data`"] --> qis
bbg ~~~ fl
bbg ~~~ oca
bbg ~~~ vop
fl --> op["`**optimalportfolios**
portfolio construction & backtesting`"]
qis --> op
fl --> pa["`**privateassets**
private-asset PME`"]
qis --> pa
qis --> tf["`**trendfollowing**
trend-following systems`"]
oca --> svm["`**stochvolmodels**
stochastic volatility models`"]
vop --> svm
qis --> svm
goal-based-allocation is a standalone research library within the broader ecosystem.
factorlasso estimates the sparse factor model and the factor covariance; optimalportfolios consumes them — together with the qis analytics engine — for portfolio construction and backtesting.
QuantInvestStrats (qis)
qis provides Python tools for financial-data visualisation, performance reporting, and quantitative-strategy analysis. It is the analytics and reporting engine behind optimalportfolios, trendfollowing and option-chain-analytics.
pip install qisFeatures:
- Backtesting engine for externally computed weights with provided instrument price, carry and cost data
- Performance reporting and factsheets: risk-adjusted tables, benchmark regressions and attribution, for multi-asset, strategy, strategy vs benchmark and multi-strategy
- Visualisation layer for financial time series built on matplotlib/seaborn
OptimalPortfolios (optimalportfolios)
Implementation of optimisation analytics for constructing and backtesting optimal portfolios in Python. Companion code to Sepp (2023) and Sepp, Ossa & Kastenholz (2026).
pip install optimalportfoliosFeatures:
- Risk budgeting, alpha-focused and benchmark-constrained optimisers
- Backtesting frameworks for roll-forward analysis with handling of incomplete and missing data
- Performance attribution
factorlasso (factorlasso)
Sparse factor model estimation with sign-constrained LASSO, prior-centred regularisation, hierarchical clustering group LASSO (HCGL) and factor-clustering group LASSO (FCGL), with integrated factor covariance assembly. Companion code to Sepp, Ossa & Kastenholz (2026) and Sepp, Hansen & Kastenholz (2026).
pip install factorlassoFeatures:
- Sign-constrained LASSO and Group LASSO via CVXPY, with prior-centred regularisation (shrink toward β₀, not zero)
- Hierarchical Clustering Group LASSO (HCGL) and Factor-Clustering Group LASSO (FCGL) with auto-discovered groups
- NaN-aware estimation for variables with different history lengths
- Consistent factor covariance assembly (Σ_y = β Σ_x β' + D), scikit-learn compatible API (fit / predict / score)
StochVolModels (stochvolmodels)
Python implementation of pricing analytics and Monte Carlo simulations for stochastic volatility models including the Karasinski-Sepp log-normal beta SV model and the Heston model. Companion code to Sepp & Rakhmonov (2023) and Sepp & Rakhmonov (2025).
pip install stochvolmodelsFeatures:
- Karasinski-Sepp log-normal beta SV model, with the Heston model as benchmark
- Factor Heath-Jarrow-Morton framework for rates with log-normal stochastic volatility
- Analytical valuation of European call and put options, and Monte Carlo simulations
VanillaOptionPricers (vanilla-option-pricers)
Python implementation of vectorised pricers and implied volatility fitters for vanilla options under Black-Scholes-Merton and Bachelier models. The pricing kernel of option-chain-analytics.
pip install vanilla-option-pricersFeatures:
- Black-Scholes-Merton log-normal and Bachelier normal option pricing
- Vectorised implied volatility fitters
- Numba-accelerated implementation
OptionChainAnalytics (option-chain-analytics)
Point-in-time option-chain containers, feed normalisation, chain reconstruction, queries and visualisation. The public data-container layer for empirical option research: pricing and implied-volatility inversion are delegated to vanilla-option-pricers, time-series and plotting utilities to qis.
pip install option-chain-analyticsFeatures:
- Timezone-aware point-in-time containers (
OptionsDataDFs,SlicesChain,ExpirySlice) with exact-time chain reconstruction and no look-ahead - Provider adapters behind optional extras — CBOE fitted chains, Deribit/Tardis crypto histories, ThetaData EOD equity/ETF reports, Bloomberg via
bbg-fetch— normalised to one schema with resumable Parquet caches - ATM-volatility and delta-skew queries, rolling vol and skew time series, and multi-page PDF chain reports
TrendFollowingSystems (trendfollowing)
Replication package for The Science and Practice of Trend-Following Systems. Companion code to Sepp & Lucic (2026).
pip install trendfollowingFeatures:
- Closed-form expected return, Sharpe ratio, skewness, and turnover of trend-following systems under white noise, AR(1), and ARFIMA processes, verified by Monte Carlo
- Three complete system implementations: European, American, and Time Series Momentum (TSMOM)
- 84-contract futures dataset spanning 1959–2026
GoalBasedAllocation (goal-based-allocation)
Analytical Laplace-transform framework for dynamic mean-variance portfolio allocation under regime-switching jump-diffusions with absorbing wealth floors. Companion code to Sepp (2026).
pip install goal-based-allocationFeatures:
- Riccati ODE system for MV-optimal policy with regime-dependent coefficients
- Terminal wealth density decomposition (survived + floor atom + overshoot), with exact buy-and-hold moments via matrix exponential
- Investment opportunity set construction with endogenous de-risking glide paths, validated against a Monte Carlo simulator
privateassets (privateassets)
Multi-factor, money-weighted PME for private-asset cash flows: generalises Direct Alpha, KS-PME and GPME from a single benchmark to a tradable multi-factor deflator, with the classical measures shipped alongside for comparison on the same cash flows.
pip install privateassetsFeatures:
- Fund reporting to alpha in one call: NAV-implied returns → AR(1) unsmoothing with bootstrap bias correction → sign-constrained factor betas → multi-factor deflator → per-vintage and capital-weighted alpha with bootstrap intervals
- Point-in-time covariance with no look-ahead, enforced by tests; provenance (versions, seed, specification) travels with every result
- Classical single-benchmark measures (Direct Alpha, KS-PME, GPME) alongside the multi-factor versions
BloombergFetch (bbg-fetch)
bbg-fetch retrieves Bloomberg prices, implied volatilities, option chains, and fundamentals into pandas DataFrames through blpapi.
pip install bbg-fetchFeatures:
- Prices, implied vols, option chains and fundamentals
- Direct
blpapiintegration

