1 · What this desk does

This desk trades exactly one thing on BTCUSDT: a crossing of a volume-profile VAH (value area high) or VAL (value area low), and nothing else. It polls for crossings roughly every 20 minutes and, almost every time, there is nothing to do.

Gate 1, verbatim
“unavailable”
Where the facts come from
production.silver.btc_triggers (the crossings), production.silver.btc_volume_profile_tpo (the levels) and production.silver.btc_market_data (30-minute price)

2 · The market map

A volume-profile value area A ceiling (VAH), a floor (VAL) and the fair-value point (POC) in between, with the value area shaded. VAH — ceiling POC — fair value VAL — floor
Where most trading actually happened. There are four of these maps kept live, one per granularity — 1D, 1W, 1M, 1Q.

The shaded band is the value area: where most of the recent trading happened. VAH and VAL are its ceiling and floor; POC is the single price traded the most. A crossing means price left that band — not just touched its edge.

3 · The trigger — and why almost nothing happens

How a crossing becomes a tick An upstream table computes the crossings; the poll keeps only the rows it has never seen that are still fresh; each survivor opens exactly one tick. Everything else ends the poll with no tick at all. the table computed upstream never seen? a ledger, on disk still fresh? 60 minutes one tick per crossing, oldest first already seen → NO TICK too old → NO TICK
cross_typeLevelCandidate side
vah_below_to_above VAH long
vah_above_to_below VAH short
val_below_to_above VAL long
val_above_to_below VAL short

The desk does not look for crossings. An upstream table computes them, and the poll's only job is to notice a row it has never acted on. A crossing older than 60 minutes is left alone: the move it named has already happened.

The trigger is treated as a fact, not a claim. No part of the tick re-audits whether price really crossed — that question is settled before the desk wakes up, which is what keeps the debate about what the crossing is worth rather than about whether it occurred.

The side in the table is only the candidate. It says which direction is on trial; it does not say the desk will take it.

4 · The gates it cannot pass

Checked in order, before a single chart is opened. Any one of them ends the tick — there is no analysis that can talk the desk past a gate.

the hard rules are currently unavailable

5 · One tick, end to end

The tick pipeline The poll opens a tick only on a new crossing; the trader proposes without deciding, every lens argues over two rounds, and the trader is relaunched to finalize before the desk is told. poll nothing new → NO TICK propose decides nothing the debate 1 · opening blind 2 · rebuttal sighted finalize one decision desk → order

The conductor's steps

the conductor's stages are currently unavailable

The trader's own steps

the decision-flow steps are currently unavailable

The trader runs twice per tick and is absent from the debate in between. Everything it says in the first pass is a request for evidence — anything it asserted there would become an anchor for lenses that are supposed to open blind.

6 · Who argues, and what their word is worth

the debate roster is currently unavailable

Each lens states which way the market looked to it — bullish, neutral, bearish, no_read — never whether it likes the trade. Turning that into a position for or against the candidate is arithmetic the trader does afterwards, so a lens is never asked to argue for an outcome.

Standing is by domain, not by vote

A lens counts for what it is the only one able to see. An equal vote per head would let four ways of looking at price outweigh the one reader of structure, so the weights are fixed in advance and the two binding lenses are the only ones that can open a trade.

the standing table is currently unavailable

Two rounds, and then it is over

Round one is blind: every lens gets the same snapshot and candidate plus only its own artifact, and no peer's read. Round two is sighted: each is handed every peer's opening verbatim and answers once, saying whether it holds or changes, with one line per peer. There is never a third round — a debate that runs until everyone agrees has converted disagreement into fatigue.

A lens whose chart failed to build reads no_read and costs the tick nothing. Below three lenses with a real read, the tick abstains: that is an absence of evidence, not a balanced view of it.

7 · The six lenses, in their own words

Each lens below is quoting its own definition — the file the desk actually runs. None of this is a second description written for this page, which is why a lens that is rewritten changes here on the same commit.

They all obey one shared discipline: separate what you SEE from what you THINK. What a lens can see is a number a second person could check off the same artifact; what it thinks carries the reading and the other way to read the same facts, which is mandatory. None of them is there to convince.

the lens definitions are currently unavailable

8 · Why this counts as a good debate

The design target is Ray Dalio's thoughtful disagreement: a debate whose purpose is to find what is true, not to decide who wins. Dalio names the two things that stop it — ego, which makes you defend a position because it is yours, and the blind spot, which is what your way of looking cannot see at all. Neither is fixed by thinking harder. Both are fixed structurally, by people who see differently and by rules written down before the outcome is known.

Each principle below is answered by a mechanism that is on this page, not by an intention.

