How Auric IQ actually works

The complete methodology, published because traders are professionally skeptical — and they should be. Last updated: 31 July 2026.

Auric IQ is a statistical engine, not a language model. Every computation described on this page runs on your device — your trades never leave it. Every number IQ shows carries its uncertainty interval and its sample size, and this page tells you exactly how both are computed. The engine ships unminified inside the app: open the app file and view source. Nothing is hidden because nothing needs to be.

0. What IQ is not

There is no LLM anywhere in the analytics path. No prompt, no generation, no hallucination surface. IQ cannot "make something up" — every claim is a computation over your recorded trades, reproducible from your own journal export. IQ also never predicts the future, never issues trade signals, and never tells you what to buy or sell. It reports what your own history shows, with error bars.

1. Units: everything important happens in R

A trade's R multiple is its profit divided by its planned risk (entry-to-stop distance × size). R makes a $200-risk trade and a $2,000-risk trade comparable, which is what lets the engine separate "you trade badly on Fridays" from "you happened to size up on Fridays." Findings are cross-checked in both dollars and R (the dual lens): a pattern that exists in dollars but vanishes in R is flagged as sizing-driven, not skill-driven.

2. The Signal tier — graded evidence from roughly ten trades

Small samples deserve estimates, not silence — but they must not be allowed to shout. Signals use an empirical-Bayes hierarchical model, fit separately per dimension (weekdays against weekdays, sessions against sessions):

μ₀ = your pooled mean R (winsorized at ±3R)  ·  σ² = within-dimension variance
τ² = between-slice variance, one-way random-effects method of moments: max(0, (MSB − MSW)/n₀)
shrinkage λₛ = (nₛ/σ²) / (nₛ/σ² + 1/τ²)
posterior mean μₛ = λₛ·r̄ₛ + (1−λₛ)·μ₀  ·  posterior variance vₛ = 1/(nₛ/σ² + 1/τ²)

The shrinkage weight is the whole point: a slice with 9 trades is pulled hard toward your overall average, so it structurally cannot produce a dramatic claim. This partial pooling also absorbs most of the multiple-comparison problem — the same reason a hundred tiny slices can't each yell.

Three honesty mechanisms sit on top:

3. The Confirmed tier — the permutation gauntlet

A finding is only Confirmed — and only earns a dollar figure — after surviving all of the following, in order:

3.1 Adaptive permutation test

The question asked is brutal and simple: "if I grabbed the same number of trades at random from this trader's own history, how often would they lose this much?" The trade set is reshuffled 1,000 times; findings near the confidence bar are re-tested at 5,000 reshuffles so borderline calls aren't coin flips. This is the core test, verbatim from the engine:

function permConfidence(segIds, all, rnd, valOf) {
  valOf = valOf || ((t) => t.pnl);
  const k = segIds.size;
  if (!k || k >= all.length) return 50;
  const vals = all.map(valOf);
  let obs = 0;
  all.forEach((t, i) => { if (segIds.has(t.id)) obs += vals[i]; });
  const idx = all.map((_, i) => i);
  const run = (IT) => {
    let asBad = 0;
    for (let it = 0; it < IT; it++) {
      let s2 = 0;
      for (let i = 0; i < k; i++) {
        const j = i + Math.floor(rnd() * (idx.length - i));
        const tmp = idx[i]; idx[i] = idx[j]; idx[j] = tmp;
        s2 += vals[idx[i]];
      }
      if (s2 <= obs) asBad++;
    }
    return (asBad + 1) / (IT + 1);
  };
  let conf = Math.round((1 - run(1000)) * 100);
  if (Math.abs(conf - 72) <= 6) conf = Math.round((1 - run(5000)) * 100);
  return conf;
}

3.2 Selection correction (the part most tools skip)

When the engine searched to find a pattern — the worst of 7 weekdays, the worst of 23 overlapping hour windows — comparing the pick against random chance alone is cheating: search enough places and something always looks bad. For searched findings the null hypothesis is upgraded to the max-statistic: each reshuffle recomputes every candidate and records the worst one. Your finding must beat what random searching produces, not what a random slice produces. These findings wear a "search-corrected" tag in the report.

3.3 Out-of-sample check

Every pattern is re-tested on your most recent 30% of trades — history that had no vote in finding it. A pattern still active there is marked holds in recent 30%; one that has weakened is marked fading recently and has its confidence multiplied by 0.85. Fading findings are honestly demoted rather than quietly kept.

3.4 Structural findings

Some findings don't need sampling at all — a loss that ran to −1.8R against a planned −1R stop is counted, trade by trade, from your fills. These wear a "measured" tag and are the strongest evidence class in the report.

4. The 72% bar, the watchlist, and expected false discoveries

Confirmed requires ≥72% confidence. That bar is deliberately not a 95% academic threshold: a journal that only ever says "insufficient evidence" is useless, and one that cries wolf is ignored. 72% trades sensitivity against false alarms — and the residual risk is disclosed, not hidden: the report footer states the expected number of false discoveries among the confirmed set (the sum of 1 − confidence across findings). Everything below the bar sits on a visible watchlist with what it's waiting for. The dimensions searched and the corrections applied are stated in the report itself.

5. Edge Replay — how dollar figures are computed

Every recoverable-dollar figure comes from a counterfactual replay of your own trade sequence with identical fills: remove the trades a rule would have removed, transform the ones it would have changed (a cut at −0.5R of heat becomes exactly −0.5R), and re-run the equity curve. The difference is the price tag. Two honesty rules:

6. The What-If Lab

The Lab replays your history under rules you choose. Because you picked the levers, its results are labelled hypotheses, not discoveries — selection-corrected findings live only in the report. The Lab refuses to model anything that would require knowing price paths after your exit (there is deliberately no "widen stop" lever), uses an unclamped bootstrap interval that is allowed to say "this makes things worse," and runs an independent out-of-sample recomputation on your most recent 30% of trades.

7. Determinism and reproducibility

Scans are deterministic: identical journal data produces identical findings, confidences and intervals, because every random draw is seeded from the data itself. Run the scan twice, get the same report — an unexplainable number would be worse than no number.

8. Verify it yourself

The entire engine ships unminified in the app file — open it and read the source; the functions on this page are in there verbatim. The test suite covers the statistics against synthetic data with known ground truth: a deliberately injected Friday-afternoon effect must be recovered within the stated interval; clean random data must produce false discoveries only at the disclosed rate; a single 12R outlier must not flip a verdict. If you find a hole in any of this, tell us — we'll fix it and credit you in the changelog.

AURIC is a journaling and analytics tool. Nothing in the product or on this page is financial, investment or trading advice; past performance — including replayed or simulated performance — does not guarantee future results.