many.

Specification · v1 · October 2026

How MANY works.

The models, conventions, data and guarantees behind every number MANY shows. Short where it can be, exact where it matters.

01

Principles

The engine computes.

Every figure comes from one pricing engine. Screens and the agent ask for numbers; they never make them.

Every result replays.

Each calculation records its inputs, model and engine version, and reproduces to a stated tolerance on a clean machine.

Possible isn’t probable.

Scenario grids show what can happen. Only sets that carry a probability measure feed weighted metrics, and they name it.

02

Pricing

Specified · M2

European FX vanillas, priced with Garman–Kohlhagen written on discount factors, so one formula holds on any curve.

F = S · DFf(tdel) / DFf(tspot)DFd(tdel) / DFd(tspot)
V = N · DFd(tdel) · ω [ F Φ(ω d1) − K Φ(ω d2) ]
d1,2 = ln(F / K)σ√τσ ± ½ σ√τσ
S, K
spot and strike, domestic per foreign
σ, τσ
implied vol; vol time to expiry, ACT/365F
DFd, DFf
domestic and foreign discount factors
ω, N
+1 call, −1 put on foreign; notional in foreign
  • Two clocks. Vol time runs to expiry, rate time to delivery. They’re separate inputs, never one T.
  • Edges are exact. At expiry or zero vol, value falls to intrinsic on the forward and the result is flagged, never NaN.
  • An outside check. 10,000 seeded cases against QuantLib, from 1 day to 5 years, vol 1–60%, rates −1% to 15%. QuantLib is a test oracle only.
GreekEngine unitShown as
Delta spot, forward; premium-adjusted or notforeign per foreign notionalforeign amount, % of notional
Gammaper 1.00 of spotchange in delta per 1% spot
Vegadomestic per 1.00 voldomestic per vol point
Thetadomestic per yeardomestic per day
Rho domestic, foreigndomestic per 1.00 ratedomestic per basis point
03

Conventions

Specified · M2

FX options trade in deltas and vols, not strikes. Turning a quote into a strike depends on conventions, so MANY keeps them as versioned data, not code.

DeltaDefinitionUsed for
Spotω DFf Φ(ω d1)domestic premium, up to 1Y
Forwardω Φ(ω d1)domestic premium, beyond 1Y
Spot, premium-adjustedω DFf (K/F) Φ(ω d2)foreign premium, up to 1Y
Forward, premium-adjustedω (K/F) Φ(ω d2)foreign premium, beyond 1Y
At the money

K = F e±σ²τ/2

delta-neutral straddle; + unadjusted, − premium-adjusted
Risk reversal

RR25 = σ25C − σ25P

how much the market pays for calls over puts
Butterfly

σ25C/P = σATM + BF25 ± ½RR25

smile strangle; the broker strangle follows
EUR/USDGBP/USDUSD/JPY
Pip0.00010.00010.01
Spot lag · cutT+2 · NY 10:00T+2 · NY 10:00T+2 · NY 10:00
PremiumUSDUSDUSD, premium-adjusted
Delta ≤1Y · >1Yspot · forwardspot · forwardspot PA · forward PA
ATMdelta-neutraldelta-neutraldelta-neutral, PA

Delivery is spot plus tenor, modified following; expiry is the date whose spot date is that delivery. A convention set is named by the hash of its contents, and every result records which one it used.

04

Strategies

Specified · M2

A strategy is a set of legs on one pair, with optional exposures it hedges. Templates are plain constructors: edit the result freely and it says so.

TemplateLegsHolds when
Verticallong K1, short K2, same typeK1 ≠ K2
Straddlecall and put at Ksame strike, expiry, notional
Strangleput Kp, call KcKp < Kc
Risk reversallong call Kc, short put KpKp < Kc
Butterfly+1 K1, −2 K2, +1 K3K1 < K2 < K3
Collarlong put, short call against an exposurenotional ≤ exposure
Protective putlong put against an exposurenotional ≤ exposure
Forward hedgeoutright forward against an exposuredelivery on the due date

