> For the complete documentation index, see [llms.txt](https://docs.ethosis.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ethosis.org/risk/oracles.md).

# Price feeds and trading sessions

A single contract, `PriceGate`, is the only route by which a price enters Ethosis. It wraps Chainlink and runs the protocol's checks before any value is passed on to origination, health-factor checks or auctions.

## Where prices come from

| Source                                      | Role in the protocol                               | Detail                                                                                                                   |
| ------------------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Chainlink **Data Feeds** (24/5)             | Health-factor checks, LTV at origination, warnings | Push model, on-chain, refreshed on a deviation or a heartbeat                                                            |
| Chainlink **Data Streams** (v11 RWA schema) | Pricing in liquidation auctions                    | Pull model; the buyer submits a signed report which is verified on-chain via the VerifierProxy. Includes `marketStatus`. |
| Chainlink **Sequencer Uptime Feed**         | Liquidation grace after an outage                  | Covered in [When the chain fails](/risk/sequencer-and-chain.md)                                                          |
| ERC-8056 `uiMultiplier()`                   | Share-denominated accounting and explorer display  | Read from the Stock Token contract itself; the Chainlink price already includes the multiplier                           |

Having both feeds and streams provides a cross-check: if a stream price drifts from the feed by more than a configured tolerance, an auction cannot clear at it.

## Regular, extended and closed

In regular session an equity market trades for roughly 32 hours a week, somewhat more with extended hours, and is shut the rest of the time. `PriceGate` labels each price **regular**, **extended** or **closed**, combining the stream's `marketStatus` field (a value of 5 means closed) with the feed's `updatedAt` timestamp.

| Session  | Maximum age of price | Effect on LTV                                                                      |
| -------- | -------------------- | ---------------------------------------------------------------------------------- |
| Regular  | 1 hour               | Published tier values apply                                                        |
| Extended | 2 hours              | Published tier values apply; the move cap is tightened                             |
| Closed   | 4 days               | The tier's closed-market haircut is taken off both the max and the liquidation LTV |

The reason for the haircut is that Monday's open can be a long way from Friday's close. Because the haircut also lowers the liquidation LTV, a loan that looks healthy on Friday must carry extra buffer over the weekend, and a borrower near the limit gets a warning before the market closes instead of after it reopens.

## Checks on every price

`PriceGate` rejects a price, or halts the market, under these conditions:

| Condition                                                     | Response                                                                                             |
| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Price is zero or below                                        | Revert                                                                                               |
| `updatedAt` is older than the staleness bound for the session | Revert at origination; health factor computed with the closed-market haircut; auction floor bounded  |
| A single update moves the price by more than the 25% cap      | Market paused for new loans and liquidations pending manual review; repayment still works            |
| The feed reports `oraclePaused()`                             | Market halted for new loans and liquidations until the flag clears (a corporate action is under way) |
| Stream price differs from the feed by more than the tolerance | The auction purchase reverts                                                                         |

## Only the token in escrow is priced

Each market's `PriceGate` configuration points at the feed for the very token held in escrow. A price is never derived via a wrapper, a vault share or an exchange rate between two tokens. That rule comes straight from the Edel Finance wGOOGLx incident of July 2026: the oracle for the underlying was accurate, but a wrapper's exchange rate was inflated 78-fold and accepted as collateral value. The case is described in [What earlier RWA lenders got wrong](/risk/lessons.md).

## Changing a feed

Each market's oracle adapter is a PolicyController value, so replacing one is a timelocked action with a published rationale. For every token, `PriceGate` exposes the current feed, session status, staleness, multiplier and pause flag through a view, and the loan explorer and the risk page show these live.


---

# 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 dynamically by asking a question.

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

```
GET https://docs.ethosis.org/risk/oracles.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
