> For the complete documentation index, see [llms.txt](https://docs.kpk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kpk.io/funds/infrastructure/architecture/core-concepts/nav.md).

# NAV

How a fund is valued onchain, and how that valuation becomes the price used to settle requests.

The **Net Asset Value (NAV)** is the **total USD value of all assets held by the fund across every chain**. It is the basis for pricing shares and for the amounts exchanged during subscriptions and redemptions.

## NAV is computed onchain

Each chain has its own **NAV Calculator** contract, which:

* Reads the Portfolio Safe's portfolio balances directly from token contracts or via **balance adapters** (for positions not held as plain ERC-20 tokens).
* Prices those balances using **price feeds** (Chainlink, Redstone, API3, or custom composite feeds).
* Produces a chain-local NAV, **normalized to 8 decimals**.

An offchain worker aggregates the per-chain NAV values into a single global NAV. This hybrid model combines transparent onchain valuation with consistent multichain accounting. For the full contract reference, see [Onchain Accounting](/funds/infrastructure/architecture/onchain-accounting.md).

<figure><img src="https://1699303810-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUsQM4bzcmOPSgkWddkeN%2Fuploads%2FcZjERaBJJIQ2ov5jhKoG%2FNAV.png?alt=media&amp;token=595d2b41-4188-4ef4-8bfb-3c66938a089c" alt=""><figcaption></figcaption></figure>

## From NAV to a settlement price

The `kpkShares` contract does **not** read NAV itself. Instead, when an operator settles a batch of requests, they pass a **share price** — the global NAV divided by circulating supply — into `processRequests(...)`. That price is denominated in **normalized USD units (8 decimals)** and is used to convert between assets and shares for every request in the batch.

After a successful settlement, the contract stores the price as the **last settled price** for that asset:

```solidity
// last settled price per share, in 8-decimal USD; 0 if never settled
function getLastSettledPrice(address asset) external view returns (uint256);
```

The last settled price has two uses:

* It backs `previewSubscription` / `previewRedemption` when callers pass `sharesPrice = 0`, so integrators can estimate amounts without sourcing a live price (reverts `NoStoredPrice` if none exists yet).
* It anchors the **price-deviation guard** below.

## Price-deviation guard

To contain operator error or manipulation, each settlement price is checked against the last settled price for that asset:

```
deviationBps = abs(newPrice - lastPrice) * 10_000 / lastPrice
```

If the deviation exceeds **3000 bps (30%)**, `processRequests` reverts with `PriceDeviationTooLarge`. The first settlement for an asset has no prior price and is therefore not checked.

{% hint style="warning" %}
A NAV reading should only be used for subscriptions/redemptions when it is **complete** — for example, when no cross-chain transfer is mid-flight. See [Bridging](/funds/infrastructure/architecture/core-concepts/bridging.md) and [Calculate share price](/funds/integration/calculate-share-price.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.kpk.io/funds/infrastructure/architecture/core-concepts/nav.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
