> For the complete documentation index, see [llms.txt](https://docs.force.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.force.xyz/perp-mechanics/sessions.md).

# Sessions

A Force market never closes. The markets underneath it do. The oracle therefore runs in three **sessions** and always uses the most direct source available. Every published value is stamped with the session that produced it, so a directly observed price is never mistaken for a modelled one.

| Session      | Active when                                              | What prices the oracle                                                 |
| ------------ | -------------------------------------------------------- | ---------------------------------------------------------------------- |
| **Cash**     | The underlying cash market is open and its feed is fresh | The observed rate, taken directly                                      |
| **Extended** | Cash is closed, futures are trading                      | A yield translated from the futures price, corrected to the cash level |
| **Internal** | Neither is available                                     | The market's own order book, approached gradually                      |

## Cash

The most direct case. While the cash market is open the oracle publishes the observed rate, with no conversion and no modelling. This is also the anchor the other two sessions are calibrated against.

For the 10-year this is Treasury market hours, roughly 8am to 3pm New York time. Those are not stock market hours: they open earlier and close earlier, and they cover the 8:30am slot in which most US economic data is released.

## Extended

Treasury futures keep trading long after the cash market closes, so the oracle continues from them. A futures price is not a yield, so it has to be translated, and the translation leaves a small offset that is measured while both markets are open and then held. Both steps are set out in [Oracle Price](/perp-mechanics/oracle-price.md).

Futures run nearly around the clock, but not continuously: they shut for a maintenance hour every evening, 5pm to 6pm New York time, and for the whole weekend.

## Internal

Weekends, holidays, and that maintenance hour. Nothing is trading anywhere, so there is no external price to publish. The oracle follows the only live signal left: the order book of the perp itself. It moves toward the book gradually rather than jumping to it, and does not move at all while it sits inside the book's impact bid and ask. The mechanism is in [Oracle Price](/perp-mechanics/oracle-price.md).

## Both markets run all three

The sessions are defined by the Treasury market, and **both Force markets follow them**.

FORCE-US10Y is the direct case: the sessions describe its own underlying.

FORCE-MORT30 inherits them, because its live leg is the US10Y oracle. The mortgage index is [a stored spread added to that oracle](/asset-directory/force-mort30.md), so whenever the 10-year is priced from cash the mortgage index moves with cash, whenever the 10-year is priced from futures the mortgage index moves with futures, and when the 10-year falls to Internal the mortgage index does too.

The daily mortgage print is a separate thing. It re-anchors the stored spread when it arrives, and it does not change which session is active.

## Falling back

The sessions are a strict precedence, checked on every tick: Cash if a cash feed is fresh, otherwise Extended if a futures-implied feed is fresh, otherwise Internal. Freshness is a time bound, so a feed that stops publishing drops out on its own.

Falling back happens one step at a time. Each session has more than one feed behind it, so a single provider going quiet moves to the other provider rather than dropping the oracle to a weaker method.


---

# 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.force.xyz/perp-mechanics/sessions.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.
