Register remaining tradeable instruments: NAS100, USDJPY (pip 0.01), USDCHF, NZDUSD #140

Closed
opened 2026-06-25 09:15:12 +02:00 by Brummel · 3 comments
Owner

Summary

aura_ingest::instrument_spec() currently registers only GER40, FRA40,
EURUSD, GBPUSD, USDCAD
(5). The tradeable universe for the edge-research
milestone also needs four more, or --real refuses them:

  • NAS100 — index CFD like GER40: pip_size 1.0, contract_size 1.0,
    quote_currency "USD", new instrument_id 6.
  • USDJPY — FX major, CRITICAL pip_size 0.01 (JPY quote ~150, not
    0.0001), contract_size 100_000, quote_currency "JPY", instrument_id 7.
  • USDCHF — FX major, pip_size 0.0001, contract_size 100_000,
    quote_currency "CHF", instrument_id 8.
  • NZDUSD — FX major, pip_size 0.0001, contract_size 100_000,
    quote_currency "USD", instrument_id 9.

Mirror the existing arms' construction (min_lot / lot_step,
pip_value_per_lot = contract_size * pip_size).

Why now

Needed to broaden the cross-symbol test — NAS100 especially to test the
index-trend hypothesis (the screen found slow-momentum positive on GER40 but
not on FX; NAS100 is a second, US-region index). Note: R metrics are
stop-relative and thus pip-independent, so a wrong pip won't corrupt the R
screen — but it corrupts the Stage-2 currency/cost layer, so set pips
correctly now (esp. USDJPY = 0.01).

Process

Test-specifiable (tdd): assert instrument_spec("USDJPY").pip_size == 0.01
and that the other three resolve, before the GREEN table extension.

refs #137

## Summary `aura_ingest::instrument_spec()` currently registers only **GER40, FRA40, EURUSD, GBPUSD, USDCAD** (5). The tradeable universe for the edge-research milestone also needs four more, or `--real` refuses them: - **NAS100** — index CFD like GER40: `pip_size 1.0`, `contract_size 1.0`, `quote_currency "USD"`, new `instrument_id 6`. - **USDJPY** — FX major, **CRITICAL `pip_size 0.01`** (JPY quote ~150, not 0.0001), `contract_size 100_000`, `quote_currency "JPY"`, `instrument_id 7`. - **USDCHF** — FX major, `pip_size 0.0001`, `contract_size 100_000`, `quote_currency "CHF"`, `instrument_id 8`. - **NZDUSD** — FX major, `pip_size 0.0001`, `contract_size 100_000`, `quote_currency "USD"`, `instrument_id 9`. Mirror the existing arms' construction (min_lot / lot_step, `pip_value_per_lot = contract_size * pip_size`). ## Why now Needed to broaden the cross-symbol test — **NAS100 especially** to test the index-trend hypothesis (the screen found slow-momentum positive on GER40 but not on FX; NAS100 is a second, US-region index). Note: R metrics are stop-relative and thus pip-independent, so a wrong pip won't corrupt the R screen — but it corrupts the Stage-2 currency/cost layer, so set pips correctly now (esp. USDJPY = 0.01). ## Process Test-specifiable (`tdd`): assert `instrument_spec("USDJPY").pip_size == 0.01` and that the other three resolve, before the GREEN table extension. refs #137
Brummel added this to the Edge research: prove a real tradeable edge milestone 2026-06-25 09:15:12 +02:00
Brummel added the feature label 2026-06-25 09:15:12 +02:00
Author
Owner

