This page collects the constants the rest of the documentation cites. Every figure here is imported from the module that defines it rather than transcribed, so a value that changes in code changes on this page in the same build.
How this page is maintained
It is generated from the code it documents. Each line below renders a value imported from the module that enforces it, alongside the file that owns it.
The alternative — a hand-written table — is the most drift-prone page a documentation property can have. It copies a dozen values at once, and nothing fails when one of them moves. This property has already been bitten by exactly that: a help article naming asset classes went false in production when a re-fit changed the underlying set, and no gate noticed.
Where a constant cannot be imported, it is described by its mechanism rather than copied as a number.
Grades and scoring
The bands, and the map that produces the score they band.
- Grade A+ — a score of 88 or above (src/lib/engine/grade.ts).
- Grade A — a score of 81 or above (src/lib/engine/grade.ts).
- Grade A- — a score of 75 or above (src/lib/engine/grade.ts).
- Grade B+ — a score of 69 or above (src/lib/engine/grade.ts).
- Grade B — a score of 62 or above (src/lib/engine/grade.ts).
- Grade B- — a score of 56 or above (src/lib/engine/grade.ts).
- Grade C+ — a score of 50 or above (src/lib/engine/grade.ts).
- Grade C — a score of 42 or above (src/lib/engine/grade.ts).
- Grade D — a score of 32 or above (src/lib/engine/grade.ts).
- Grade F — anything below 32 (src/lib/engine/grade.ts).
- Score neutral point — 52 (src/lib/engine/grade.ts).
- Score span — 44 (src/lib/engine/grade.ts).
- Minimum tradeable reward-to-risk — 1 (src/lib/engine/verdictState.ts).
Data supply
What the engine requires and what it freezes onto a read.
- Minimum bars before a read is refused outright — 60 (config/market.mjs).
- Context bars below which the grade is capped — 120 (config/market.mjs).
- Bars frozen onto the annotated chart — 140 (src/lib/engine/analyze.ts).
- Bars frozen per higher-timeframe leg — 60 (src/lib/engine/analyze.ts).
Allowances
Enforced server-side; the client only pre-checks.
- Daily analyses, free tier — 2 (api/_lib/limits.mjs).
- Daily analyses, Pro — 500 (api/_lib/limits.mjs).
- Daily analyses, Elite — 2000 (api/_lib/limits.mjs).
- Free follow-ups per read, free tier — 3 (api/_lib/limits.mjs).
- Free follow-ups per read, Pro — 10 (api/_lib/limits.mjs).
- Signed-out demo charts per local day — 1 (src/lib/onboarding/demo.ts).
Resolution and billing windows
How long things live before they settle.
- Zone resting-limit fill window, in bars — 8 (api/_lib/replay.mjs).
- Free trial, in days — 3 (src/lib/billing/config.ts).
- Past-due grace past the paid period, in days — 7 (api/_lib/limits.mjs).
- Ambiguous bar touching both stop and target — resolves as the stop.
- Gapped stop — books at the bar open. Gapped target — books at the target, never better.
Frequently asked
- Where do the numbers in the ORIN documentation come from?
- From the code, by name. Each line on the limits page renders a value imported from the module that enforces it and cites the file that owns it. A figure with no source in code does not appear on this page.
Updated Sep 1, 2026