# Oracle

## Index & Pools Oracle

NFT collection prices are derived from a combination of in-house data collection and external data providers, most notably Reservoir. The price determination for each NFT collection involves analyzing its sales volume and current order book. This analysis is then used to calculate the approximate bid/ask midpoint. Subsequently, TWAPs are applied, their durations varying and tailored to each collection based on historical trading volume. Finally, these prices are updated on-chain and undergo a smoothing process via an EMA with a lookback window encompassing the three most recent updates.

The oracle updates under two conditions:

* Heartbeat: The oracle will update prices if the last update has been longer than 12 hour.
* ⁠Deviation: The oracle will update if the spot midpoint has deviated from the last update by more than 2%.

Price updates are restricted from exceeding 25% within the last update at the smart contract level, similar to the Compound v1 Oracle design

For all other assets, Fungify utilizes the [official](https://data.chain.link/) Chainlink price feeds.


---

# 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.fungify.it/protocol/oracle.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.
