NAV & Valuation Methodology
How Nyx computes its shadow NAV: pricing sources, timing, fees, series accounting, and known limitations.
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 routes every asset to exactly one pricing rung, keyed off its registered asset class, five routes, no others exist:
- →Crypto / stablecoin: CoinGecko daily (00:00 UTC) price, frozen per run.
- →Listed equities, ETFs, funds, and priced commodities/futures: Yahoo Finance daily close, keyed to the registry’s price_symbol override where one is set.
- →Non-USD fiat cash: a daily FX pair rate against USD.
- →USD fiat cash: face value ($1, the functional currency; definitional, not fetched).
- →Bonds, options, private/illiquid positions, and real assets: manager manual fair-value marks. No market price route exists for these classes. A commodity or futures position without a registered price symbol falls back to the same manual-marks path (never a guessed quote, never carried silently at zero without surfacing as unpriced).
- →Assets that cannot be priced are carried at zero and the run is flagged partial, never a fabricated price.
Valuation policy for manual marks: every fair-value mark carries an explicit provenance record and an age/staleness indicator, and a mark update on a manual-mark-only class routes through the maker-checker dual-control approval workflow before it can affect NAV.
Staleness: quotes are graded against the valuation date; a stale quote is treated as unpriced (fail-safe).
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.
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.
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.
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.
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.
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.
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.
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.
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.
Scope Exclusions
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.
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.
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.
- →The standing cost-basis election is fund-wide (average, FIFO, or HIFO); specific-lot identification is available per disposal when booking a reconciliation break, not as a standing method.
- →The audit event stream is append-only and hash-chained from 2026-08; prior rows were retro-chained in (created_at,id) order. Chain heads are periodically Bitcoin-anchored via OpenTimestamps; events since the most recent anchor are not yet externally pinned.
- →Price caching is per-server-instance; historical daily prices are immutable once fetched.