Inspiration

We wanted to understand how to adjust our portfolios as per different time periods and risk profiles, and we wanted something that projected the future as opposed to merely summarizing the past.

What it does

Our code allows you to input any set of asset classes and produces the optimizations based on variance, Sharpe ratio and other metrics, recommending optimal efficient frontier portfolios and price projects using Monte Carlo simulations

How we built it: Used Python with yfinance for 16 years of real market data, numpy/scipy for covariance matrix and portfolio optimization (SLSQP), and Cholesky decomposition to simulate correlated asset returns across 1,000 Monte Carlo paths. Challenges we ran into Unconstrained optimizer piled 60% into a single asset (UUP) — had to add a 30% per-asset weight cap. Also had to ensure the efficient frontier used the same constraints as the portfolios so the dots actually landed on the curve. Accomplishments we're proud of Built a complete end-to-end pipeline including real data, three distinct optimization strategies, and a forward-looking Monte Carlo stress test — that's fully generalizable to any asset universe. What we learned Correlation structure matters more than individual asset returns. Two portfolios can have identical expected returns but vastly different risk profiles depending on how their assets move together. What's next for FinForesight

Rolling correlation windows to detect regime changes (correlations spike to 1 in a crisis) Hidden Markov Model to simulate bull/bear regimes in the Monte Carlo Live rebalancing signals when optimal weights drift from current allocation Expand beyond 8 assets to full S&P 500 universe

Built With

Share this project:

Updates