Every signal from every bot, ingested into one log. The coordinator applies portfolio governance — max 5 concurrent, max 1 per ticker, sector caps, regime gating — so the bots stop fighting each other. Each entry is scored against real prices. Backtested rows are seeded from the existing studies so the scorecard has real numbers from day one; live signals start logging from here forward.
| Bot | Raw n | Raw Win% | Raw mean abn | Accepted n | Accepted Win% / mean |
|---|---|---|---|---|---|
| buffett-13f-bump | 63 | 78% | +1.96% | 12 | 83% / +1.64% |
| buffett-extended-trim | 113 | 53% | +0.29% | 10 | 80% / +0.71% |
| dimon-insider-buy | 6 | 67% | +5.50% | 3 | 33% / +8.76% |
| earnings-reaction | 171 | 53% | +1.17% | 71 | 49% / +0.92% |
| openai-ripple | 9 | 67% | -3.61% | 1 | 100% / +5.31% |
| sp500-earnings-baseline | 23128 | 52% | +0.26% | 1032 | 50% / -0.04% |
| superinvestor-13f | 7545 | 49% | +0.08% | 57 | 49% / +0.21% |
| top100-13f | 75153 | 49% | +2.18% | 173 | 43% / -0.39% |
log_signal() is the hook each bot calls when it fires live — those entries
will accumulate alongside, scored forward by yfinance, and appear in this same view.
Live and backtested rows will be tagged separately.