FORT SENTINEL — WHAT WE BUILT, WHAT WE FOUND, AND WHAT WE PREDICT
⚠ THIS IS A WORKING PAPER. WORK IN PROGRESS.
It is published while the experiment is still running, on purpose. Nothing here is a settled result. It is a live record of an instrument being built and tested in the open, and it will be updated as we work — including when it turns out to be wrong. It already carries one correction to itself, in §3.1, made the same day it was written.
Read it as a lab notebook, not a conclusion. Every number is provisional. Several findings in it have already died; those are kept in §4 rather than deleted, because a record that only remembers its wins is not a record. If you are looking for a strategy to copy, this is not that, and §5 explains why the honest answer is currently "we don't know yet, and here is exactly how we'll find out."
First published: 2026-07-26
Status: WORKING PAPER — updated continuously
Written at: Jimmy's instruction — "I want a paper on what we're doing here today… I want to write it up before we pull and load. if when we're right wrong then we can figure it out."
Mode: Pre-registration. This document is timestamped BEFORE the outcomes it describes. Its purpose is to be checked later, including against itself.
Confidence discipline: Every claim carries its sample size. Anything with an n under 20 is a direction, not a fact, and is labelled as such.
Live sources: sentinel/ in fort-central-config — the collectors, the router, and both ledgers, all readable.
0. WHAT THIS IS, IN ONE PARAGRAPH
We are not building a trading system. We are building an instrument for reading people, using the crypto market as the readout — because it is the largest continuously-recorded measure of collective human state that exists, and because money on the line means the record cannot lie for free. A small live stake ($52) exists solely as the falsifier: a read that can never be cashed out, even a little, is indistinguishable from a good story. Jimmy: "the proof that it works is making money. not something that needs to be a lot. just enough to say yes this is a real signal."
1. THE QUESTION
Jimmy's People-Driven Market Sentiment framework claims that human behaviour leads price, and the meaning lives in how signals mesh rather than in any one of them.
Two refinements arrived during the day and both changed the build:
- The market is not the subject. "we should be looking at the crypto markets as a whole… eth is just where we making moves to test." ETH is the venue. The subject is the crowd.
- The signal is not about the market. "it's around the market, the PEOPLE around the market… the one I can pick up a phone and a ceasefire is approved and CNN 2 seconds later saying breaking news." The instrument must reach the decision-makers, not the coverage of the asset.
The second correction was given four times before it landed. Every time, it was converted back into keywords. That failure is itself a finding — see §7.
2. THE INSTRUMENT AS BUILT
| layer | what it measures | source | state |
|---|---|---|---|
| Mood | crowd sentiment | Fear & Greed, daily 2018+ | live |
| Curiosity | wants to understand | Wikipedia ×4 | live |
| Intent | about to act — exchange, wallet | Wikipedia ×4 | live |
| Fear | how this goes wrong | Wikipedia ×4 | live |
| Press volume / tone | what media says | GDELT, mirrored | live |
| Market breadth / dominance / DOGE ratio | how money spreads | Coinbase ×12 | live |
| Actors | who was covered, who appeared beside whom, who went quiet | GDELT GKG | starts accumulating tonight |
| Policy uncertainty | political noise | EPU daily index | identified, not yet wired |
Everything is free, keyless, and account-less by deliberate choice: a signal a vendor can revoke is a poor foundation.
The routing layer. Each day is routed through Jimmy's Emotional Router (MER V2.0.0) — nine SongCraft families, one dominant plus support, never blended — then through HumorCraft to select the partner spine, then back through the Router as a rejection gate. This is the full ER → HumorCraft → ER route from HUMOR_CRAFTER.md, applied to markets.
3. WHAT SURVIVED
3.1 The emotion is not the signal; its authenticity is
The single most important finding of the day.
FearTender CONFIRMED −5.7% (n=12) | REJECTED +3.1% (n=9)
PeaceHolder CONFIRMED −9.9% (n=5) | REJECTED +5.7% (n=6)
Same family, same dial reading, opposite outcome depending on whether the humor register was actually present. The variable carrying information is not which feeling but real or performed.
Which means the Router is not a classifier. It is a falseness detector — as its own first line says: "I detect and audit emotional alignment… and refuse emotionally false drafting." It was read three times and used as a bin-sorter anyway.
Corollary: it sharpens fear and does nothing for greed, because nobody performs winning. Distress gets performed constantly. That asymmetry is evidence the instrument does what it claims.
CORRECTION, added the same day — this claim has a boundary. §3.6 establishes that for actors, performance is the tradeable event rather than the noise. Both are true because the subjects differ, and the distinction is load-bearing:
| subject | performed means |
|---|---|
| the crowd's emotion | no signal — performed fear predicts nothing, real fear predicts more selling |
| an actor's claim | a signal, specifically a reversion signal — price moves on it, then unwinds when nothing materialises |
Filtering performance is right when reading the crowd and exactly wrong when reading the people who move it. Anywhere below that says "performed = noise" without qualification should be read as scoped to the crowd.
3.2 The market speaks, and its grief is theatre
Run through the full route, 2,712 days:
| family | partner spine | survives pass 3 |
|---|---|---|
| RedWitness (anger) | GallowsGrace | 93% |
| ExcitementSpark | JestfulJoy | 68% |
| JoyKeeper | SlapstickSpark | 58% |
| FearTender | AnxietyAlchemist | 49% |
| RevolutionCraft | SatireSword | 49% |
| PeaceHolder | DeadpanDrafter | 45% |
| DeepCurrent (grief) | GallowsGrace | 18% |
Its anger is almost always sincere. Its grief is almost always performance. Four times in five that it reads as bereaved, the gallows register real grief requires is simply not in the room. Recorded as a clinical rule in MARKET_VOICE_SPINE.md §9: anger is admissible evidence; grief requires corroboration by behaviour before it can be believed.
3.3 Intent arrives first — and out of silence
Across 62 runways, the signal most often coming up out of quiet first is intent (23), ahead of curiosity (15), fear (8), mood (6), tone (5), press (5). People open the wallet page before the conversation happens.
But the sharper result is what precedes intent. In the 30 days before a clean intent arrival, everything measured is depressed, not neutral:
curiosity 0.154 fear 0.189 price 0.327 press 0.365 mood 0.502
Curiosity at the 15th percentile means people go to buy without having read anything first. That kills the interest → research → action model. The trigger is not informational, and therefore cannot be seen by a dataset made entirely of reading and reporting. It is either material (money arriving, or money feeling unsafe) or social-private (a group chat, a colleague). This is the strongest argument for the actor and capacity layers.
3.4 The unit beats the classifier
The FTX window read as "ExcitementSpark — people arriving before the move" while the exchange was on fire. Unfixable by tuning the taxonomy; it evaporated when the unit changed from a day to a runway (quiet → spike). The arrival order then read press → mood → tone → price → attention LAST — the story broke, the press exploded, the public caught up at the end. A day cannot show an order.
3.5 The political layer is real and was invisible
Tariff news volume ran ~2× baseline for a week, then spiked 3.79× on 2026-07-24. Fear & Greed fell 33 → 31 → 28 → 27 → 26 across exactly those days, and ETH topped at $1,934 on the 22nd — the same day policy uncertainty hit its monthly low (EPU 149, 76th percentile). EPU then hit the 100th percentile (746) on the 24th and the market rolled over.
EPU currently sits at the 97th percentile of 15,182 days. That is the regime everything else is happening inside.
None of this is visible to a pipeline whose news query is (ethereum OR cryptocurrency).
3.6 The fake premise — the performance IS the tradeable event
Arrived late in the day and is probably the most consequential thing in this paper. Jimmy, on a head of state travelling to Washington having pre-announced evidence:
"in other words, this is the market swing going up. all of this is going to be a fake premise… none of it's real in the sense that it would happen. it's only happening because of loud mouths. This is the kind of signal that I'm saying we need to be watching regularly."
The pattern:
- A high-authority actor makes a loud claim
- The market reprices on the claim, not on anything that has happened
- Nothing materialises — the premise was theatre
- The repricing unwinds, because nothing was holding it up
Truth does not determine the move. Truth determines whether the move reverts. That is what makes this a round trip rather than a direction, and it is why "was it true" is the wrong question to ask at step 1 and the only question that matters by step 4.
The detector this implies does not exist anywhere yet:
announcement spike → check for MATERIALISATION at a fixed lag → no follow-through = reversion
Both halves are in GDELT. The claim spikes on day zero; substantive coverage either follows a week or two later or the story simply goes quiet. Silence is the confirmation. It needs the actor layer (who said it — collection begins 2026-07-27) and a materialisation check (does not exist).
It also dissolves a puzzle §3.5 left open. Two 100th-percentile policy-uncertainty spikes this month produced opposite market outcomes — June 28 marked a bottom, July 24 marked a fall. Under this mechanism those are not contradictory readings; they are the same pattern observed at different points in its own cycle.
4. WHAT DIED
Recorded because a discipline that only remembers its wins is not a discipline.
- Wikipedia attention spike — artifact of overlapping 30-day windows. 46 "spike days" were ~16 events counted repeatedly. Caught by Jimmy, from his phone.
- Contrarian Fear & Greed — "be greedy when others are fearful" loses everywhere.
- The 4-regime divergence model — worse than the simple rule.
- The 54-cell combined scan — p ≈ 0.277. The method was wrong: pairwise not combined, buckets destroying magnitude, levels with no velocity, and a scan width that manufactured its own significance penalty.
- All four pre-registered Router hypotheses — failed, consistently, in the opposite direction. Cause was my own bug: price change was baked into the family scoring, so the families re-encoded momentum. The pre-registration is what exposed it.
- The variance band as a threshold shift — Jimmy's idea, tested honestly, and it washed the signal out. Their published cutoffs beat the variance-adjusted ones on both sides (fear −13.26% vs −10.01%; greed +13.86% vs +0.36% against baseline). The HOLD label survived; moving the boundary did not.
- "The Voice sharpens fear" — held at first (−10.8% believed vs −3.1% doubted) then failed its decomposition test: split the index into momentum and residual and the effect appears in neither. Downgraded from banked to provisional.
5. THE PREDICTION — pre-registered, checkable
The rule as it stands. Fire only when BOTH hold: Fear & Greed in a 20% tail (≤24 / ≥70), and the Voice CONFIRMS the routed family. Three states: ACT, HOLD (within ±3 of the line — measured, the index's own median daily change), QUIET. Horizon 30 days. Every call is written to sentinel/data/calls.jsonl and committed to git before any outcome exists.
What is predicted: confirmed-fear days underperform; confirmed-greed days outperform; HOLD days carry no signal.
What would falsify it: a live ledger of fired calls that does not beat, at minimum, doing nothing — judged on the record as logged, not on a re-run.
A known structural flaw, stated in advance. The exit and entry conditions are wildly asymmetric. Extreme fear occurred on 14 of the last 31 days; extreme greed has not occurred in months. The rule gets you out often and back in almost never — a one-way door. Replayed over the last month it sold at $1,569 on June 30, the exact low, and sat in dollars through a 20% rally: −0.4% against +19.2% for doing nothing. That is the rule working as designed and losing. It is not bad luck, it is a design defect, and it must be fixed before size ever increases.
5.1 The human ledger — opened the same day
A second ledger now runs alongside the machine's: sentinel/data/human_calls.jsonl. Jimmy's calls, logged with the same discipline — timestamped in git before the outcome exists, and written as sequences rather than directions so they can actually be wrong.
Two live entries, both pre-registered:
| logged | claim | scored |
|---|---|---|
| 13:08 UTC, ETH $1,881.80 | dip below, then close back above, both within 7 days | 2026-08-02 |
| 13:16 UTC, ETH $1,882.68 | the fake-premise round trip: swing up on the announcement, then fade | 2026-08-05 |
Each carries its mechanism logged separately from its outcome, because a call can be right for the wrong reason and only one of those is a repeatable skill.
And the two ledgers disagreed on day one. The machine's call for 2026-07-26 is no fire — F&G 26 sits in the HOLD zone and the Voice rejected the routed family. The human sees a move coming; the instrument sees nothing. That disagreement is the sharpest experiment available, because we already know the likely reason: the instrument cannot see the layer he is reading. Its news query is (ethereum OR cryptocurrency), so defence, geopolitics and actor announcements are outside it by construction — the same blind spot that hid the tariff ramp.
If the human ledger beats the machine ledger, that gap is the explanation and it names exactly what to build. If it does not, that is worth knowing too.
The honest posture: n runs 10–16 on every cell that matters. The historical average says confirmed fear runs −11.9% over 30 days. This month it ran +19%. Both are true. That is precisely why the live ledger exists rather than another backtest — a backtest can be re-run until it agrees with you; a call logged before its outcome cannot be.
6. KNOWN DEFECTS, NAMED SO THEY CANNOT HIDE
- RevolutionCraft is mis-scored. Predicted to look like breadth rising while dominance falls; breadth rises but dominance rises too. Cause: it sums "everything loud at once" including press, and press-loud includes crisis-loud, so it catches people running to Bitcoin. The predicted shape belongs to JoyKeeper and ExcitementSpark instead. (n = 173–1,079, the most trustworthy sample on the desk.)
- The idiolect is recorded but not counted. GDELT returns headline text; this pipeline has only ever taken volume and tone numbers off it. The market's own words are being thrown away.
- Actor ranking measures loudness, not decision power. The live GKG slice put a commemoration day and a monument above the UK Prime Minister, and the hour sampled skewed the geography. Volume cannot name whose phone call ends a war.
- ~100 independent observations, ever. Eight years, 30-day windows, episode clustering. Not 3,129 — about 100. A permanent ceiling on what history can prove.
- Circularity. Nearly every signal is partly downstream of price. Fear & Greed is measurably 42% momentum (r = 0.646 against 45-day, equally on both halves). Every future finding must beat a momentum control, not just buy-and-hold.
7. THE METHOD LESSON, WHICH MAY OUTLAST THE FINDINGS
Every substantive advance today came from a reframe, not from code:
| correction | what it killed |
|---|---|
| "take all the signals and COMBINE them" | one-at-a-time testing |
| "we aren't predicting, we're analyzing the signals around the market" | the p-value chase — wrong instrument entirely |
| "the families are fine, leave them alone" | rewriting the taxonomy to fit a broken test |
| "WHEN the signals happen — how does the signal buildup" | the day as the unit of analysis |
| "the market is the speaker" | the claim that the character filter doesn't port |
| "it's the PEOPLE around the market" (×4) | measuring topics instead of actors |
The code was never the bottleneck. It only started working when the question got right — and the question got right when someone who was not doing the building kept saying the same sentence until it landed.
The corollary, recorded against myself: the failure mode was not ignorance, it was conversion. Each correction was absorbed, agreed with, and then quietly translated back into the thing I already knew how to build. That is worth watching for more than any individual bug.
8. WHAT HAPPENS NEXT
- Actor collection accumulates (nightly, 03:20 UTC). Co-occurrence — who appeared beside whom — is the phone call, and needs history before an anomaly is legible.
- The actor scan converges, ranking candidates by whether their coverage precedes mood moves. Loud vs decisive.
- The materialisation detector gets built — the second half of §3.6, and the piece that turns the fake-premise pattern from an observation into something tradeable.
- The news query gets widened beyond
(ethereum OR cryptocurrency). Every blind spot found today lived outside it. - The re-entry asymmetry gets fixed before any size increases.
- Both ledgers accrue. Slowly, honestly, immune to every way today's findings were fooled.
Fort Sentinel | sentinel/ in fort-central-config | companion to SENTINEL.md (the instrument) and MARKET_VOICE_SPINE.md (the speaker) | this paper is the record against which both get judged.
APPENDIX — WHY THIS IS PUBLISHED BEFORE IT IS FINISHED
Because a paper written after the outcome is a different document from one written before it, and only one of them can be checked.
Everything in §5 is pre-registered: the rule, the horizon, the falsifier, and a structural flaw stated in advance that has already cost the strategy nineteen points in a replay. Everything in §4 died. Section 3.1 corrects itself. That is not tidy, and tidiness would be the tell.
The Fort's own standard, from a different domain entirely: never rule a boundary case on a margin smaller than the measurement's own variance. Applied to a working paper, that means publishing the uncertainty at full size rather than waiting until it can be presented as confidence.
Updates land here as they happen. If the ledger says the instrument is wrong, that will be written into this document rather than quietly around it.