# Oracles & Pricing Methodology

## Oracles & Pricing Methodology

CASH uses two key prices for each market:

* **Oracle price**: the reference index price
* **Mark price**: the risk price used for **PnL**, **margining**, and **liquidations**

CASH perpetuals runs in two regimes: **Regular Hours** and **Off Hours**.

### Definitions

Let:

* **O(t)** = oracle price at time *t*
* **Bid(t)** = best bid
* **Ask(t)** = best ask
* **Last(t)** = last trade price (most recent print)

CASH uses:

* **EWMA₁₅₀s(x)**: 150-second exponentially-weighted moving average of a series *x*
* **EWMA₈h(x)**: 8-hour exponentially-weighted moving average of a series *x*

CASH defines two “microstructure” references:

#### Book mid

* **Mid(t) = (Bid(t) + Ask(t)) / 2**

#### Robust on-venue price (median of bid/ask/last)

* **Pₘ(t) = median( Bid(t), Ask(t), Last(t) )**

This helps reduce sensitivity to a single noisy print or a momentarily wide spread.

> Note: “Normal Hours” vs “Off Hours” are defined per market (e.g., aligned with the underlying’s primary trading session)

***

### Regular Hours

#### Oracle: external Pyth source

During Normal Hours, CASH uses an external, independent source (provided by Pyth).&#x20;

#### Mark: median of three references

During Normal Hours, mark is the **median** of:

1. **Oracle price**: O(t)
2. **Oracle + smoothed basis**: O(t) + EWMA₁₅₀s( Mid(t) − O(t) )
3. **Robust on-venue price**: Pₘ(t) = median(Bid(t), Ask(t), Last(t))

So:

* **Mark(t) = median( O(t), O(t) + EWMA₁₅₀s(Mid(t) − O(t)), Pₘ(t) )**

Intuition:

* The **EWMA basis term** allows mark to follow sustained order-book premium/discount smoothly (without overreacting to brief spikes).
* The **median(Bid,Ask,Last)** term anchors to what’s actually trading while being robust to outliers.

***

### Off Hours

Off Hours is designed to reduce sudden liquidation events when external price discovery is weaker and liquidity can be thinner.

#### Impact price difference

CASH computes an **impact price** from the order book at a predefined “impact size”. Define:

* **ImpactMid(t)** = (ImpactBid(t) + ImpactAsk(t)) / 2
* **ImpactDiff(t) = ImpactMid(t) − Pₘ(t)**

i.e., impact mid relative to a robust on-venue reference price.

#### Oracle: 8h EWMA of impact price difference

During Off Hours, oracle is constructed as:

* **O(t) = Pₘ(t) + EWMA₈h( ImpactDiff(t) )**

This makes the oracle reflect a smoothed measure of *where size trades* (impact) rather than just top-of-book. The EWMA is sampled with each oracle update (every \~3 sec). The sampling begins with the last known external oracle price.

#### Mark: equal to oracle

During Off Hours:

* **Mark(t) = O(t)**

***

### Why mark can differ from oracle

Mark is the **risk price**. It’s built to be:

* hard to manipulate with small trades,
* robust to stale/noisy inputs, and
* stable enough to avoid unnecessary liquidations.

That’s why CASH uses:

* **Pyth oracle** during Regular Hours, plus a mark that blends oracle, smoothed basis, and a robust on-venue price
* **impact-based smoothing** during Off Hours, with mark = oracle

***

### Practical implications

* **Liquidations use Mark**, not Last.
* In Normal Hours, mark adapts to sustained basis but resists transient spikes.
* In Off Hours, mark is intentionally smoother; PnL and liquidation thresholds may “move slower” than the top-of-book.
* Around Normal ↔ Off Hours transitions, expect mark dynamics to change by design.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dreamcash.xyz/trading/oracles-and-pricing-methodology.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
