ORIN
Sign in
Reference

Limits and thresholds, in one place

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

Related

ORIN is analysis software, not investment advice. Markets carry risk of loss. Read the risk disclosure.