Launching soon — TradeOnyx is still in preparation; public sign-up isn't open yet.

Onyx Patterns

Mistake pairs

Trader self-reports treat each mistake as independent ('I FOMO'd'). In practice mistakes cluster — FOMO + no-stop, revenge trade + over-sized, panic exit + broke plan. The detector surfaces the pairs so you can attack the underlying state, not the symptoms.

What it is

Mistake-pair co-occurrence counts how often two mistake-tags appear together on the same trade and reports the conditional probabilities P(B|A) and P(A|B). The asymmetry between the two conditionals is itself a signal — a rare tag that always co-occurs with a common one points to the common one as the upstream trigger.

A trade with three mistake tags contributes to all three pairs (combinations(3,2)=3). Within-trade duplicates are dropped (a 'fomo' tag applied twice doesn't pair with itself).

Formula
Approach (textbook): for each closed trade, dedupe its mistake-tag-name set, generate all sorted pairs via itertools.combinations. Per pair: count of co-occurrences. Per tag: total individual count. Conditional probabilities P(B|A) = pair_count / count(A) and P(A|B) = pair_count / count(B). Filter by per-pair count floor, per-tag individual count floor, and a max-conditional threshold.
 
TradeOnyx-internal: the minimum pair count, individual tag count, and conditional-probability threshold are calibrated empirically and not published.
Example

Across the analysis window: 'fomo' on 8 trades, 'no stop' on 7 trades. Co-occurrence on 6 trades. P(no stop | fomo) = 6/8 = 75%. P(fomo | no stop) = 6/7 ≈ 86%.

ResultCard emits with 'fomo + no stop' as the strongest pair: when this trader FOMOs, they fail to set a stop 75 % of the time; when they fail to set a stop, FOMO drove the entry 86 % of the time. The asymmetry says: FOMO is the upstream trigger. Fix the state behind FOMO entries and the no-stop discipline failure follows automatically.
How to read it

Why pairs not single tags. A trader who treats FOMO and no-stop as separate problems writes two journal rules and polices both — twice the cognitive load with half the leverage. The pair tells you ONE state is producing both symptoms. Write a single rule against the upstream state and both downstream behaviours drop simultaneously.

Reading the asymmetry. If P(B|A) >> P(A|B), then A is the upstream trigger (every time A happens, B is overwhelmingly likely; B is more independent). If P(B|A) ≈ P(A|B), the two are deeply entangled — neither is independent. If both are high, you've got a tilt fingerprint; if both are low but co-occurrence count is high, you've got a coincidence (filter says no emission).

Tier: Pro. Wave 6 (Mistake Analysis).

Where TradeOnyx uses it

How to read the card: Hero shows the strongest pair's max conditional. Table lists each pair with both conditionals (P(A|B) / P(B|A)) so you can read the asymmetry directly. Re-look monthly.

Tier: Pro.

Related reading