# Price Sources

Treasury assets and LP positions are **read and marked by the contracts automatically**. The dashboard **reads on-chain** and **auto-updates NAV**. The system **does not rely on StockA/StockB direct LPs**; it prices through **each external-asset/HOLI pool** and converts to **USDG**. Marks in <Md expr="A_t" /> are the **direct market quotes of the pools the protocol holds**: the **effective on-chain price of the corresponding /HOLI pool**. For LP <Md expr="j" />, <Md expr="p_{j,t}^{X}" /> is that quote on the held <Md expr="X_j" />/HOLI book. Except **SHYT**, approved names are **blue chips**. SHYT, USDG, and admitted stocks enter <Md expr="A_t" /> as those external legs.

## HOLI routes

<Md expr="p" /> for an external asset is the quote on the HOLI pool the Treasury holds:

* Stock/HOLI for admitted stocks
* SHYT/HOLI for SHYT
* USDG/HOLI for USDG

A USDG numeraire still uses the held HOLI/USDG book.

There is always trading demand among Stock Tokens, RWA, and stables. If two **HOLI-routed** relative prices differ by more than **transaction costs**, arbitrageurs buy the cheap asset and sell the rich one until relative prices across pools **reconverge**. Therefore, under normal market conditions, on-chain prices are auto-calibrated by continuous trading and arbitrage; they do not need a manager's manual valuation.

Convergence is not a proof that <Md expr="p" /> is true. It is a proof that the routes agree.

## TWAP

Formal NAV reads those held-pool quotes as a time-weighted on-chain price, not a spot reserve ratio one swap can move.

## Insufficient liquidity

If the TWAP window has too little volume, depth is below the minimum, or the route is missing, <Md expr="p" /> is **not defined** for that asset.

## Price invalidation

<Md expr="p" /> is invalid when any of these hold:

* no valid HOLI route
* TWAP window under-traded
* deviation from the route bound
* USDG depeg bound breached

While <Md expr="p" /> is invalid, that asset is dropped from <Md expr="A_t" />, and any NAV-dependent function that needs that <Md expr="p" /> does not run. Invalidation is a boolean on the mark, not a discretionary override.
