Not investment advice. MCAFax is journalism. We tally public stock calls made by other people and report how they turned out. Nothing here is a recommendation to buy or sell anything.
Summary
- MCAFax logs public stock calls from investors on X, stores the price at the moment of each call, and scores every call later against a fixed rule. Counts below are as of October 15, 2026.
- Accounts tracked on X: 138. North-star accounts on the Long-Term scoreboard: 21. Options and day-trade panel: 17 accounts (added October 15, 2026).
- Calls in the database: 648 (274 live calls, with post dates from 2025-02-07 on, plus 374 backtest calls collected from older public posts). Options calls with a stated contract: 11.
- Three scoreboards, each on its own clock: Long-Term (beat the S&P 500 at 180 days), Day Trading (direction within 1 to 5 trading days) and Options (direction by expiry, or within 5 trading days).
- Long-Term: 303 scored calls, 10 ranked callers. Day Trading: 1 scored call(s). Options: 0 scored call(s). A caller needs 15 scored calls in a category to be ranked.
- MCAFax's own daily Top Trades picks are logged as calls (18 so far) and scored with the same rules, misses included.
Definitions
- Call: A public post that names a ticker and a lean (long or short), for example "buying $XYZ" or "$XYZ puts under $100".
- Direction: long (expects the price to rise), short (expects it to fall) or neutral (a view with no lean). Neutral calls are logged but never scored. For options, direction is the lean: bought puts are logged short, a bull put spread is logged long.
- Price at call: The last official daily close at or before the post time.
- Scored call: A call whose scoring window has ended and has price data. Calls still inside their window are shown as pending.
- Win / loss: Whether the call met its category's rule (below). There are no partial wins.
- Edge: Long-Term only: the call's return minus the S&P 500's return over the same window, in percentage points, flipped for shorts.
- Category: Long-Term, Day Trading or Options. Each call is scored in one category only.
How Accounts Are Chosen and Vetted
- We look for accounts that post specific, checkable calls: a ticker, a direction and ideally a level, target, strike or expiry.
- Before adding an account we confirm through the X API that it exists and posted real calls recently, and we record its name, follower count and bio exactly as shown that day.
- Every account has notes on credibility and red flags (paid rooms, affiliate codes, self-reported returns). Red flags are kept in our database, not hidden.
- Excluded: copycat accounts that copy another trader's name, bio or posts; accounts claiming returns like 20% a day; accounts that copy-paste another account's trade plans; marketing and news accounts; and unusual-options-flow reporters, because flow shows someone else's trade, not the poster's call.
- Long-Term north stars were selected with a one-year backtest of their public calls before being added to the scoreboard. Accounts can be removed for brand-safety reasons; their logged calls stay in the database.
What Counts as a Call, and What Is Skipped
Logged: a named ticker plus a lean, posted publicly with a link we retrieved. A post naming two tickers becomes two calls. Options details (calls or puts, strike, expiry) are recorded only when stated.
Skipped: jokes; general macro views with no ticker; news reposts; two-sided watchlists ("calls above X, puts below Y") because they have no lean; after-the-fact "I called it" posts and profit screenshots; and flow reports of other people's trades.
Repeats: a repeat of the same call is marked as a reiteration and counted once, unless the author changes direction.
Price at Call and Timestamps
- Post time is stored in UTC from the X API, to the second.
- Price at call = the exchange's daily close on the post date if the post went up after that market's close; otherwise the previous trading day's close. US close = 4:00 p.m. ET.
- This means a pre-market post never gets credit for that morning's move.
- Prices come from Yahoo Finance daily bars: split-adjusted, not dividend-adjusted, in the listing currency (recorded with each call). If the lookup fails, the field is left blank and the call is not scored. We never estimate a price.
- A daily close is used only after the session ends; partial intraday bars are never used for scoring.
Scoring Rules by Category
Long-Term
raw = close(post + 180 calendar days) / price_at_call - 1
bench = same for the S&P 500 (^GSPC), same dates
edge = raw - bench (long)
edge = bench - raw (short)
WIN if edge > 0, else LOSS. Merger arb: scored at deal close.
If day 180 is not a trading day, the next trading day's close is used. Calls younger than 180 days are shown as provisional and do not count toward records or ranks.
Day Trading
base = price_at_call; s = +1 (long) or -1 (short)
WIN if (close_1 - base) * s > 0 (first close after the post)
or if (close_k - base) * s > 0 for any k = 2..5 trading days
intraday-tagged calls: close_1 only
otherwise LOSS (decided after the 5th close)
Options
expiry stated: WIN if (close_at_or_before_expiry - base) * s > 0
no expiry: same 5-trading-day rule as Day Trading
We score the direction of the underlying stock, not the option's premium, because option prices are not reliably public. A call can be right on direction and still lose money on the option.
The 15-Call Ranking Threshold
A caller is ranked in a category only after 15 scored calls in that category. Below 15, we show their record without a rank and label it "building track record". Long-Term ranks are ordered by 100 x win rate + average edge (each call's edge capped at +/-50 points). Day Trading and Options ranks are ordered by the shrunk win rate (wins + 5) / (scored + 10).
Caller Weights (Shrinkage Formula)
Top Trades counts each caller's vote with a weight based on their record in the matching category.
n = scored calls in the category, K = 10, baseline = 0.50
raw = clip(2 x wins / n, 0.25, 1.75) (a 50% record = 1.0)
weight = baseline x K/(n+K) + raw x n/(n+K)
ranked callers (15+ scored): weight x 1.10
no scored calls yet: weight = 0.50
Worked example (made-up numbers, for illustration only): a caller has 12 wins in 20 scored day trades.
raw = 2 x 12/20 = 1.20
weight = 0.50 x 10/30 + 1.20 x 20/30 = 0.167 + 0.800 = 0.97
ranked (20 >= 15): 0.97 x 1.10 = 1.06
A brand-new caller with 1 lucky win gets 0.50 x 10/11 + 1.75 x 1/11 = 0.61, so one good call cannot dominate.
Caller Status: Positive, Negative (Consensus Only) or Building
Every caller has a status in each category, recomputed from the scoreboard after every trading day's close:
shrunk win rate = (wins + 5) / (scored + 10)
positive : 15+ scored calls AND shrunk win rate above 50%
(Long-Term also needs average edge vs the S&P 500 above zero)
negative : 15+ scored calls and not positive -> consensus only
building : fewer than 15 scored calls, or none yet
- Positive callers vote with their full weight and can put a trade on the list.
- Negative callers never put a trade on the list. When one makes the same call (same ticker and direction) as a positive caller, it adds a consensus bonus of 0.15; all negative callers together add at most 0.50. When they disagree with a trade, they subtract nothing.
- Building callers vote with the shrinkage weight above (0.50 with no scored calls) and can put a trade on the list. We allow this because the Day Trading and Options scoreboards started on October 15, 2026 and almost nobody has 15 scored calls there yet; without it those lists would be empty.
- No manual step: a negative caller whose record turns positive gets full weight back on the next daily rescore, and a positive caller whose record slips becomes consensus only.
Current counts (callers with a scoreboard row):
| Category | Positive | Negative (consensus only) | Building |
|---|---|---|---|
| Long-Term | 6 | 4 | 11 |
| Day Trading | 0 | 0 | 3 |
| Options | 0 | 0 | 6 |
Each caller's status is listed on the three ranking pages. Top Trades uses the Day Trading status for day trades and the Options status for options moves.
How Top Trades Aggregates Votes
- Take every long or short call posted in the 48 hours before the 9:30 a.m. ET open.
- Split into Options (post names calls, puts or a spread) and Day (all other US-listed calls; intraday and swing calls listed first).
- For each ticker and direction, count each caller once:
P = positive callers on this side, B = building callers on this side, N = negative callers on this side
qualifies only if P or B has at least one caller (negative callers never originate)
bonus = min(0.50, 0.15 x count(N)) only when P has at least one caller
score = sum(weights of P and B) + bonus
- 0.5 x sum(weights of positive and building callers on the other side)
(negative callers on the other side subtract nothing)
- Keep scores above zero, rank, and show up to 10 per list. If fewer than 10 qualify, the list is shorter and says so.
MCAFax's Own Calls
Each day's Top Trades picks are logged as calls under the handle MCAFax, with the same price-at-call rule (post time = 9:29 a.m. ET, so the price is the prior close). Day picks are scored on the Day Trading rule and options picks on the Options rule. MCAFax never votes in its own lists, and it is shown in a separate house row on each ranking page, never ranked against the callers.
| Category | Scored | W-L | Pending |
|---|---|---|---|
| Day | 0 | 0-0 | 10 |
| Options | 0 | 0-0 | 8 |
MCAFax calls logged so far: 18. The first picks were logged October 15, 2026, so no house record exists yet.
No Edits After the Fact
Our rule: once a call is logged, its ticker, direction, post link, post time and price at call are never changed. We only add outcome fields when the call is scored. If an author reverses a call, the original is marked superseded and the reversal is logged as a new call. When we added options and horizon fields on October 15, 2026, earlier calls were filled only where the original post text stated them. Misses are never removed. One note for full disclosure: during the October 2026 setup, an early backtest script rebuilt the backtest rows; it has been retired, and backtest rows are now insert-only.
Data Limits
- Small samples. Most callers have fewer than 15 scored calls in a category. Day Trading and Options started October 15, 2026, so those boards are still building.
- Backtests. Backtest calls were collected from public posts after the fact for a fixed window. We may have missed posts, and accounts were picked partly because they post specific calls.
- Coverage. We only see what accounts post publicly and what our searches find. Deleted posts after logging are kept as logged.
- Prices. Daily closes only, split-adjusted, not dividend-adjusted. Intraday highs and lows are not used.
- Options. We score the stock's direction, not the option's profit. Most posts give no expiry or strike.
- Judgment. Deciding whether a post is a call involves human judgment. The rules above are applied consistently, and every call links to the original post so readers can check.
Update Cadence
- Every trading day after the close: new calls logged, all three scoreboards rescored, ranking pages refreshed.
- Every trading day before 9:30 a.m. ET: Top Trades built and MCAFax's picks logged.
- Account profiles rechecked monthly.
Not investment advice. Past results do not predict future ones.