Source: https://tesseralytics.dev/datasets/fields

[← Data catalog](https://tesseralytics.dev/datasets)

# Field dictionary

The cross-section's field vocabulary: every column the [intelligence layer](https://tesseralytics.dev/mcp-server) can rank, screen and query, at the daily and hourly grain.

84 fields, each with its unit and grain. Fields measured on their own carry a signal class — state, momentum, microstructure or no signal — and, where the measurement exists, its forward IC and delay retention. [Read the research](https://tesseralytics.dev/blog/mcp-cross-section) that produced the classes.

## State

Durable 24-hour-horizon signal — carry, positioning and size. Retains ≈1 of its IC after the publication delay.

| Field | Unit · grain | What it means |
| --- | --- | --- |
| `account_ls_ratio` |
ratio

1d · 1h

IC 0.0156 @24h · retention 1.04

 | Long accounts divided by short accounts. Above 1 means more accounts are long than short — crowd direction by head-count. |
| `cum_funding` |

fraction (of notional)

1d · 1h

IC 0.0473 @24h · retention 1.016

 | Running total of funding since the series began, continuous across months — a lifetime level, not an interval's carry. It grows with listing age and cumulative notional, so a cross-sectional rank on it mixes carry with size and history; use funding\_paid\_7d (the funding accumulated over the trailing window, widened by window\_days) or funding\_rate\_7d\_avg (the window's mean rate) for the interval-sized signal. |
| `d_open_interest` |

base units

1d · 1h

 | Change in open interest over the completed interval — net risk added or removed. NULL when the previous interval's snapshot is missing, so it is never a multi-interval change labelled as one interval. |
| `funding_paid_7d` computed |

fraction (of notional)

1d · 1h

 | Funding accumulated over the trailing 7 days — what a constant position of one unit of notional paid (positive) or earned (negative) in funding across the window (widened when window\_days is passed). This is the sum, not the mean: funding\_rate\_7d\_avg is this accumulation divided by the window's completed-interval count, so the two agree exactly only for a market that published every interval in the window — a market with holes in its funding series carries a smaller sum than its own average rate implies. A market whose funding source has no reading anywhere in the window is null rather than zero. |
| `funding_rate_7d_avg` computed |

fraction (of notional per interval)

1d · 1h

 | Average funding over the trailing 7 days, normalized by the selected grain's completed-interval count (widened when window\_days is passed). Positive means longs paid. |
| `funding_rate_mean` |

fraction (hourly rate)

1d · 1h

 | Mean funding rate for the completed interval. Positive means longs paid shorts on average — the crowd was long and paid for it. The venue's neutral print is +0.00125%/h (≈ +11%/yr) and a large block of markets prints exactly that, so a percentile or z-score of funding ties across the block; compare a market's rate against the neutral print rather than expecting a ranking to separate it. |
| `pnl_imbalance` computed |

ratio

1d · 1h

IC 0.0306 @24h · retention 0.785

 | The interval's realised close PnL split by the side that booked it, as a share of the gross PnL booked by both sides. Exactly +1 when shorts finished net-positive and longs net-negative, exactly -1 in the mirror case, and an intermediate value only when both sides finished the same way (both up or both down) — so read it as which side won the interval, not as a graded magnitude. It is a sign, not a score: whenever the two sides' PnL have opposite signs the reading is exactly ±1, so a large block of markets can tie at the maximum. Positive means the short side won the interval — the price fell over the positions it closed, not necessarily over the interval; negative means the long side won. A zero reading means neither side realised anything and is reported as null. Holds the interval's own row only, so it describes what already happened rather than predicting what comes next. For a graded measure, read the stored closed\_pnl\_long and closed\_pnl\_short instead. Do not order or rank a cross-section on it — ranking on pnl\_imbalance ranks on a sign; use a continuous factor for ordering. |
| `whale_long_account_share` |

ratio

1d · 1h

IC 0.0318 @24h · retention 1.005

 | What fraction of the whale cohort is on the long side, by head-count. |
| `whale_net_position` |

base units

1d · 1h

 | Net signed size of the whale cohort, in coin size. Positive means the biggest accounts are net long. |

## Momentum

A short-term reversal that survives the delay, but is small and often below round-trip cost.

| Field | Unit · grain | What it means |
| --- | --- | --- |
| `ret_1h` |
fraction

1h

IC -0.0152 @24h · retention 0.682

 | The completed hour's return: close divided by the previous published hour's close, minus 1. |

## Microstructure

Real at the bar, gone after the entry delay — contemporaneous with the bar’s own move, not predictive.

| Field | Unit · grain | What it means |
| --- | --- | --- |
| `oi_change_pct_1h` computed |
fraction

1h

IC -0.0271 @1h · retention 0.34

 | Change in USD open interest over the hourly interval ending at the row's timestamp, as a FRACTION of the level it opened at: 0.347 is +34.7%, not +0.347%. Multiply by 100 for a percentage. |
| `taker_imbalance_vw_1h` computed |

ratio

1h

IC -0.0226 @1h · retention 0.066

 | Notional-weighted taker imbalance over exactly 1 completed hourly interval: aggressor\_delta × vwap divided by usd\_volume. |

## No signal

Measured on its own; the order-flow hypothesis did not hold. There is no edge to decay.

| Field | Unit · grain | What it means |
| --- | --- | --- |
| `aggressor_delta` |
base units

1d · 1h

 | Net aggressive pressure during the completed interval: buy volume minus sell volume. Positive means buyers leaned on the book harder than sellers. |
| `net_taker_open` |

base units

1d · 1h

 | Net new aggressive directional risk: long opens minus short opens by takers during the completed interval. |
| `net_taker_open_over_oi` computed |

ratio

1d · 1h

IC -0.005 @1h · retention 0.88

 | The selected interval's net aggressive directional risk as a share of open interest — the taker tilt, normalized. |
| `taker_flip_l2s` |

base units

1d · 1h

 | Aggressive long-to-short flip volume — a capitulation tell (longs giving up and flipping). |
| `taker_flip_s2l` |

base units

1d · 1h

 | Aggressive short-to-long flip volume — a squeeze tell (shorts giving up and flipping). |

## Other fields

Stored and descriptive fields that were never measured on their own, so they carry no signal class.

| Field | Unit · grain | What it means |
| --- | --- | --- |
| `buy_vol` |
base units

1d · 1h

 | The slice of volume where the aggressor was buying (lifting the offer). Demand pressure. |
| `close` |

USD

1d · 1h

 | Price at the end of the completed interval — the one most people mean by 'the price'. |
| `closed_pnl_long` |

USD

1d · 1h

 | Realized profit or loss booked by longs during the completed interval. |
| `closed_pnl_short` |

USD

1d · 1h

 | Realized profit or loss booked by shorts during the completed interval. |
| `coin` |

symbol

1d · 1h

 | Which market the row is for. A bare symbol for crypto perps; HIP-3 markets carry their deployer prefix, e.g. xyz:NVDA. |
| `concentration_skew` |

ratio

1d · 1h

 | Short-side concentration minus long-side concentration (top10\_short\_share − top10\_long\_share). Positive means the shorts are the whale-heavy side — the one more prone to a squeeze. |
| `day` |

date

1d

 | The UTC day the row covers. |
| `flow_vs_snapshot_oi_residual` |

base units

1d · 1h

 | The gap between the completed interval's open-interest change and the change taker flow explains. What's left is mostly the maker side — passive positioning the trade tape can't show. |
| `funding_hours` |

count

1d

 | How many hourly funding observations the day's figures are built from (sparse on some HIP-3 venues). |
| `funding_paid` |

fraction (of notional)

1d · 1h

 | Funding rates summed over the completed interval — the share of notional a position held across the interval paid (positive) or earned (negative). |
| `funding_rate_delta_1h` computed |

fraction (hourly rate)

1h

 | Current funding rate minus the immediately previous published hour's funding rate. |
| `funding_rate_max` |

fraction (hourly rate)

1d

 | The day's highest hourly funding rate. |
| `funding_rate_min` |

fraction (hourly rate)

1d

 | The day's lowest hourly funding rate. |
| `funding_rate_sum_24h` computed |

fraction (of notional)

1h

 | Sum of the current and 23 immediately prior published hourly funding rates. |
| `funding_sign_change_1h` computed |

boolean fraction

1h

 | 1 when the current and immediately previous published hourly funding rates have different signs, 0 when their signs match, and NULL when either rate is missing. |
| `hhi_gross` |

ratio

1d · 1h

 | A standard market-concentration score over all exposure — high when a handful of accounts dominate the book. |
| `high` |

USD

1d · 1h

 | Highest trade price during the completed interval. |
| `hour` |

timestamp

1h

 | The completed UTC hour the row covers. |
| `low` |

USD

1d · 1h

 | Lowest trade price during the completed interval. |
| `maker_fees` |

USD

1d · 1h

 | Fees paid — or rebates earned — on the passive side (makers). |
| `n_closed_longs` |

count

1d · 1h

 | Accounts that closed a long during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_closed_shorts` |

count

1d · 1h

 | Accounts that closed a short during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_flipped_l2s` |

count

1d · 1h

 | Accounts that flipped from long to short — a sentiment reversal, one account at a time — during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_flipped_s2l` |

count

1d · 1h

 | Accounts that flipped from short to long during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_long_positions` |

count

1d · 1h

 | How many accounts held a long at the completed interval's close. |
| `n_new_longs` |

count

1d · 1h

 | Accounts that opened a fresh long during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_new_shorts` |

count

1d · 1h

 | Accounts that opened a fresh short during the completed interval. NULL when the previous interval's snapshot is missing, so it is never a multi-interval count labelled as one interval. |
| `n_short_positions` |

count

1d · 1h

 | How many accounts held a short at the completed interval's close. |
| `n_unique_users` |

count

1d · 1h

 | How many distinct accounts held any position — the breadth of participation. |
| `n_whale_accounts` |

count

1d · 1h

 | How many accounts make up the whale cohort (the top 10% by position size). |
| `net_taker_flow_7d` computed |

base units

1d · 1h

 | Net aggressive pressure summed over the trailing 7 days (widened when window\_days is passed): buy-minus-sell taker flow. Base units, so it scales with the market's size — use taker\_imbalance\_7d to rank markets of different sizes against each other. |
| `oi_change_over_volume_4h` computed |

ratio (USD ÷ USD)

1h

 | USD open-interest change summed over exactly 4 completed hourly intervals divided by USD traded notional over the same interval. |
| `oi_change_over_volume_7d` computed |

ratio (USD ÷ USD)

1d · 1h

 | Open-interest notional added over the trailing 7 days divided by average traded notional for the selected grain — higher means open interest is growing faster than the volume trading it; 1.0 means OI grew by a full interval's turnover. |
| `oi_change_pct_4h` computed |

fraction

1h

 | The same for the four-hour interval ending at the row's timestamp, as a FRACTION: 0.347 is +34.7%. Multiply by 100 for a percentage. |
| `oi_change_z_30d` computed |

z-score

1d · 1h

 | How unusual the completed interval's open-interest change is against its own trailing 30-day distribution, in standard deviations. |
| `oi_closed` |

base units

1d · 1h

 | Aggressive volume that closed positions — flow-implied OI removed. |
| `oi_open` |

base units

1d

 | Open interest at the day's own 00:00 boundary — the level the day started from. NULL when the coin had not started trading by that instant (its first snapshot came later), rather than a later hour's level presented as the day's open. |
| `oi_opened` |

base units

1d · 1h

 | Aggressive volume that opened positions — flow-implied OI added. |
| `oi_over_volume` computed |

ratio

1d · 1h

 | Open-interest notional divided by traded notional for the selected interval — how much risk sits on the book per unit of turnover. High means a market is crowded relative to its liquidity. |
| `oi_usd` |

USD

1d · 1h

 | Open interest at the completed interval's close in USD notional (open\_interest × close) — the cross-comparable open-interest figure, one-sided like open\_interest. |
| `open` |

USD

1d · 1h

 | Price at the start of the completed interval. |
| `open_interest` |

base units

1d · 1h

 | Size of open positions at the completed interval's close, in coin size, counting each contract once (the classical one-sided convention). The venue's own API and UI sum both sides instead, so their open-interest figure is twice this one. Rising means new money committing; falling means positions unwinding. |
| `range_pct` |

fraction

1d · 1h

 | The completed interval's high-to-low range as a share of its opening price. |
| `ret_1d` |

fraction

1d

 | The day's return: close divided by the previous day's close, minus 1. |
| `ret_24h` computed |

fraction

1h

 | Compounded close-to-close return over exactly 24 completed hourly intervals. |
| `ret_30d` computed |

fraction

1d · 1h

 | Cumulative return over the trailing 30 days. |
| `ret_4h` computed |

fraction

1h

 | Compounded close-to-close return over exactly 4 completed hourly intervals. |
| `ret_7d` computed |

fraction

1d · 1h

 | Cumulative return over the trailing 7 days (widened when window\_days is passed). |
| `sell_vol` |

base units

1d · 1h

 | The slice of volume where the aggressor was selling (hitting the bid). Supply pressure. |
| `taker_close_long_vol` |

base units

1d · 1h

 | Aggressive volume that closed existing longs — longs taking profit or cutting. |
| `taker_close_short_vol` |

base units

1d · 1h

 | Aggressive volume that closed existing shorts — shorts covering. |
| `taker_fees` |

USD

1d · 1h

 | Fees paid by the aggressive side (takers). |
| `taker_imbalance_7d` computed |

ratio

1d · 1h

 | Net aggressive pressure over the trailing 7 days as a share of the volume that produced it (widened when window\_days is passed): buy-minus-sell taker flow divided by total traded volume. Runs from -1 (every trade a taker sell) to +1 (every trade a taker buy), and is price- and size-independent, so it compares across markets. It weights every completed interval equally — see taker\_imbalance\_vw\_7d for the notional-weighted form. |
| `taker_imbalance_vw_24h` computed |

ratio

1h

 | Notional-weighted taker imbalance over exactly 24 completed hourly intervals: summed aggressor\_delta × vwap divided by summed usd\_volume. |
| `taker_imbalance_vw_4h` computed |

ratio

1h

 | Notional-weighted taker imbalance over exactly 4 completed hourly intervals: summed aggressor\_delta × vwap divided by summed usd\_volume. |
| `taker_imbalance_vw_7d` computed |

ratio

1d · 1h

 | The same net aggressive pressure over the trailing 7 days, weighting each completed interval by the notional that traded in it rather than by base units (widened when window\_days is passed): the imbalance of the window's flow rather than the mean of its intervals. The two are different quantities, not two estimates of one — they separate on a market whose aggression concentrates into a few heavy intervals — and this is the form the taker-flow research book ranks on. |
| `taker_open_long_vol` |

base units

1d · 1h

 | Aggressive volume that opened new long positions — fresh long risk entering. |
| `taker_open_short_vol` |

base units

1d · 1h

 | Aggressive volume that opened new short positions — fresh short risk entering. |
| `top10_long_share` |

ratio

1d · 1h

 | How much of the long side is held by its ten biggest accounts — high means the longs are a few whales, not a broad crowd. |
| `top10_short_share` |

ratio

1d · 1h

 | The same concentration measure for the short side. |
| `total_fees` |

USD

1d · 1h

 | All trading fees paid during the completed interval. |
| `trade_count` |

count

1d · 1h

 | How many individual trades happened during the completed interval — a proxy for activity and fragmentation. |
| `usd_volume` |

USD

1d · 1h

 | Traded notional during the completed interval: each source bar's vwap multiplied by its volume and summed. |
| `usd_volume_7d_avg` computed |

USD

1d · 1h

 | Average traded notional per completed interval over the trailing 7 days (widened when window\_days is passed). |
| `vol_30d` computed |

fraction

1d · 1h

 | Standard deviation of interval returns over the trailing 30 days, annualized by the grain-derived square root of 365 daily intervals or 8,760 hourly intervals. |
| `volume` |

base units

1d · 1h

 | How much traded during the completed interval, in coin size (base units). |
| `vwap` |

USD

1d · 1h

 | The completed interval's volume-weighted average price (usd\_volume / volume) — a fairer 'where did it actually trade' than the close. |

[The intelligence layer](https://tesseralytics.dev/mcp-server) [Read the research](https://tesseralytics.dev/blog/mcp-cross-section)