Validation runs before any price: positive strikes and notionals, currencies of the pair, expiry after today, invariants intact. Up to 12 legs interactively; larger runs become jobs.

05

Market data

In build · M1

Every dataset becomes an immutable snapshot named by the hash of its contents. Nothing is filled in: a missing field is an error, not a guess.

Open

ECB

Daily reference rates for about 30 currencies, back to 1999.

No key · attribution
Open

FRED

Daily FX (H.10) and rates: SOFR and Treasuries.

Free API key
Open

Dukascopy

Intraday spot, imported into your own workspace.

Not redistributed
Yours

Connectors

CSV and Parquet, Postgres (read-only), S3-compatible storage.

Snowflake, BigQuery next
ms_9f2c…e41a
  • spot
  • curves
  • vol pillars
  • quality
  • licence

Quotes are checked before they’re sealed: crossed quotes are dropped, stale ones flagged, outliers held back.

There is no free source of historical FX implied volatility. Backtests on open data use a labelled proxy, such as realised volatility, and say so on every chart.

06

Risk and scenarios

Specified · M2

A strategy is evaluated on a grid: spot across F e±4σ√τ in 401 steps, against time to expiry or a vol shift in 41. Strikes, break-evens and today’s spot are always exact points on it.

Grid, stresspossible, not weightedno measure
Historical shockwhat did happenhistorical
Monte Carlowhat could, by a modelrisk-neutral or estimated

Break-evens are solved exactly. An unbounded loss is shown as unbounded, never as a large number. Any region can be explained by leg, by Greek and by what’s left over.

07

Provenance

Specified · M3

Each calculation keeps a record of its request, snapshot, conventions, model, engine version, numerical environment and seed. Its id is the hash of those inputs.

CheckedTolerance
Price against QuantLib10−10
Greeks against QuantLib10−10
Analytic against finite-difference Greeks10−6 relative
Put–call parity10−13
Delta to strike and back10−12 in delta
Legs sum to the total10−9 relative
Replay on another machine10−12 relative
Datesexact

Experiments are branches of immutable revisions; undo moves a pointer, never history. A bundle exports as JSON, CSV and a report, and replays with one command, without a database.

08

The agent

Planned · M4

The agent runs the research; the engine produces the numbers. Every figure in an answer is bound to a calculation, or the answer becomes a table.

  1. Intentmodel
  2. Checkcode
  3. Routefast model
  4. Planmodel
  5. Validatecode
  6. Executeengine
  7. Verifycode
  8. Explainmodel
  9. Citecode
  10. Proposalyou decide
deterministic codelanguage modelpricing engine
  • Bounded. At most 12 tool calls and 60 seconds per request, with token and cost caps. Cancel at any time.
  • Fenced. Text from files and data is quoted as untrusted and can’t give instructions. No tool can delete, change permissions or reach the network.
  • Your keys or ours. Bring your own OpenRouter and Typesafe keys, encrypted and spend-limited, or use ours on the paid tier with every call metered.
09

Access

In build · M0
  1. Join the listSeats open a few at a time.
  2. Link or codeSingle use, 15 minutes, stored only as a hash.
  3. Add a passkeyFrom then on, that’s how you sign in.
  4. Stay signed in30 days from your last visit, 180 at most. End any session from your devices.

API keys you add are encrypted with AES-GCM and never sent back to the browser. Workspaces are isolated in the database, row by row.

10

Roadmap

  1. M0 · now

    Foundations

    Accounts, passkeys, the workspace and its design system.

  2. M1

    Data hub

    Ten years of ECB and FRED data, your files and databases, side by side.

  3. M2

    Strategy lab

    The engine and its instruments, on real snapshots.

  4. M3

    Experiments

    Branch, compare, export and replay exactly.

  5. M4

    Agent

    From an objective to candidate strategies you can check.

  6. Then

    Backtests

    Strategies replayed through history.