Quantitative Finance · Risk Analytics · Financial Data Science
I am in the final year of an MSc in Applied and Computational Mathematics at KTH in Stockholm, specialising in Financial Mathematics and graduating in Summer 2027. I build and backtest quantitative models in Python and R for market risk, credit risk, portfolio construction, and energy markets.
I came to finance after years in engineering and cost estimation. That work wasn't in finance, but the skills transfer: Monte Carlo simulation, regression modelling, forecasting, and making decisions from data.
Graduate roles in:
- Risk Analytics — market risk (VaR / Expected Shortfall), credit risk (IRB PD/LGD/EAD)
- Portfolio Management
- Financial Data Science
- Quantitative Analysis
Open to graduate positions, internships, and master thesis projects from 2027.
Programming — Python (pandas, NumPy, SciPy, scikit-learn, statsmodels, XGBoost/CatBoost/LightGBM, SHAP, FastAPI, Streamlit, DuckDB, QuantLib, openpyxl, Jupyter, pytest) · R · SQL · MATLAB · VBA
Quantitative methods — time series (ARIMA/SARIMA, GARCH/EGARCH, Prophet, LightGBM) · GLM · high-dimensional regression (Ridge, Lasso, PCR, PLS) · portfolio construction (minimum variance, equal risk contribution, maximum diversification, mean-variance, mean-CVaR, hierarchical risk parity, Black-Litterman) · covariance estimation (sample, shrinkage, factor-implied) · out-of-sample evaluation (walk-forward, paired testing, bootstrap resampling, family-wise error control) · optimisation (MILP, dynamic programming) · DCC-GARCH and copulas · commodity term structure (cost-of-carry, Schwartz–Smith) · Monte Carlo and discrete-event simulation
Financial & risk modelling — Basel III IRB (PD/LGD/EAD) · IFRS 9 (ECL, hedge effectiveness) · VaR and Expected Shortfall · Kupiec and Christoffersen backtesting · credit scorecards · insurance pricing · hedging and structured products (zero-cost collar, Black-76) · xVA (EE/EPE/PFE, CVA) · performance attribution (Brinson-Fachler and factor views) · risk budgeting (Euler volatility contributions) · turnover and cost analysis · stochastic calculus
Tools — Docker · Terraform · Tableau · Advanced Excel · Git/GitHub · Claude Code agent workflows
| Project | Description | Stack |
|---|---|---|
| portfolio-workbench | Out-of-sample methodology comparison for a European UCITS multi-asset mandate. Six construction families (minimum variance, equal risk contribution, maximum diversification, mean-variance, mean-CVaR, hierarchical risk parity) are crossed with four mean inputs, three covariance estimators and one constraint set, over 20 pre-registered runs on a 2010–2026 panel whose as-of gate blocks look-ahead. Every cell is tested out of sample against the policy benchmark under a family-wise bar and bootstrap resampling. The families separate by tracking error; the cells carrying a mean input are the only ones ahead of the benchmark after cost, and the sample's leader keeps the sign of its advantage in 95.9% of resamples but not its rank. Brinson-Fachler and factor attribution run beside an Euler risk budget measured against the mandate's declared split. | Python |
| Project | Description | Stack |
|---|---|---|
| systematic-futures-lab | Systematic futures method-comparison lab on 16 CME roots, 2010–2024Q1. Trend, cross-sectional momentum, carry and seasonality face two LightGBM variants through one accounting engine, one cost model and a single out-of-sample read across a 0/2/5/10 bps cost ladder. Once costs are charged, cross-sectional momentum is the only family positive in every sub-period and in both windows (0.406 in, 1.174 out at 2 bps). Both ML variants clear the pre-declared decision rule inside the window (DSR 0.9989/0.9999) and fail it out of time, which the repo reports as the finding rather than retuning. Deflated Sharpe and purged, embargoed folds price the search; 123 tests. | Python |
| credit-risk-model-validation-workbench | Regulatory credit-risk and model-validation workbench. It runs an IFRS 9 expected-credit-loss pipeline and an independent validation over a frozen Freddie Mac cohort: PD/LGD/EAD, staging, six-effect reconciliation, governance, monitoring, and a causal and fairness analysis. 35 modules, 190 tests, mypy --strict clean. |
Python |
| aml-workbench | AML transaction-monitoring workbench on public data (Elliptic and IBM HI-Small). A rule-based scenario engine and graph features are challenged by a GNN/GBM model under strict-inductive temporal walk-forward validation (PR-AUC 0.907). PSI drift monitoring and precision@k alert economics feed a Streamlit triage console. | Python |
| nordic-power-market-risk | Decision and risk system for a battery in the Swedish SE3 zone. A MILP dispatches energy and reserve capacity (FCR/aFRR/mFRR) across day-ahead, imbalance and reserve markets; CVaR and drawdown limits gate every schedule, which then settles against observed prices. Probabilistic quantile forecasts (LEAR) feed the optimizer. The walk-forward P&L nets EUR 483,956 against EUR 86,516 for a heuristic benchmark. | Python, Docker |
| credit-risk-pipeline | Basel III IRB credit scoring pipeline. CatBoost, XGBoost and LightGBM PD models reach 0.58 out-of-time Gini, with SHAP explanations for adverse action, served through FastAPI and Streamlit. | Python |
| lgd-ead-irb-modelling | IRB LGD and EAD capital models for Fannie Mae mortgages, built to CRR/EBA requirements, with a live Streamlit validation dashboard. | Python |
| var-es-risk-engine | FRTB-aligned VaR and Expected Shortfall engine. GARCH volatility estimates feed Kupiec and Christoffersen backtests, which a Streamlit dashboard reports. | Python |
| Project | Description | Stack |
|---|---|---|
| pricing-model-validation | Numerical derivatives-pricing and model-validation core. Monte Carlo, finite-difference PDEs, Greeks and SABR/Heston calibration are each challenged against closed forms and QuantLib, and the results go into an SR 26-2-style validation report. | Python |
| fixed-income-curve-engine | Yield-curve construction and fixed-income pricing built from scratch in Python and cross-checked against QuantLib. It covers term-structure models (Hull-White, G2++), SABR volatility smiles and Svensson calibration, then measures interest-rate risk with DV01, duration and convexity, key-rate duration, and delta VaR/ES. | Python |
| Option_Pricing | Black-Scholes pricing and Greeks from first principles, calibrated to OMXS30. Analytical and finite-difference Greeks, implied-volatility inversion, a volatility surface, a CRR binomial cross-check, the American early-exercise premium, and delta-hedging P&L. | Python |
| Continuous-Time-Markov-Chains | Continuous-time Markov chain model of ferry reliability under competing maintenance strategies, validated by two independent simulation approaches. | MATLAB |
| Project | Description | Stack |
|---|---|---|
| cross-commodity-energy-trading | Spread economics, DCC-GARCH correlation and t-copula VaR across Brent, TTF gas, EUA carbon and European power, which together measure portfolio tail risk and cross-commodity spreads. | Python |
| commodity-hedging-workbench | Commodity hedging and structuring workbench that extends the Citi MQA Forage simulation onto frozen ICE coffee data. Cost-of-carry calibration uses a Schwartz–Smith two-factor fit and GARCH(1,1) working volatility. A zero-cost collar cuts a coffee roaster's 95th-percentile cost peak by 58%, and a capital-protected note is priced by Black-76 against antithetic Monte Carlo. Historical VaR/ES carries a bucketed CVA layer, all under SR 26-2-style validation with SHA-256-frozen data gates. | Python |
| nordic-electricity-forecasting | Day-ahead Nord Pool price forecasting with a ten-model comparison ranked on an accuracy-versus-compute Pareto frontier. Gradient-boosted trees, foundation, deep and classical models run on leakage-free features with expanding-window backtests, scored by CRPS and pinball loss, and separated by Diebold–Mariano tests. | Python |
| Austrian-Daily-Electricity-Load-Forecast | ARMA modelling and a 31-day out-of-sample forecast of Austrian electricity load, with model diagnostics and forecast evaluation. | Python |
| Project | Description | Stack |
|---|---|---|
| google-stock-volatility-forecasting | ARMA mean dynamics plus GARCH volatility clustering on Google stock returns, with volatility forecasts and residual diagnostics. | Python |
| glm-insurance-pricing | Multiplicative Poisson and Gamma GLMs for pure-premium insurance pricing, with model selection and rate relativities. | Python |
| high-dimensional-regression | PCR, PLS, Ridge and Lasso with multi-split inference on a 4,088-predictor genomics dataset, which compares the shrinkage methods on prediction error. | R |
| spare-parts-optimization | Minimises expected backorders under a budget constraint using marginal allocation and dynamic programming. | MATLAB |
| Instacart | Customer segmentation and market-basket analysis on Instacart orders, with clustering and association rules. | Python |
| Customer-Analytics-Preparing-Data-for-Modelling | Cleaning, feature engineering, and validation of messy customer data for modelling. | Python |
Early data-science work: Exploring-Airbnb-Market-Trends · Analyzing-Crime-in-Los-Angeles · Investigating-Netflix-Movies · Visualizing-the-History-of-Nobel-Prize-Winners · Python-Data-Cleaning
Project Engineer (2021–2025) Coordinated a USD 5.59M ERP upgrade with zero downtime; applied Six Sigma DMAIC to raise radio-system reliability from 72.15% to 99.46%.
Estimator (2018–2021) Built a VBA Monte Carlo cost model that replaced commercial software; produced bid benchmarks used across the portfolio.
Management Trainee (2017–2018) Built regression-based battery-lifetime models adopted as the facility's standard replacement-planning tool.
- MSc Applied and Computational Mathematics (Financial Mathematics) — KTH Royal Institute of Technology, 2025–2027 · GPA 4.06/5.00
- MBA — Institut Teknologi Bandung, 2020–2021 · GPA 4.00/4.00, Cum Laude
- BSc Electrical Engineering — Universitas Indonesia, 2012–2016 · GPA 3.67/4.00, Cum Laude
CFA Level I candidate (Aug 2026) · Project Management Professional (PMP) · PRINCE2 Practitioner · Six Sigma Green Belt · Qualified Risk Management Officer
Indonesian (native) · English (full professional) · Swedish (beginner)