Surviving the edge-research milestone wind-down (#137) — and now MORE relevant: the FX pairs (USDJPY pip 0.01 / USDCHF / NZDUSD) with correct pip geometry are exactly what the realistic-broker milestone (C10 A-side) needs to exercise currency-P&L and friction. Detached from the (now closed) milestone; kept open.

Surviving the edge-research milestone wind-down (#137) — and now MORE relevant: the FX pairs (USDJPY pip 0.01 / USDCHF / NZDUSD) with correct pip geometry are exactly what the realistic-broker milestone (C10 A-side) needs to exercise currency-P&L and friction. Detached from the (now closed) milestone; kept open.
Brummel removed this from the Edge research: prove a real tradeable edge milestone 2026-06-25 15:29:20 +02:00
Author
Owner

#143 (closed) made this a cross-checked registration

The build/test cross-check shipped in #143 iterates aura_ingest::VETTED_SYMBOLS, so
adding each symbol here is automatically validated against the provider geometry
sidecars — registration becomes: extend the instrument_spec match + VETTED_SYMBOLS,
fill the authored values, and authored_floor_agrees_with_provider_geometry confirms
them against broker truth (or fails loudly on a typo).

Verified sidecar geometry for the four (read from /mnt/tickdata/Pepperstone), ready
to author (incl. the two new fields tick_size/digits from #143):

symbol pip_size tick_size digits lot_size quote
NAS100 1 0.1 1 1 USD
USDJPY 0.01 0.001 3 100000 JPY
USDCHF 0.0001 1e-5 5 100000 CHF
NZDUSD 0.0001 1e-5 5 100000 USD

All four satisfy pip_value_per_lot == lot_size * pip_size and the tick_size == 10^(-digits) guard #143 added (verified to hold across all 30 sidecars), so the
cross-check will pass once the authored values match this table. NB: NAS100 quotes in
USD and USDJPY/USDCHF carry non-USD quote currency — the floor's quote_currency
stays &'static str (a plain ISO label; FX conversion is still #124's resolver work).

## #143 (closed) made this a cross-checked registration The build/test cross-check shipped in #143 iterates `aura_ingest::VETTED_SYMBOLS`, so adding each symbol here is automatically validated against the provider geometry sidecars — registration becomes: extend the `instrument_spec` match + `VETTED_SYMBOLS`, fill the authored values, and `authored_floor_agrees_with_provider_geometry` confirms them against broker truth (or fails loudly on a typo). Verified sidecar geometry for the four (read from `/mnt/tickdata/Pepperstone`), ready to author (incl. the two new fields `tick_size`/`digits` from #143): | symbol | pip_size | tick_size | digits | lot_size | quote | |--------|----------|-----------|--------|----------|-------| | NAS100 | 1 | 0.1 | 1 | 1 | USD | | USDJPY | 0.01 | 0.001 | 3 | 100000 | JPY | | USDCHF | 0.0001 | 1e-5 | 5 | 100000 | CHF | | NZDUSD | 0.0001 | 1e-5 | 5 | 100000 | USD | All four satisfy `pip_value_per_lot == lot_size * pip_size` and the `tick_size == 10^(-digits)` guard #143 added (verified to hold across all 30 sidecars), so the cross-check will pass once the authored values match this table. NB: NAS100 quotes in USD and USDJPY/USDCHF carry non-USD quote currency — the floor's `quote_currency` stays `&'static str` (a plain ISO label; FX conversion is still #124's resolver work).
Author
Owner

Obsolete — closing.

This issue would hand-register four more symbols into the authored
instrument_spec() floor. Under the current directive (aura defines only what is
currently needed; geometry comes from the data-server sidecars, not hard-coded in
aura), that floor is being removed entirely: the only instrument datum any current
production path consumes is pip_size, which is now resolved from the per-symbol
geometry sidecar (instrument_geometryInstrumentGeometry.pip_size). Pip then
covers whichever symbols ship a sidecar (30 present), so there is nothing to
hand-register. See the reconciliation comment on #124 for the full decision and
the consumption investigation that grounds it.

Obsolete — closing. This issue would hand-register four more symbols into the authored `instrument_spec()` floor. Under the current directive (aura defines only what is currently needed; geometry comes from the data-server sidecars, not hard-coded in aura), that floor is being removed entirely: the only instrument datum any current production path consumes is `pip_size`, which is now resolved from the per-symbol geometry sidecar (`instrument_geometry` → `InstrumentGeometry.pip_size`). Pip then covers whichever symbols ship a sidecar (30 present), so there is nothing to hand-register. See the reconciliation comment on #124 for the full decision and the consumption investigation that grounds it.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Brummel/Aura#140