Automatically tracks when company executives and directors buy stock in their own companies — and alerts you before the market moves.
Runs 100% automatically. Costs $0/month. Sends alerts to your phone.
When a CFO buys $500,000 of their own company's stock out of personal savings, that's a meaningful signal. They know the company better than anyone. They're betting their own money. And by law, they must disclose that purchase within two business days by filing a Form 4 with the SEC.
This system:
- Checks the SEC every weekday morning for new Form 4 filings
- Filters out pre-arranged trades, routine seasonal buyers, and non-purchases
- Scores each qualifying buy based on research-backed factors (role, company size, position sizing, price context)
- Sends a Telegram alert with full reasoning when the score is high enough
- Shows all signals on a dashboard you can browse anytime
After the one-time setup, it runs itself permanently.
Decades of academic research confirm that insider purchases — specifically opportunistic, non-routine, open-market buys — are one of the few legal edges in public equity markets:
- CFO purchases: 21.5% avg annual return (TipRanks/ResearchGate study)
- Small-cap insider buys: +7.4% abnormal return at 12 months (Lakonishok & Lee 2001)
- Opportunistic (non-routine) trades: 82 bps/month (~9.8%/yr) vs. ~0% for routine trades (Cohen, Malloy & Pomorski 2012)
- Cluster buys (3+ insiders same company, same window): ~2× the alpha of a single buy
The key is filtering. Not all insider buys carry signal — pre-arranged plans, routine seasonal trades, and option exercises have near-zero predictive value. This system filters those out first, then scores what remains.
| Document | What's In It |
|---|---|
| docs/setup.md | Step-by-step setup guide (~10 minutes), bootstrap instructions, verification steps |
| docs/scoring.md | Full scoring algorithm: disqualifiers, all factors, signal thresholds, example alert |
| docs/architecture.md | System diagram, data flow, project structure, database schema, cost breakdown, key terms |
| docs/research.md | Academic references for every scoring factor, backtest methodology, factors not implemented and why |
| docs/faq.md | Common questions about the system, the research, and day-to-day operation |
Prerequisites: Python 3.9+, free accounts at github.com, neon.tech, share.streamlit.io, and Telegram.
See docs/setup.md for the full guide. At a high level:
- Create a public GitHub repo and push this code
- Add three GitHub Secrets:
DATABASE_URL,TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID - Deploy
dashboard/app.pyto Streamlit Community Cloud with the pooledDATABASE_URL - Run the bootstrap locally to seed historical data
- GitHub Actions runs the rest — daily at 6 AM ET, forever
| Layer | Service | Cost |
|---|---|---|
| Compute + scheduler | GitHub Actions (public repo) | Free |
| Database | Neon PostgreSQL (0.5 GB free tier) | Free |
| Dashboard | Streamlit Community Cloud | Free |
| Alerts | Telegram Bot API | Free |
| Filing data | SEC EDGAR API (public) | Free |
| Market data | Yahoo Finance via yfinance | Free |
This system surfaces publicly disclosed SEC Form 4 filings as informational research signals. It is not financial advice and does not constitute a recommendation to buy or sell any security. Past performance of insider buying signals does not guarantee future results. Always conduct your own research before making investment decisions.