# Share Value

## Core Concepts

The Onyx valuation system is designed to aggregate diverse **positions** into a single **value**.

### Positions

**Positions** are totally arbitrary and can be:

* on-chain (e.g., ERC20 tokens, NFT, RWA)
* off-chain (e.g., bank account balance, real estate appraisal)
* cross-chain
* on EVM chain or non-EVM chain
* debts (e.g., pro-rata management costs)
* credits (e.g., pro-rata rewards)

### Value

**Value** is ALWAYS quoted:

* in the "**value asset**" (e.g., "USD") set in `Shares`
* with 18-decimal precision (e.g., 1e18 = $1)

### Share Value vs Share Price

The system distinguishes between two related but different concepts:

**Share Value**: The **net value per share**, inclusive of all positions and fees

**Share Price**: The issuance rate for deposits and redemptions, which may include premiums, discounts, or other repricing behavior

Generally, **share value** and **share price** are the same, except where value is 0, in which case price defaults to one unit of the value asset (i.e., `1e18`).

### Timestamps

**Share value** and **share price** include a timestamp indicating when the calculation was performed. It is then the responsibility of consumers to assess the staleness of the timestamp.

## Share Value Calculations

Value calculations are handled by `ValuationHandler`.

There are three categories of value that are aggregated:

1. **Tracked positions**: holdings or liabilities that are explicitly added to `ValueInterpreter` via `IPositionTracker` instances. These are automatically reported during share value updates.
2. **Untracked positions**: any holdings or liabilities not added as (1). These are self-reported during share value updates.
3. **Unclaimed fees**: any fees that have been assessed but not transferred to the recipient

### Basic formula

value = tracked positions + untracked positions - unclaimed fees

share value = value / total shares

## Share Value Update Flow

See [share-value-update](https://docs.enzyme.finance/onyx-protocol/general-flows/share-value-update "mention")
