// Trust Centre

NAV & Valuation Methodology

How Nyx computes its shadow NAV — pricing sources, timing, fees, series accounting, and known limitations.

Version 1.0 · Last reviewed: 2026-07-24
Download PDF

Purpose & Status

Nyx produces a shadow NAV. It reconciles the shadow NAV against the client's fund administrator; the administrator's NAV remains official.

Pricing Sources

Nyx uses a single authoritative oracle policy for the NAV strike:

  • Crypto: CoinGecko daily (00:00 UTC) price, frozen per run.
  • Listed equities / ETFs: Yahoo Finance daily close.
  • Manager manual fair-value marks as an explicit fallback.
  • Assets that cannot be priced are carried at zero and the run is flagged partial — never a fabricated price.
Anti-spoof policy: contract-bearing tokens are priced only by contract address or explicit provider id, never by symbol; stablecoins are priced at $1 only for recognised issuers; DEX-derived prices never enter the ledger path.

Staleness: quotes are graded against the valuation date; a stale quote is treated as unpriced (fail-safe).

Basis: src/lib/nav/source.ts, src/lib/prices/resolve.ts

Valuation Timing

The valuation point is the 00:00 UTC snapshot of the valuation date; the valuation date is the only time input, with no intraday cut.

Re-running a historical date reproduces the identical NAV, verified by a SHA-256 hash over the canonical inputs stored on every run.

Basis: src/lib/nav/engine.ts, src/lib/nav/hash.ts

Ledger

The general ledger is double-entry and append-only at the database layer; corrections are reversing entries only. Every entry must balance exactly, at 8-decimal-place precision, before it can commit. Digital assets are carried at cost in the general ledger, with fair value marked through dedicated control accounts.

Basis: src/lib/ledger/money.ts, src/lib/nav/mark.ts

Cost Basis / Lot Relief

Cost basis / lot relief methods available: average cost (default), FIFO, or HIFO — configurable per fund. Specific identification is not supported. Disposal history is append-only.

Basis: src/lib/ledger/relief.ts

Management Fee

The management fee accrues on pre-fee NAV by default (configurable to a gross or net basis), using an ACTUAL/365 day count, prorated over elapsed days since the last accrual, and accrued at each NAV strike.

Basis: src/lib/fees/math.ts, src/lib/fees/engine.ts

Performance Fee

The performance fee accrues against a per-unit high-water mark, with an optional hurdle; the fee base is per-unit NAV net of the management fee. The high-water mark ratchets only at crystallisation (annual or on redemption), and crystallised amounts are banked — never reversed by a subsequent drawdown.

Two-strike sequence: NAV₁ fixes the fee base and fees post; NAV₂ is the reportable post-fee NAV.

Basis: src/lib/fees/engine.ts, src/lib/orchestration/two-strike.ts

Series Accounting

Accounting operates at the subscription-lot level — each lot carries its own units, high-water mark, and fee terms (share-class overrides supported). Investor capital ties to fund NAV within 1e-8 as a fail-closed check on every run.

Equalisation is achieved through per-lot high-water marks; equalisation credits/deficits are not used.

Basis: src/lib/fees/engine.ts, src/lib/capital/account.ts

Income Recognition

Staking, reward, and airdrop income is recognised when the manager books the corresponding reconciliation item, at that item's observed price — not accrued over time.

Basis: src/lib/recon/book.ts

Transfers

Wallet-to-wallet and bridge transfers preserve cost basis and holding period when booked. Pairing the outgoing and incoming legs is a manager action, not automatic. An unpaired in-flight transfer at a valuation point appears as an open reconciliation break.

Basis: src/lib/recon/transfer.ts

Trade vs. Settlement

Economic recognition occurs at trade date; redemption cash settlement is a distinct, later-dated step through a redemptions-payable account. General T+n settlement-date accounting is not implemented.

Basis: src/lib/dealing/settle.ts

Scope Exclusions

DeFi positions and perpetual futures are excluded from the ledger and NAV. They appear on a tracking-basis disclosure schedule only. Perpetual funding is not tracked.
Basis: src/lib/audit/defi-schedule.ts

Precision

Exact decimal arithmetic is used throughout — no floating point on money. Banker's rounding is applied; USD is carried at 8 decimal places, quantities at 18. Sums are computed at full precision and rounded once.

Basis: src/lib/ledger/money.ts

Reproducibility & Audit Trail

Every core ledger/NAV/fee lifecycle action emits an event to an append-only audit stream enforced by database-level immutability — updates, deletes, and truncation are rejected for every database role, including privileged service roles.

The audit stream is not cryptographically hash-chained; integrity rests on database-enforced append-only semantics and access controls. NAV reproducibility is separately verified by the SHA-256 inputs hash on each run.
Basis: src/lib/events/audit-event.ts, src/lib/nav/hash.ts

Known Limitations

  • An asset that cannot be priced contributes zero to gross asset value and the NAV run is flagged partial; fee, capital, and dealing engines refuse to run on a partial NAV. There is no stale-price reserve policy.
  • Non-USD fiat cash is FX-revalued at each strike; non-USD fiat held as an asset position has no FX source in the NAV pricing seam and falls to a manual mark or unpriced.
  • DeFi and perpetual futures are excluded from NAV (see Scope Exclusions above).
  • Transfer pairing and staking-income recognition are manager actions; timeliness depends on the manager’s reconciliation cadence.
  • Specific-identification lot relief is not supported.
  • The audit event stream is append-only but not hash-chained.
  • Price caching is per-server-instance; historical daily prices are immutable once fetched.