# Stats

The Stats System is responsible for making all required signals (e.g., staking yield, fee yield, incentive yield, etc) available on-chain. These signals are read by the Strategy to determine if a rebalance is in the best interest of its Autopool. A `Calculator` is responsible for storing, augmenting, and cleaning data required to provide one of those signals. Let’s take an example Destination and see how it’s stats are built:

**Curve osETH/rETH + Convex Staking**

Stat calculators depend on each other to build the full picture of a Destination, with only the top-most calculator being referenced directly by the DestinationVault. In this case, the top-most calculator is the `ConvexCalculator`. This calculator is an example of an Incentive calculator. LP tokens staked into Convex automatically earn CRV and CVX. This pool is also configured with SWISE and RPL tokens as extra rewards. And so, some annualized amount of CRV, CVX, SWISE, and RPL will be reported to the Strategy where it will calculate what the yield of those tokens are.

As a dependency, the `ConvexCalculator` takes a reference to a calculator responsible for providing stats about the DEX pool itself, a `CurveV1PoolNoRebasingStatsCalculator` (V1 calculators work for both Stableswap and Cryptoswap pools). This calculator provides the trading fee yield for the pool.

The last piece(s) are the stats about the LST tokens themselves, osETH and rETH. These calculators, `OsethLSTCalculator` and `RethLSTCalculator`, were provided to the `CurveV1PoolNoRebasingStatsCalculator` as dependencies when it was created. These calculators provide stats such as the base yield and price-to-book value.

With all of these calculators each providing their own data to the overall picture, a Strategy can get an accurate reading of a Destinations return.

### Types of Calculators

* Incentive - Responsible for tracking the return of the incentives available when staking in Convex/Aura/Maverick/etc.
* DEX - Responsible for tracking the trading fee yield of a given DEX pool
* LST - Responsible for tracking the base yield and backing of an LST

### Keeping Data Up-to-Date

A keeper network is used to periodically snapshot new data. Each calculator type defines the frequency and conditions under which a snapshot should be taken. Importantly, each calculator only stores the required information to provide its stats. If it needs to provide stats from another calculator, those are read at the time of the request to ensure that data is consistent.

### Architecture

<figure><img src="/files/068hHjMC6wHgAxlrnlvS" alt=""><figcaption></figcaption></figure>


---

# 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.auto.finance/developer-docs/contracts-overview/autopool-eth-contracts-overview/autopool-contracts-and-systems/stats.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.
