Cracking Robinhood’s Factor Code with AI in Cursor

By Dave Wang

I made a killer trade in March putting a significant portion of my portfolio in Robinhood. It's up >70% since!

(My original $HOOD thesis I put out publicly 2 months ago is here if you're interested in reading: https://shorturl.at/FKddO)

A key question I had for myself was WHY Robinhood's stock has been killing it in the last ~60 days.

Am I lucky?

Was my thesis correct?

Were returns attributable to something else I didn't see?

Studying your own investment processes and track record is important so that you can replicate it again. I spent time this week to break down the 5 Fama-French factor returns of Robinhood:

  • Market Risk (Rm-Rf): The excess return of the overall market portfolio over a risk-free rate, capturing the systematic risk inherent in the market.
  • Size (SMB): The difference in return between portfolios of small-cap stocks and large-cap stocks. This factor captures the tendency for smaller companies to historically outperform larger ones.
  • Value (HML): The difference in return between portfolios of high book-to-market ratio (value) stocks and low book-to-market ratio (growth) stocks. This factor reflects the historical observation that value stocks tend to outperform growth stocks.
  • Profitability (RMW): The difference in return between portfolios of companies with robust operating profitability and those with weak profitability. Higher profitability is associated with higher expected returns.
  • Investment (CMA): The difference in return between portfolios of companies that invest conservatively versus those that invest aggressively. Aggressive investment strategies are associated with lower expected returns.

I ONLY used AI coding tools and built a sexy interactive dashboard .... All of this project is done in Cursor with 0 lines of code written myself.

Here's our gameplan:

  1. Prompt for library setup
  2. Prompt for data ingestion
  3. Prompt for factor exposure calculation
  4. Prompt for rolling regression
  5. Prompt for attribution notebook
  6. Prompt for comps / peer comparison
  7. Prompt for sexy Streamlit dashboard

The Prompt:

Prompt for library setup

You are a top tier data scientist specializing in equities. Build a fresh project folder with this layout: .
├── data/
├── notebooks/
├── src/
└── requirements.txt
Create a Python venv in `.venv` and write a bash script `setup.sh` that:
1. Activates the venv
2. Installs pandas numpy scipy statsmodels yfinance pandas‑datareader matplotlib seaborn scikit‑learn jupyterlab Return `setup.sh` and `requirements.txt` contents only.

Prompt for data ingestion

Generate fetch_data.py that:
1. Accepts `start_date`, `end_date`, and `ticker` args (default ticker="HOOD").
2. Pulls daily adj close for the ticker using yfinance.
3. Downloads Fama‑French 5 factors + Momentum + Risk‑free rate from Ken French website via pandas‑datareader.
4. Saves two CSVs to `data/`: `hood_prices.csv`, `ff_factors.csv`. Include a `main()` that runs for 2019‑01‑01 through today.
Create 01_data_check.ipynb that:
1. Loads the two CSVs.
2. Plots ticker price and the six factor returns on two subplots. Return the full notebook JSON.

Prompt for factor exposure calculation

Write prep_returns.py that: 1. Loads hood_prices.csv and computes daily pct change. 2. Subtracts daily RF from the pct change. 3. Joins to factor dataframe, aligning on date. 4. Outputs hood_excess_and_factors.csv.

Prompt for rolling regression

Create rolling_ols.py that: 1. Loads hood_excess_and_factors.csv. 2. Runs 60‑day rolling OLS of HOOD excess return on the six factors using statsmodels. 3. Saves a CSV rolling_betas.csv with Date and betas.

Prompt for attribution notebook

Build 02_attribution.ipynb that: 1. Loads rolling_betas.csv and ff_factors.csv. 2. Multiplies daily factor returns by same‑day betas to estimate contribution. 3. Cumulatively sums each contribution. 4. Plots stacked area showing cumulative return vs contributions. Return notebook JSON.

Prompt for comps / peer comparison

Generate peer_compare.py that: 1. Accepts a list of tickers (default [“HOOD”,”SQ”,”COIN”,”IBKR”,”SOFI”]). 2. Pulls trailing twelve‑month Revenue CAGR, P/S, ROE, Beta via yfinance fundamentals. 3. Standardizes each metric to z‑scores, writes peer_style_table.csv.

Prompt for sexy Streamlit dashboard

Create app.py for Streamlit that: 1. Loads all CSV outputs. 2. Shows three tabs: Price & Factors, Rolling Betas, Attribution. 3. Adds a sidebar selector for look‑back window.

The Result

https://davidwang95-hood-factor-analysis-srcapp-eoihf3.streamlit.app/

Check out the interactive app above!

What's the conclusion?

  • Rates tail-wind dominates. Almost all of March’s gain came from the rates factor. The brokerage’s net-interest revenue scaling with T-bill yields is doing the heavy lifting.
  • Quality head-wind. The negative RMW slice shows investors still penalize HOOD for thin GAAP profitability.
  • Market beta a drag. Broad equities slipped in mid-March, pulling the tiny Mkt-RF exposure slightly negative.
  • Negative alpha. After stripping out factor moves, HOOD still under-performed by roughly 15 % of the total move, hinting at firm-specific concerns (e.g., regulatory noise, competitive worries).
  • Rates proxy, not high-beta fintech. With β_RF ~ 0.20 and β_Mkt ~ 0.03, HOOD trades more like a floating-rate bond sleeve than a typical growth stock right now.
  • Unprofitable-growth discount lingers. The negative RMW and HML betas confirm the market is still grouping HOOD with low-earnings, high-multiple names.
  • Alpha still negative. Even after accounting for factors, the stock under-delivered. Management catalysts or earnings beats must offset that.
  • Factor-level risk. If Treasury yields roll over, most of March’s positive attribution disappears. Portfolio hedges against a rate-cut scenario would help.

New Posts!

Here are some AI investing resources I put out last week:

If you made it this far, forward this to a friend who might find this helpful

Get one high impact AI prompt every week

Join thousands of smart investors.

2026 — Built by Dave Wang. Not financial advice, only for educational purposes.