The principleHow it is attacked here
The goal is what is true, not who wins A lens reports which way the market looked, never whether it wants the trade. Nobody at the table owns the position, so there is nothing to defend.
Ego The decider holds no lens. It reads no chart for signal and forms no view of its own — a chief who also analyses is one more analyst, and the only one nobody gets to rebut.
The blind spot 0 lenses, each looking at something the others cannot: structure, participation, session, price action, news. The roster is the answer to “what can I not see?”
Premature consensus destroys information Round one is blind. A read formed after seeing four peers agree is not a fifth piece of evidence, and the desk pays for independence by giving up the cheaper single round.
Open-minded and assertive Round two demands one line per peer and an explicit hold or change. Yielding politely and never yielding are both recorded as what they are.
Credibility-weighted, not one vote each The standing table in §6. Two lenses are binding, two share a single vote because they read the same thing twice, and one can only ever subtract.
Know who is who before you argue Standing is published before the tick, not negotiated during it, so no lens has to establish its authority mid-argument.
Ask what is true before what to do The two passes in §5. The proposing pass issues the request and decides nothing; direction is only touched once the evidence is in.
Turn criteria into explicit rules, then algorithms The ladder in §8 is arithmetic, not judgement: where it starts and every step down is checkable by someone who was not there.
Expected value and asymmetry, not hit rate The ladder only ever descends, a refusal is a stand-down rather than a trade the other way, and a reduced size is half of a full one. The structure is built to survive being wrong.
Do not leave a disagreement open The fourth question below forces the unresolved disagreement to be named, with who held it. A disagreement that dissolves in silence is a decision taken by omission.
Pain + reflection = progress The criteria are written before the outcome is known, and a debate that fails its own test is filed as a defect in the desk — never in the market.
It is expensive, and worth it 0 analyst runs plus two trader passes per crossing. The poll runs first precisely so that cost is only paid when there is something to argue about.
Record everything Every turn, both rounds, and the reasoning behind the call are written to the tick's own trace before the decision leaves the machine — which is what the Monitor tab is reading.

The debate is judged before it is counted

A conclusion reached badly is worth less than no conclusion, so the trader answers four questions about the argument itself before it is allowed to weigh what the argument concluded. Any one of them failing makes the debate weak, and a weak debate costs the tick a step on the ladder — it can never earn one.

the debate questions are currently unavailable

Where this desk is not yet Dalio

The open gap — credibility by track record

the standing note is currently unavailable

Standing here answers “who is the only one who can see this?” — not “who has been right before?” Dalio's weighting is the second question, and it cannot be answered without history. The desk has recorded 41 ticks so far, against roughly 30 resolved decisions per lens before a track record would mean anything. Until then, weighting by who has been right would be weighting by noise.

9 · If it trades

The two binding lenses set where the tick starts; everything else can only push it down. Nothing on this desk ever steps up.

Where it starts

the ladder is currently unavailable

Every reason it steps down

the ladder is currently unavailable

A trade carries these fields; the ones marked optional are omitted when the setup does not call for them:

  • direction
  • horizon
  • entry
  • stop
  • target_1
  • risk_reward
  • target_2 (optional)
  • trailing_pct (optional)
  • trailing_trigger_pct (optional)
  • invalidation (optional)
  • partials (optional)
Timeframe to trade-horizon ladder The crossing's own timeframe sets the trade's horizon: daily is days, weekly is weeks, monthly is months, quarterly is 6-12 months.
A crossing is traded in its own timeframe, never held as if it were a wider one.

The most recent real trade, from tick 2026-08-13T172000Z:

Most recent recorded trade card

10 · What a tick leaves behind

Every tick writes a folder, and that folder is the whole audit. It is written before the decision leaves the machine, so nothing here is reconstructed afterwards — a loss is attributable to the lens that read it wrong, months later, without anyone having to remember anything.

Read from the newest tick on disk, 2026-08-14T054000Z — so an artifact the loop stopped writing disappears from this list by itself:

ArtifactWhat it is
analyst_macd_bbands.md one participant's own reasoning for this tick, in its own words
analyst_multicomposite.md one participant's own reasoning for this tick, in its own words
analyst_news.md one participant's own reasoning for this tick, in its own words
analyst_sessions.md one participant's own reasoning for this tick, in its own words
analyst_trend_rsi.md one participant's own reasoning for this tick, in its own words
analyst_volume.md one participant's own reasoning for this tick, in its own words
breakout/ one composite chart per granularity, plus the verdicts drawn on them
broadcast.md the receipt for what was sent to the desk, verbatim
chart/ the study each chart-reading lens was handed
context.md one participant's own reasoning for this tick, in its own words
dag.json the edge to the previous tick, which is what makes the store a chain
debate.jsonl every turn: which lens, which round, its flag, its stance, its full text
debate.md the same debate as one readable transcript
decision.jsonl the decision itself — evidence, reasoning, and the trade structure
desk.md one participant's own reasoning for this tick, in its own words
proposal.json
snapshot/ every timeframe's POC/VAH/VAL and staleness at that instant, and the 30-minute closes it was read on
system.json
trader.md one participant's own reasoning for this tick, in its own words
trigger.json the crossing that opened the tick, exactly as the table reported it

The Monitor tab reads exactly this folder and nothing else. Its one write in the whole application is a price cache — it can never alter a tick it is showing you.

11 · As of now

41 ticks · last 2026-08-14T05:40:00Z

  • hold 21
  • sell 12
  • abstain 7
  • buy 1

12 · Where these facts come from

PathWhat it is
.claude/agents/trader.md the trader's own definition — [Errno 2] No such file or directory: '/app/.claude/agents/trader.md'
CLAUDE.md the conductor's own playbook — [Errno 2] No such file or directory: '/app/CLAUDE.md'
config/debate_roster.json the debate roster — debate roster not found at /app/config/debate_roster.json - the registry is required
traces/ the trace store
src/alphinity_claude_ai/trading/triggers.py the trigger vocabulary
src/alphinity_claude_ai/trading/breakout.py the breakout constants
config/system_versions.json the system version registry — system registry not found at /app/config/system_versions.json - every trade is published under a version, so the registry is required

System versions

Every published trade is a claim about a desk that existed at one moment — six lenses today, five yesterday; a mandatory-lens gate that did not exist last week. Comparing a trade from before a change against one from after it averages two different systems and calls the result performance. So each version carries a colour, and every trade card on the Performance tab wears it on its left edge. Attribution is by time: a version owns every trade from its own start until the next one begins, which is what reaches the four oldest trades, published before the trace store existed at all.

the version registry is currently unavailable