Skip to content
C

CHRONOS

Detect Regimes. Adapt Strategies. Preserve Capital

Created on 2nd February 2026

C

CHRONOS

Detect Regimes. Adapt Strategies. Preserve Capital

The problem CHRONOS solves

📊 Pitch Deck / PPT: https://docs.google.com/presentation/d/1UhT-gc1Vy55vGxnvnSx8zyUFcpVsHMz2/edit?usp=sharing&ouid=108309544140241004224&rtpof=true&sd=true

🧠 The Problem It Solves

Static portfolio models fail when markets change — CHRONOS fixes this.

Most retail investors rely on fixed 60/40 allocations or robo-advisors that treat bull markets and crashes the same way.
The result? 35% losses in March 2020 when correlations spiked to 1.0 and “diversified” portfolios collapsed together.

🚀 What CHRONOS Does Differently
Traditional Approach CHRONOS Solution
One model for all market conditions 3 specialized models, each trained exclusively on bull, neutral, or bear market data
Mean-variance optimization (1952) CVaR optimization — minimizes tail risk like hedge funds
Static “set it & forget it” allocation Dynamic regime detection — rotates defensive before crashes
Black-box AI SHAP interpretability — every decision is explainable
📈 Real-World Impact

Protects capital during market stress
2024 Rate Hike Selloff:
CHRONOS −0.62% vs SPY −1.46%

Captures upside in bull markets
14.25% total return in 2024

Democratizes institutional-grade risk management
Tools previously locked behind $1M+ minimums, now accessible to retail investors

👥 Who Uses This

Retail investors seeking hedge-fund style risk management

Financial advisors needing explainable AI for client portfolios

Researchers studying regime-switching financial markets

Challenges I ran into

🛠️ Challenges I Ran Into
⚠️ Challenge 1: Lookahead Bias (The Silent Killer)

The bug
Rolling features were created using:

rolling(window=20).mean()

without .shift(1), leaking future data into training.

How I fixed it

Enforced strict anti-leakage protocol — all features use .shift(1)

Added a validation layer in feature_engineering.py that raises a ValueError if leakage is detected

Used time-based splits only
(Train: 2019–2022 | Val: 2023 | Test: 2024)

⚠️ Challenge 2: HMM Convergence Instability

The bug
hmmlearn.GaussianHMM sometimes:

Collapsed into a single dominant regime

Failed to converge with default settings

How I fixed it

Implemented BIC-based state selection (tested 2–5 states)

Added convergence diagnostics (log-likelihood tracking)

Set random_state=42 and n_iter=1000 for stable convergence

⚠️ Challenge 3: CVaR Optimization Failure

The bug
PyPortfolioOpt.EfficientCVaR occasionally failed with
optimization infeasible due to tight regime constraints or ill-conditioned data.

How I fixed it

Added fallback heuristic allocations per regime:

Euphoria: 70 / 20 / 10 (SPY / TLT / GLD)

Complacency: 50 / 30 / 20

Capitulation: 10 / 60 / 30

Wrapped optimizer in try-except with logging
→ system degrades gracefully, never crashes

⚠️ Challenge 4: Real-Time Dashboard Performance

The bug
Streamlit app reloaded all models on every interaction → 8+ second lag.

How I fixed it

Used @st.cache_data for datasets

Used @st.cache_resource for models

Reduced HMM inference to <10ms via vectorization

Added lazy loading for SHAP plots (computed only when opened)

Tracks Applied (1)

Quantifying the Markets - Machine Learning

1️⃣ Core Track Alignment Track Requirement CHRONOS Implementation Financial data analysis Real-time processing of OHLCV,...Read More

Technologies used

Discussion

Builders also viewed

See more projects on Devfolio