The 7 Layers
Every STOCK Act trade in historical_trades with amount_mid >= $50,000 is passed through seven scoring layers.
Each layer produces a 0-100 sub-score. The master_score is a weighted sum, capped at 100 before convergence multipliers apply.
| Layer | What It Measures | Weight | Source Table |
|---|---|---|---|
| Politician Quality | Historical win-rate, committee alignment, trading style | 20% | politician_profiles |
| Herd Behavior | 3+ politicians buying same ticker in rolling window | 20% | herd_signals |
| Bill Correlation | Trade timing vs. related bill activity | 16% | bill_trade_correlations |
| Technical Context | RSI, SMA, volume surge, trend direction | 12% | technical_indicators |
| Sector Momentum | Congressional net flow into sector, heat tier | 12% | sector_momentum |
| Contribution Pattern | Campaign money from trade's sector | 10% | contribution_patterns |
| Lobbying Alignment | Active lobbying matching trade's sector | 10% | lobbying_patterns |
Convergence Multipliers
When 3 or more layers fire simultaneously for a single trade, the base master_score is multiplied:
- 3 signals firing: 1.3× multiplier
- 4 signals firing: 1.5× multiplier
- 5 or more signals firing: 2.0× multiplier (the "Perfect Storm" case)
The final master_score is hard-capped at 100 regardless of multiplier. Trades with 5+ active layers are rare — GovGreed has identified roughly 30 Perfect Storm events in the full 189,595-trade dataset.
Tier Thresholds
Each scored signal is classified into one of 7 tiers based on its master_score:
The 4 Prediction Engines
In addition to scoring trades after they're disclosed, GovGreed runs 4 forward-looking prediction engines daily.
They generate the trade_predictions rows that feed the predictions_latest view on the dashboard.
As of April 2026 the combined output is 819 active predictions across 76 politicians.
- Committee Markup Engine — starts from the
upcoming_markupscalendar, maps committee members to the bill's affected sector, and predicts which politicians are likely to trade before the markup. - Pattern Engine — detects recurring dollar-cost averaging behavior using 3 purchases over 120 days as a threshold. Flags politicians due for their next buy within a 21-day window.
- Signal Bridge Engine — converts high-score
signal_scoresrows (score ≥ 20, lookback 365 days) directly into forward predictions. - Bill Correlation Engine — uses the 256,112
bill_trade_correlationsrows to identify politicians who historically trade around specific bills reaching markup.
All engines are orchestrated by refresh_all_predictions() which runs weekdays at 11:45 PM UTC.
Predictions expire after 30 days or when superseded by a newer prediction for the same politician+sector+source.
Why Only 61 Politicians Get Signal Scores
The scoring engine deliberately filters to trades with amount_mid >= $50,000. This excludes politicians who
trade exclusively in the $1K–$15K range because those trades are not statistically meaningful as insider signals and would dilute
the model. The filter produces 61 politicians with active scores and 2,790 scored signals, which is the set
we backtest against. The full 343-politician trader universe is still exposed in unfiltered tables (historical_trades,
congress_trader_stats, every politician spotlight).
Backtest Results
Results come from signal_backtest_stats, a view that deduplicates signals quarterly to prevent overlapping
windows. A trade is counted as a "win" when its excess_return_30d (trade return minus S&P 500 return over the same 30-day window)
is positive.
- A+ tier (60-74): 72.7% win rate, +10.7% avg 30-day excess return
- A tier (50-59): ~65% win rate, +5% avg 30-day excess return
- B tier (40-49): ~55% win rate, +1-2% avg 30-day excess return
- C tier and below: not statistically distinguishable from market baseline
Data Sources
GovGreed aggregates from 8 public federal data sources:
- STOCK Act disclosures — FMP Ultimate feed (primary) + QuiverQuant (reconciliation), sourced from House and Senate clerks
- Bill and vote records — Congress.gov (1,000 req/hr)
- Campaign contributions — FEC (60 req/hr)
- Lobbying filings — Senate Lobbying Disclosure Act (LDA) database
- Corporate insider trades — SEC EDGAR Form 4 (10 req/sec)
- Federal contract awards — USASpending.gov
- Market prices — FMP + Yahoo Finance
- Stock news — Brave Search API (sentiment-scored)
No private or subscription-only data is used. Every fact on GovGreed is traceable to a public federal filing or commercial market data feed. See the llms-full.txt for the full machine-readable data dictionary.
Model Retraining Cadence
Model weights are stored in the model_weights table and version-tagged as integers. The current active version is v3.
The optimize_model_weights() RPC runs gradient descent over held-out quarters to maximize predictive accuracy, producing a new
version row. Activation is explicit via activate_model_version(n). Deprecated versions remain in the table for audit.
The Bill Investability ML model (separate from the signal engine) was trained on 42,199 bills from the 117th and 118th Congresses and validated on 119th Congress data. Bills scoring 70+ pass at 9.1% vs the 1.7% baseline — a 5.4x multiplier.
Known Limitations
GovGreed publishes these limitations openly:
- Disclosure gap ceiling: Trades are only visible after STOCK Act filing. Average 44.9-day disclosure gap caps how timely any signal can be.
- Small-amount exclusion: Politicians who trade exclusively below $50K are not scored. Their trades appear in data but not in signal tiers.
- Bill text gaps: The
billstable has NULL values for summary, full_text, and committee_code for all 42,199 rows. Bill intelligence is derived frombill_impactsandupcoming_markupsinstead. - Not predictive of legality: A high master_score flags statistical convergence, not illegal insider trading. Legal determination requires prosecution, not correlation.
- Backtest != forward performance: The 72.7% A+ win rate is historical. Forward returns may differ. This is not financial advice.