# How to Calculate CS2 Skin Price Volatility

> Calculate CS2 skin price volatility from one marketplace's `close_ask` or `close_bid` series on `POST /v1/prices/history`, keeping the source and interval fixed.

Changing the cheapest marketplace from one bucket to the next creates source-selection jumps. A volatility series should therefore use one source and one price side throughout.

## Price history available for the calculation

The endpoint records per-source quote OHLC from December 24, 2025, with CSFloat bid history beginning July 18, 2026. Each source object includes `open_time`, `close_time`, and `sample_count`; active-order volumes are the last observations inside the bucket.

Intervals are `5m` for up to 14 days, `30m` for 90 days, `1h` for 365 days, and `1d` with no maximum range. Supported variants have independent histories nested under `variants`.

## A reproducible volatility method

Choose the exact item, source, side, interval, and UTC date range. For daily close-to-close volatility, sort `1d` buckets by `bucket`, calculate returns only between consecutive observed days, and take the dispersion of those returns. State whether the measure is arithmetic or logarithmic and whether it is annualized.

Maximum drawdown uses the same close series: track the running peak and measure each later close below that peak. Report the number of usable returns, missing intervals, and source alongside the result.

Use `sample_count` and `close_time` as quality context. A bucket with one late observation has a different evidence base from a bucket sampled throughout its interval, even when both have a close.

## Applicable endpoint

| Endpoint | Returns | Plans |
| --- | --- | --- |
| `POST /v1/prices/history` | Ask and bid OHLC at `5m`, `30m`, `1h`, or `1d` | Scale, Enterprise |

## Result-changing caveats

- Do not treat a gap-spanning return as one interval unless that longer horizon is intentional. Returned items can omit buckets with no source observation.
- Listing-floor volatility can be driven by one temporary low ask. Completed-sale volatility requires a sale archive and a separate series definition.
- Price-side coverage differs by source. Skinport has no bids, and CSFloat bid history begins July 18, 2026.
- Wider intervals smooth intraday moves. Results at `5m` and `1d` answer different questions and should not share thresholds.

The [CS2 skin price chart guide](/resources/how-to-build-cs2-skin-price-chart) explains the same OHLC timing fields visually.
