BSc Financial Management (final year) · Quant Finance × Econometrics × AI · Building an honest, reproducible Python research portfolio for graduate study in quantitative finance / financial engineering / econometrics.
I build small, end-to-end research studies on real public data — each repository is a complete cycle: data acquisition with provenance → methodology → offline-tested code → real run with committed results → cautious interpretation with explicit limitations. I care as much about documenting what doesn't work as about positive results, because that is what honest research looks like.
Timeline. Built in a focused sprint (October 2026) and released as v1.0.0; individual repositories document their own methodology and limitations. No fabricated history.
⚠️ Scope. Everything here is educational research — a record of methods I studied and evaluated on public data. Nothing is investment advice, nothing is a production trading system, and I make no claim that any method here "beats the market." Several of my headline results are honest null results.
| # | Repository | Focus | Headline (real, committed result) |
|---|---|---|---|
| 01 | finance-data-analysis-lab | Returns/risk analytics & diagnostics on 7 large caps + SPY (2018–2026) | JB rejects normality for all 8 series; log returns stationary (ADF); SPY Sharpe 0.82 |
| 02 | macro-forecasting-lab | US inflation & unemployment forecasting (FRED), rolling-origin evaluation | Inflation h=1: all 7 candidate models significantly beat seasonal-naive under the corrected (h−1) HAC bandwidth (raw DM p ≤ 0.00035, survives the 28-comparison family correction) · unemployment h=12: no model significantly beats seasonal-naive and OLS is significantly worse — both reported honestly |
| 03 | ml-market-prediction-study | Leakage-free walk-forward ML on SPY direction (2010–2026) | Null result: no model beats the majority baseline (best ROC-AUC 0.502); GBM significantly worse (Holm p=0.011) |
| 04 | portfolio-optimization-lab | Mean-variance, risk parity, tangency; walk-forward OOS net of costs | Equal-weight 1/n wins OOS net of costs (net Sharpe 1.005 vs 0.957 max-Sharpe) — replicates DeMiguel et al. (2009) |
| 05 | credit-risk-modeling | Probability of default (UCI, 30k rows): calibration, cost-based thresholds, fairness | GBM ROC-AUC 0.778 (raw) / KS 0.416 (calibrated; raw-model KS 0.419); calibration is an instructive null on ranking metrics |
| 06 | fraud-anomaly-detection | Fraud detection under extreme imbalance (seeded synthetic + documented Kaggle path) | ROC-AUC misleads under imbalance: all models 0.87–0.94 ROC but PR-AUC spans ≈6.5× (best: RF 0.61, with a cost-optimal threshold 0.13 selected on a dedicated validation split) |
| 07 | dl-financial-time-series | LSTM/GRU/CNN/Transformer vs baselines, strict walk-forward | Null result: every AUC ≤ 0.50; no-signal control proves a leak-free harness |
| 08 | financial-nlp-sentiment | Financial PhraseBank benchmark: VADER → TF-IDF → embeddings → FinBERT | FinBERT 0.865 macro-F1 vs embeddings 0.733 (McNemar p=2.3e-07) |
| 09 | fin-rag-research-assistant | RAG over Fed Beige Book: BM25 vs dense vs hybrid, grounded generation, refusal | Held-out BM25 Recall@5 0.83 (dev 1.00) vs dense 0.33; τ calibrated on dev, evaluated held-out; documented hallucination + refusal-failure findings |
| 10 | 🚩 finscope-ai-research | Flagship workbench unifying the portfolio's methods end-to-end | Seasonal-naive beats OLS/ridge on inflation (direction-aware DM); tangency falls back in 31/31 OOS folds |
Every repository ships with: an offline test suite (7–79 test functions per repository; 357 across the portfolio, recounted during the v1.0.0 remediation pass), ruff-clean code, GitHub Actions CI (light offline suites; heavy-model jobs documented per-repo), a 22–23-section README, a 13-section research report, real committed results (reports/), figures, CITATION.cff, MIT license.
The capstone that ties the portfolio together: a modular research workbench running the full cycle — ingestion (yfinance/FRED) → diagnostics → forecasting study → portfolio construction → VaR/ES risk reporting → an evidence-first research brief with a mandatory limitations section. It is explicitly not a trading system: it is a harness for evaluating methods and reporting findings honestly.
- Statistics & econometrics: Jarque-Bera, ADF/KPSS, Ljung-Box, OLS/ridge, ARIMA/SARIMA, Diebold-Mariano with multiple-testing correction (Holm), rolling-origin backtesting (Tashman)
- Machine learning: logistic/ridge/GBM/XGBoost/random forests, calibration (Platt/isotonic), cost-sensitive thresholds, permutation importance, McNemar tests
- Deep learning: LSTM, GRU, temporal CNN, small Transformer encoders (CPU-reproducible), early stopping, no-leakage walk-forward
- Portfolio theory: mean-variance (SLSQP), risk parity (cyclical coordinate descent), tangency + fallbacks, Ledoit-Wolf shrinkage, transaction-cost-aware backtests
- Risk: historical/Gaussian VaR & ES, drawdown analysis
- NLP/LLM: FinBERT, sentence embeddings, VADER, RAG (BM25/dense/RRF hybrid), citation-grounded generation, refusal policies, hallucination measurement
- Engineering: pytest offline suites, ruff, GitHub Actions CI, deterministic pipelines, data provenance records, reproducible figures/reports
- No fabricated data, results, or references — every number in a README comes from a committed pipeline run.
- Cautious language — "evaluating whether…", "no reliable edge found", never "AI predicts the market".
- Strict chronology in time-series evaluation (no shuffling; embargoed walk-forward) and leakage controls verified by no-signal controls.
- Costs and limitations included — transaction costs, multiple-testing caveats, proxy-metric warnings.
- Real data with provenance (FRED, Yahoo Finance, SEC/EDGAR, World Bank, UCI, Federal Reserve) — and documented pivots when sources become unavailable.
- PORTFOLIO.md — full portfolio narrative with per-repo summaries and verification instructions
- docs/graduate-portfolio-map.md — maps each repo to graduate-program skill areas
- docs/self-assessment.md — rubric-based self-assessment of the portfolio
- GitHub: @aydinmonavvari (preferred contact: GitHub issues on any research repo)
- Email: via GitHub noreply
[email protected]
© 2026 Aydin Monavvari · Code: MIT · Documents: CC BY 4.0