← tanukitrade.com Open WebApp (opens in a new tab) Start 7-day free trial

API & MCP

Glossary

What the labels and concepts in a Tanuki response mean. The same text is POST /api/v1/discovery/glossary and the MCP tool get_glossary. Omit terms for every entry; meta.request.terms is null. An empty array is the same full list, and meta.request.terms echoes [].

There are 81 entries. The API currently publishes 43 routes, counted from the bundle.

Labels

P1

Put support: the primary put wall, the strongest negative net-GEX strike.

P1 is the largest put-side gamma wall. Dealers hedging a put-dominated strike often lean against downside through that strike, so it is read as structural support. It is the first label in the primary order P1, pT, HVL, cT, C1.

How to read it. On an unbroken profile P1 is at or below pT. Spot at or below P1 is the NEG_SQUEEZE state. weight, when present, is the signed normalized size and is negative on a put wall.

Related: pT, P2, NEG_SQUEEZE, norm

Learn more

pT

Put transition (pTrans): the lower boundary of the transition zone.

pT is the lower edge of the band that contains HVL. Below pT the net-GEX structure is read as negative-gamma territory. The label is pT; the same level is pTrans in the classification text.

How to read it. An unbroken profile keeps pT between P1 and HVL, inclusive. Spot below HVL and at or below pT, but still above P1, is NEG. Spot below HVL and above pT is NEG_TRANSITION.

Related: HVL, P1, transition-zone, NEG

Learn more

HVL

High Volatility Level: the structural pivot inside the transition zone.

HVL marks the steepest change in the net-GEX profile, inside the band pT ≤ HVL ≤ cT. It is the reference Tanuki uses instead of a single gamma-flip price. The knowledge base also titles this level Highest Volatility Level; the Learn page and this glossary use High Volatility Level for the same strike. Below HVL, dealer hedging is read as tending to amplify moves. Above HVL, it is read as tending to dampen them. That is a tendency, not a forecast.

How to read it. Require pT ≤ HVL ≤ cT before you trust the zone. Spot at or above HVL and still below cT is POS_TRANSITION. Spot below HVL and still above pT is NEG_TRANSITION.

Related: pT, cT, transition-zone, POS_TRANSITION, NEG_TRANSITION

Learn more

cT

Call transition (cTrans): the upper boundary of the transition zone.

cT is the upper edge of the band that contains HVL. Above cT the net-GEX structure is read as positive-gamma territory. The label is cT; the same level is cTrans in the classification text.

How to read it. An unbroken profile keeps cT between HVL and C1, inclusive. Spot above cT and still below C1 is POS. Spot at or above C1 (and at or above cT) is POS_SQUEEZE.

Related: HVL, C1, transition-zone, POS

Learn more

C1

Call resistance: the primary call wall, the strongest positive net-GEX strike.

C1 is the largest call-side gamma wall. Call-dominated strikes are read as structural resistance because hedging there tends to lean against upside. The level drawer marks C1 as critical.

How to read it. On an unbroken profile C1 is at or above cT. Spot at or above C1 is POS_SQUEEZE. weight, when present, is positive on a call wall.

Related: cT, C2, POS_SQUEEZE, norm

Learn more

P2

Second put wall: the next negative net-GEX strike after P1.

P2 is a fixed secondary put wall, ranked behind P1. It is not an extended slot.

How to read it. Read P2 as the same kind of level as P1, with less weight. It can share a strike with other labels.

Related: P1, P3, extended-walls

Learn more

P3

Third put wall: the next negative net-GEX strike after P2.

P3 is the last fixed put wall. Further put walls, if any, are extended slots numbered from P4.

How to read it. A missing P3 is omitted. Do not renumber P4 into the gap.

Related: P2, P4, extended-walls

Learn more

C2

Second call wall: the next positive net-GEX strike after C1.

C2 is a fixed secondary call wall, ranked behind C1. It is not an extended slot.

How to read it. Read C2 as the same kind of level as C1, with less weight.

Related: C1, C3, extended-walls

Learn more

C3

Third call wall: the next positive net-GEX strike after C2.

C3 is the last fixed call wall. Further call walls, if any, are extended slots numbered from C4.

How to read it. A missing C3 is omitted. Do not renumber C4 into the gap.

Related: C2, C4, extended-walls

Learn more

Extended walls

C4+ and P4+ are numbered per side from the four extended slots, not from a fixed list.

Slots sec_strike_1 through sec_strike_4 each carry a norm. A positive norm takes the next C, starting at C4. A negative norm takes the next P, starting at P4. A zero or missing norm omits that slot and does not consume a number. Four slots can therefore emit at most C4–C7 on the call side and P4–P7 on the put side. The Learn page describes the wall family through C6 and P6.

How to read it. Walk the slots in order. Count only the side you are on. The number is rank within that side, not the strike order. A response that shows C4 and P4 used one positive slot and one negative slot.

Related: C4, P4, C1, P1, norm

Learn more

C4

Extended call resistance C4, assigned only when an extended slot has a positive norm.

C4 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A positive norm takes the next C. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so C4 appears only when at least 1 slot on this response went to the C side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, C1, norm

Learn more

C5

Extended call resistance C5, assigned only when an extended slot has a positive norm.

C5 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A positive norm takes the next C. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so C5 appears only when at least 2 slots on this response went to the C side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, C1, norm

Learn more

C6

Extended call resistance C6, assigned only when an extended slot has a positive norm.

C6 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A positive norm takes the next C. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so C6 appears only when at least 3 slots on this response went to the C side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, C1, norm

Learn more

C7

Extended call resistance C7, assigned only when an extended slot has a positive norm.

C7 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A positive norm takes the next C. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so C7 appears only when at least 4 slots on this response went to the C side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, C1, norm

Learn more

P4

Extended put support P4, assigned only when an extended slot has a negative norm.

P4 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A negative norm takes the next P. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so P4 appears only when at least 1 slot on this response went to the P side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, P1, norm

Learn more

P5

Extended put support P5, assigned only when an extended slot has a negative norm.

P5 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A negative norm takes the next P. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so P5 appears only when at least 2 slots on this response went to the P side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, P1, norm

Learn more

P6

Extended put support P6, assigned only when an extended slot has a negative norm.

P6 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A negative norm takes the next P. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so P6 appears only when at least 3 slots on this response went to the P side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, P1, norm

Learn more

P7

Extended put support P7, assigned only when an extended slot has a negative norm.

P7 is not a fixed strike. The four extended-wall slots (sec_strike_1 through sec_strike_4) are numbered per side, starting at 4. A negative norm takes the next P. A zero or missing norm skips that slot. With four slots the highest index the API can emit on one side is 7, so P7 appears only when at least 4 slots on this response went to the P side.

How to read it. Read it with the fixed walls of the same side (C1–C3 or P1–P3). A later number is a weaker wall of that side, not a higher price. The Learn page draws the family through C6 and P6; the API's four slots can reach 7.

Related: extended-walls, P1, norm

Learn more

Ab1

Largest absolute-GEX strike.

Absolute GEX at a strike is call-side gamma exposure plus put-side gamma exposure. It is not the absolute value of net GEX. Ab1, Ab2, and Ab3 are the top three strikes by that sum.

How to read it. A large Ab label with near-zero net GEX is two-sided size, often read as a pin candidate. Ab1 is the largest of the three.

Related: Ab2, abs-gex, net-gex

Learn more

Ab2

Second absolute-GEX strike.

Ab2 is the second strike by call-side plus put-side gamma exposure, after Ab1.

How to read it. Same reading as Ab1, one rank weaker.

Related: Ab1, Ab3, abs-gex

Learn more

Ab3

Third absolute-GEX strike.

Ab3 is the third strike by absolute GEX. There is no Ab4.

How to read it. Same reading as Ab1, two ranks weaker.

Related: Ab2, abs-gex

Learn more

D+

The strike with the highest positive delta exposure.

D+ marks the peak positive delta-exposure strike. Delta exposure is how the book’s delta is distributed, not a second gamma wall. The level drawer treats D+ and D− as critical.

How to read it. Read D+ next to net DEX for the same expiry. It is one strike, not a zone.

Related: D-, net-dex

Learn more

D-

The strike with the most negative delta exposure.

D− marks the peak negative delta-exposure strike. It is the put-side counterpart of D+.

How to read it. Read D− next to net DEX. A strike can carry both a gamma wall and a D label.

Related: D+, net-dex

Learn more

nCOI

The strike with the highest positive net open interest.

Net open interest at a strike is call open interest minus put open interest. nCOI is the most positive strike.

How to read it. Positive net OI means more call open interest than put open interest at that strike.

Related: nPOI, COI, net-oi

Learn more

nPOI

The strike with the most negative net open interest.

nPOI is the strike where put open interest exceeds call open interest by the most.

How to read it. Negative net OI means more put open interest than call open interest at that strike.

Related: nCOI, POI, net-oi

Learn more

COI

The strike with the highest call open interest.

COI is the single peak of call open interest. It ignores put open interest.

How to read it. Use COI when you want the call inventory peak, and nCOI when you want the signed difference.

Related: POI, nCOI, net-oi

Learn more

POI

The strike with the highest put open interest.

POI is the single peak of put open interest. It ignores call open interest.

How to read it. Use POI for the put inventory peak, and nPOI for the signed difference.

Related: COI, nPOI, net-oi

Learn more

AbOI

The strike with the highest absolute open interest.

Absolute open interest is call open interest plus put open interest. AbOI is the densest strike, ignoring direction.

How to read it. A high AbOI with a small net OI is two-sided inventory.

Related: abs-oi, nCOI, COI

Learn more

nCV

The strike with the highest positive net volume.

Net volume is call volume minus put volume. nCV is the most positive strike. The knowledge base says that before 09:30 ET, volume figures reflect the previous trading day.

How to read it. Read nCV as where today’s (or the prior session’s) call volume dominates, not as a direction signal.

Related: nPV, CV, net-volume

Learn more

nPV

The strike with the most negative net volume.

nPV is the strike where put volume exceeds call volume by the most. The same pre-09:30 ET prior-day note as nCV applies in the knowledge base.

How to read it. Read nPV as a volume-flow peak, not as a gamma wall.

Related: nCV, PV, net-volume

Learn more

CV

Call-volume peak: the strike with the highest call volume.

CV is the single highest call-volume strike in the session being shown. The knowledge base says that before 09:30 ET the value reflects the previous trading day. Chain activity uses that prior-day rule except on SPX, XSP, ES, and MES.

How to read it. CV is not a gamma wall. Pair it with net GEX before treating the strike as a level.

Related: PV, nCV, net-volume

Learn more

PV

Put-volume peak: the strike with the highest put volume.

PV is the single highest put-volume strike. The same session note as CV applies.

How to read it. PV is not a gamma wall.

Related: CV, nPV, net-volume

Learn more

Norm (weight)

The signed normalized size of a wall. The API field is weight.

On a level that has a norm, weight is that signed normalized size, or null when the size is missing. A positive norm is call-side. A negative norm is put-side. Extended walls use the sign to choose C or P and omit a zero or missing norm. pT, HVL, cT, and the tail labels do not carry a norm.

How to read it. Do not compare weight across symbols as a raw gamma number. It ranks walls inside one profile.

Related: extended-walls, P1, C1

Learn more

Profile

Gamma profile

Net GEX by strike for one expiry scope, and the levels and state read from it.

A gamma profile is the net gamma-exposure curve for a symbol and an expiry scope. Scope is standalone (that expiry) or cumulative (through that expiry). Primary levels P1, pT, HVL, cT, and C1 are read off that curve. The profile state is then where spot sits among those five strikes. GEX is a map of dealer sensitivity, not a price forecast.

How to read it. Name the symbol, the expiry, and the method before you quote a level. A clean profile keeps P1 ≤ pT ≤ HVL ≤ cT ≤ C1. If any of the five strikes is missing, the state is INSUFFICIENT_DATA.

Related: cumulative, standalone, HVL, is_broken, POS

Learn more

POS_SQUEEZE

Price is at or above C1: positive gamma squeeze.

The API sets this state when spot is at or above cT and at or above C1. Polarity is positive. The fixed sentence is: Price is at or above C1: positive gamma squeeze.

How to read it. The webapp badge is a plus on the positive-squeeze class. Read it as price already through the primary call wall.

Related: C1, POS, profile-color

Learn more

POS

Price is above cTrans but below C1: positive gamma profile.

The API sets POS when spot is at or above cT and still below C1. Polarity is positive. The fixed sentence is: Price is above cTrans but below C1: positive gamma profile.

How to read it. This is positive gamma that has left the transition zone and has not reached C1.

Related: cT, C1, POS_TRANSITION, profile-color

Learn more

POS_TRANSITION

Price is above HVL but below cTrans: positive gamma transition zone.

The API sets POS_TRANSITION when spot is at or above HVL and still below cT. Polarity is positive. The fixed sentence is: Price is above HVL but below cTrans: positive gamma transition zone.

How to read it. Spot is inside the transition zone, on the upper side of HVL.

Related: HVL, cT, transition-zone, profile-color

Learn more

NEG_TRANSITION

Price is below HVL but above pTrans: negative gamma transition zone.

The API sets NEG_TRANSITION when spot is below HVL and still above pT. Polarity is negative. The fixed sentence is: Price is below HVL but above pTrans: negative gamma transition zone.

How to read it. Spot is inside the transition zone, on the lower side of HVL.

Related: HVL, pT, transition-zone, profile-color

Learn more

NEG

Price is below pTrans but above P1: negative gamma profile.

The API sets NEG when spot is at or below pT and still above P1. Polarity is negative. The fixed sentence is: Price is below pTrans but above P1: negative gamma profile.

How to read it. This is negative gamma that has left the transition zone and has not reached P1.

Related: pT, P1, NEG_SQUEEZE, profile-color

Learn more

NEG_SQUEEZE

Price is at or below P1: negative gamma squeeze.

The API sets NEG_SQUEEZE when spot is at or below pT and at or below P1. Polarity is negative. The fixed sentence is: Price is at or below P1: negative gamma squeeze.

How to read it. The webapp badge is a minus on the negative-squeeze class. Read it as price already through the primary put wall.

Related: P1, NEG, profile-color

Learn more

INSUFFICIENT_DATA

Not enough key levels to classify the gamma profile.

The API returns INSUFFICIENT_DATA when any of P1, pT, HVL, cT, or C1 is missing, or when spot is missing. Polarity is neutral. The fixed sentence is: Not enough key levels to classify the gamma profile. The API does not emit INVALID_LEVELS. A broken order of the five strikes is is_broken, and the state still follows spot.

How to read it. is_broken is null when a strike is missing, and true or false when all five exist.

Related: is_broken, gamma-profile

Learn more

Profile coloring

The webapp paints positive gamma green, the transition cyan, and negative gamma red.

Chart zones and the profile badge follow the state. Positive gamma is green, the transition is cyan, and negative gamma is red. Extension zones sit beyond C1 and beyond P1. Badge classes are gex-circle positive, positive-transition, positive-squeeze, negative, negative-transition, and negative-squeeze. The API does not send a color. It sends state, polarity, state_description, and is_broken.

How to read it. Match the color to the state name. Do not infer a second state from the shade.

Related: POS, NEG, POS_TRANSITION, extension-zone

Learn more

Transition zone

The band from pT to cT, with HVL inside it.

The transition zone is the region pT ≤ price ≤ cT, and an unbroken profile keeps HVL inside that band. Above HVL and still below cT the state is POS_TRANSITION. Below HVL and still above pT the state is NEG_TRANSITION. The webapp paints this band cyan.

How to read it. If pT, HVL, and cT are out of order, trust is_broken before you name the zone.

Related: pT, HVL, cT, POS_TRANSITION, NEG_TRANSITION

Learn more

Extension zones

The regions beyond the primary walls: above C1 and below P1.

The call extension is at or above C1. The put extension is at or below P1. Those are the squeeze states, POS_SQUEEZE and NEG_SQUEEZE. The webapp draws them as the zones past the primary walls, outside the positive, transition, and negative bands.

How to read it. An extension is not a new wall. It means spot has passed C1 or P1.

Related: C1, P1, POS_SQUEEZE, NEG_SQUEEZE

Learn more

is_broken

True when P1, pT, HVL, cT, C1 are not in non-decreasing order.

is_broken is false when P1 ≤ pT ≤ HVL ≤ cT ≤ C1. Equal strikes are ordered, so they are not broken. It is true when all five exist and that order fails. It is null when any of the five is missing. The state is still computed from spot. The API does not replace a broken order with a separate INVALID_LEVELS state.

How to read it. A broken profile can still show a state. Read the levels before you trust the zone story.

Related: gamma-profile, INSUFFICIENT_DATA, P1, C1

Learn more

Confluence

Several key levels on one exact strike. More labels make a stronger reaction zone.

On profile-states, confluence groups every present key level that lands on the same scaled strike. Each group has the strike, the labels, and count. Groups are ordered by count descending. A tie prefers the strike nearer that row’s spot, then the smaller strike. The webapp reads a stack of labels on one strike as a stronger reaction zone than a single label.

How to read it. A count of 1 is just that label. A higher count is the confluence. The labels are the same names as the level routes.

Related: gamma-profile, P1, HVL

Learn more

Metrics

Cumulative

The aggregate through the chosen expiry, not that expiry alone.

method cumulative sums the book through that expiration date. method standalone is that expiration only. Gamma, strikes, and chain expiry distribution all use these two names. The default method on gamma routes is cumulative. On the WebApp, today’s 0 bubble shows today’s book in both modes, and a later cumulative expiry excludes today so 0DTE gamma does not dominate the swing map.

How to read it. Quote the method with the level. A cumulative C1 and a standalone C1 are different strikes when later expiries add size.

Related: standalone, 0, ALL, gamma-profile

Learn more

Standalone

That expiry only, without later or earlier expiries added in.

method standalone is the single expiration. The chain route uses the same word for the per-expiry block, and cumulative for every expiry through that date. The last cumulative block matches chain activity.

How to read it. Use standalone when you want the expiry you named, not the stack behind it.

Related: cumulative, gamma-profile

Learn more

Net GEX

Signed gamma exposure. Positive is call-dominated, negative is put-dominated.

Net GEX is the aggregated gamma exposure dealers are modeled as carrying. At a strike it is the signed value. Across an expiry it is the expiry total on net-exposures. It is a sensitivity map, not a direction signal and not a forecast.

How to read it. Sign is the side. Magnitude is the size. Compare it with abs-gex before calling a strike a pin.

Related: abs-gex, gamma-profile, HVL

Learn more

Net DEX

Signed delta exposure for the same scope as net GEX.

Net DEX is the delta-exposure counterpart of net GEX, at strike level and as an expiry total.

How to read it. Pair the expiry total with D+ and D−, which mark the extreme strikes.

Related: D+, D-, net-gex

Learn more

Net open interest

Call open interest minus put open interest.

Net OI is signed. Positive means more call open interest than put open interest at that strike.

How to read it. The peaks are nCOI and nPOI. The one-sided peaks are COI and POI.

Related: nCOI, nPOI, abs-oi

Learn more

Absolute open interest

Call open interest plus put open interest.

Absolute OI ignores direction. It shows where the inventory is densest. The peak strike is AbOI.

How to read it. Large absolute OI and small net OI means two-sided size.

Related: AbOI, net-oi

Learn more

Absolute GEX

Call-side gamma exposure plus put-side gamma exposure.

Absolute GEX is the sum of the two sides, not the absolute value of net GEX. Large absolute GEX with near-zero net GEX is the two-sided case the knowledge base calls a pin candidate. Ab1, Ab2, and Ab3 mark the top three strikes.

How to read it. Do not treat abs-gex as |net-gex|. The two series answer different questions.

Related: Ab1, net-gex

Learn more

Net volume

Call volume minus put volume.

Net volume is signed flow. The knowledge base says that before 09:30 ET, volume reflects the previous trading day. Chain activity sets volume_is_prior_day on a weekday before 09:30 ET, except for SPX, XSP, ES, and MES.

How to read it. nCV and nPV are the signed peaks. CV and PV are the one-sided peaks.

Related: nCV, CV, gex-by-volume

Learn more

GEX by volume

A gamma figure that uses traded volume instead of open interest.

GEX by volume is the flow-aware gamma proxy. The webapp formula omits the ×100 contract multiplier, so the scale is not the scale of net GEX. It shows where the session’s activity sits, as opposed to the open-interest book.

How to read it. Do not add it to net GEX. Read it as a separate column.

Related: net-gex, net-volume

Learn more

Expiry

0

Nearest listed expiry. It is 0DTE only when that date is today.

The alias 0 is the nearest available expiry on the symbol’s chain. It is same-day 0DTE when the expiration date is today. Otherwise read dte. The API emits the alias as 0. Letter case does not apply.

How to read it. Check expiration_date and dte next to the alias. Do not assume 0 means zero days on a historical row.

Related: 1, cumulative, expected-move-box

Learn more

1

The second listed expiry, the next date after the nearest.

The alias 1 is the second available expiry. It is not automatically tomorrow.

How to read it. The API emits 1. Resolve it with list_expiries when you need the calendar date.

Related: 0, w1

Learn more

w1

First weekly key flag.

w1 through w4 are the weekly key flags, a few days to a couple of weeks out. The API emits a lowercase w. Input such as W1 folds to w1 before the cache key. The Learn page prints these flags as W1–W4.

How to read it. A weekly flag and 0 or 1 can name the same date. aliases lists every flag on that row.

Related: w2, 0, M1

Learn more

w2

Second weekly key flag.

w2 is the next weekly key after w1. Canonical form is lowercase w.

How to read it. Same reading as w1, one step further out.

Related: w1, w3

Learn more

w3

Third weekly key flag.

w3 is the third weekly key. Canonical form is lowercase w.

How to read it. Same reading as w1.

Related: w2, w4

Learn more

w4

Fourth weekly key flag.

w4 is the last weekly key. There is no w5.

How to read it. Same reading as w1.

Related: w3, M1

Learn more

M1

First monthly key flag, a standard monthly (third Friday).

M1, M2, and M3 are the monthly key flags, used for swing structure and OpEx positioning. The API emits an uppercase M. Input such as m1 folds to M1. On call/put skew history, an alias resolves only for M1, M2, or M3.

How to read it. is_monthly is a separate boolean: true on the monthly expiry date, whether or not this alias is present.

Related: M2, w1, ALL

Learn more

M2

Second monthly key flag.

M2 is the next monthly key after M1. Canonical form is uppercase M.

How to read it. Same reading as M1, one monthly further out.

Related: M1, M3

Learn more

M3

Third monthly key flag.

M3 is the last monthly key. There is no M4.

How to read it. Same reading as M1.

Related: M2, ALL

Learn more

ALL

The furthest listed expiry, the whole chain in cumulative mode.

ALL is the furthest available expiry. In cumulative mode it is the whole listed chain, with the WebApp’s today-exclusion on a later cumulative read. The API emits ALL in uppercase. Input such as all folds to ALL.

How to read it. ALL is an alias, not a request to drop the expiry filter. It still resolves to one date.

Related: cumulative, 0, M1

Learn more

Clocks

Data clock

Live options and derived data refresh every minute on NYSE weekdays from 06:40 through 16:00 ET.

Inside that window, including both endpoints, the snapshot moves about once a minute. Outside it, on weekends, and on a full NYSE holiday, the API serves the last snapshot. A shortened session keeps the same window. The next live update is 06:40 ET on the next NYSE session: today, when the call is before 06:40 on a session day. Full closures are skipped. The 0DTE expected-move box uses different clocks. The PRE window starts at 06:30 ET and the box is written about 06:35 ET. The OPEN anchor is 09:30 ET and the box is written about 09:33 ET. EOD is written about 16:15 ET. See expected-move-box. This 06:40 start is when the API publishes, not when those boxes are written. The clock is America/New_York with the numeric offset.

How to read it. Do not treat a weekend response as a failed request. Read meta.built_at for when the body was projected and meta.as_of for the datapoint clocks. Past 0DTE boxes are POST /api/v1/history/range/0dte-box (MCP list_history_0dte_expected_move_boxes).

Related: expected-move-box, market-session, as_of, built_at

Learn more

Market session

Cash session is 09:30–16:00 ET. Gamma history labels pre, open, and close around 09:30.

On gamma history, pre is the day’s first snapshot in [06:30, 09:30) ET. open is the earliest snapshot at or after 09:30 ET. close is the latest snapshot at or after 09:30 ET, and only when that day is before today ET. A snapshot can carry more than one label. Chain volume is the prior session on a weekday before 09:30 ET, except SPX, XSP, ES, and MES.

How to read it. sessions on a history request filters to pre, open, close. Omit it for every snapshot that day.

Related: data-clock, expected-move-box

Learn more

meta.as_of

The datapoint clocks this response was built from, as ET timestamps with an offset.

meta.as_of is an object. The keys depend on the route: chain, secondary, or price, and only the clocks that route publishes. Each value is ISO 8601 with an America/New_York offset, not a Z suffix. An empty object means this route did not attach a datapoint clock.

How to read it. as_of is not the same as built_at. as_of is the source clock. built_at is when the JSON was projected.

Related: built_at, data-clock

Learn more

meta.built_at

When this response body was projected, ET with an offset, to the millisecond.

meta.built_at is the projection time of the cached body, for example 2026-10-16T15:36:03.000-04:00. It is not the trade time and not the exchange close. A cache hit can be younger than the underlying snapshot; compare it with meta.as_of.

How to read it. A stale flag on the HTTP response is separate. built_at still says when the bytes were built.

Related: as_of, data-clock

Learn more

0DTE expected-move box

A fixed band around a peg for the expiring session. The PRE window starts at 06:30 ET and the box is written about 06:35 ET. The OPEN anchor is 09:30 ET and the box is written about 09:33 ET. EOD is written about 16:15 ET.

The live route is POST /api/v1/range/0dte-box. Each symbol has latest and previous. snapshots always has eod, pre, and open; a missing capture is null. spot_price on a snapshot is the peg the band is centered on. The webapp anchors the PRE window at 06:30 ET and the OPEN window at 09:30 ET, America/New_York. The generator writes the rows later: PRE about 06:35 ET, OPEN about 09:33 ET, and EOD about 16:15 ET. Those write times are approximate, not a promise of that exact minute. The API data clock is separate: live options and derived data start at 06:40 ET and then refresh about once a minute through 16:00 ET on an NYSE weekday. Outside that window the last snapshot is served. A PRE box written about 06:35 ET can show up on this route from 06:40. Past days are POST /api/v1/history/range/0dte-box (MCP list_history_0dte_expected_move_boxes).

How to read it. A null session means that capture was not stored. It is not a zero-width band. 06:30 and 09:30 ET are the webapp anchors, not the database write. The rows land about 06:35, about 09:33, and about 16:15 ET. 06:40 ET is when the API starts serving live data, not when PRE is written.

Related: data-clock, 0, mapped-symbol

Learn more

Symbols

Mapped symbol

A synthetic ticker priced from a base symbol, such as XSP from SPX or /ES1 from SPX.

A mapped symbol does not have its own option chain in this feed. Levels and the chain are the base symbol’s, scaled. XSP is one tenth of SPX, a fixed scale, and it is not a row of instrument_derivative_map. A future such as /ES1 or /NQ1 is mapped from its base through instrument_derivative_map and that day’s conversion factor. A micro future uses its parent’s factor. list_symbols sets is_synthetic and mapped_from.

How to read it. History for a mapped future exists only on days with a mapping in force: as_of_date on or before that day, and a positive conversion_factor. Days before the first mapping are empty even when the base symbol has rows. Whether the fixed XSP tenth applies on every SPX history day is not a row of that table.

Related: conversion-factor, cfd-price, xsp

Learn more

XSP

XSP is SPX at one tenth, a fixed scale.

XSP copies the SPX chain and levels at 0.1, with no tick rounding. It is not looked up in instrument_derivative_map. The 0DTE box uses the SPX row at one tenth. A future’s daily factor does not apply to XSP.

How to read it. Divide an SPX level by 10 to compare it with XSP. Do not apply a futures conversion factor as well.

Related: mapped-symbol, conversion-factor

Learn more

Conversion factor

The daily multiplier from instrument_derivative_map for a mapped future.

A history row for a mapped future is issued only when a mapping is in force that ET day: as_of_date on or before the day, and a positive conversion_factor. The levels and the spot use that day’s factor. A later factor is not applied backwards. A micro future uses its parent’s factor. The first mapping date is the first day that can return rows.

How to read it. If a past day is an empty list, check the first mapping date before treating the base symbol’s history as missing.

Related: mapped-symbol, xsp

Learn more

CFD price

Futures and index prices in this API come from CFD prices plus a proprietary non-CBOE mapping.

The underlying price on a future or an index is not a CBOE print. It is a CFD price passed through Tanuki’s own mapping. Option analytics on a mapped symbol are the base chain, scaled. They are not a native futures-options chain.

How to read it. Do not reconcile a futures spot_price to a CBOE index print one-for-one.

Related: mapped-symbol, conversion-factor

Learn more

Ecosystem

Tanuki ecosystem

One book of levels, shown in the WebApp, on TradingView, in Discord, and on this API.

The WebApp is the live strike table and chart. TradingView indicators draw the same family of levels on a chart, on their own refresh schedule. Discord carries the bots and the session rooms. This REST API and the MCP server expose the same routes: every MCP tool is one POST /api/v1 route. Call get_glossary before interpreting a label. The bearer token stays on the HTTP request.

How to read it. A level name means the same thing on each surface. The clock does not: indicators refresh on a schedule, the API minute-refreshes inside the data clock.

Related: webapp, tradingview, discord, rest-api, mcp

Learn more

WebApp

The member app: GEX Live table and chart, matrix, screener, and the expected-move box.

The WebApp is where the labels, colors, and expiry bubbles are drawn. The API returns the same names without the paint.

How to read it. Use the Learn pages linked from each glossary row when you need the picture the API does not send.

Related: gamma-profile, profile-color, ecosystem

Learn more

TradingView

Chart indicators that plot Tanuki levels, including GEX Profile PRO and the 0DTE expected-move box.

The indicators are a chart view of the same level family. Their refresh is the scheduled indicator update, not the API’s once-a-minute window. Copy Levels in the WebApp pastes a snapshot onto the chart between those updates.

How to read it. Do not expect an indicator plot and an API row from the same minute unless you just pasted a snapshot.

Related: ecosystem, expected-move-box, data-clock

Learn more

Discord

The community and the bots that post GEX snapshots and session notes.

Discord is a delivery surface for the same terminology. A bot message is not a second definition of a label.

How to read it. When a bot print and an API row disagree, compare symbol, expiry, method, and time before comparing the number.

Related: ecosystem, data-clock

Learn more

REST API

POST /api/v1 with a JSON body and a bearer token. The MCP tools call the same routes.

Every market route is POST. The body is a flat JSON object. Pages use cursor. Times are America/New_York with a numeric offset. meta.docs on a successful response points at this route’s pro-docs page and at the glossary.

How to read it. Start with list_symbols, then the route you need. Call get_glossary once before reading labels.

Related: mcp, ecosystem, get_glossary

Learn more

MCP

The same routes as tools on POST /mcp/v1. get_glossary is the label dictionary.

tools/list is the route list. tools/call runs one route. The instructions tell the model to call get_glossary once before interpreting levels. The resource tanuki://docs/v1/glossary is the same text for a client that reads resources. Discovery, including get_glossary, uses the per-minute limit and does not add a usage credit.

How to read it. Pass the bearer token on the HTTP request. Do not put it in the tool arguments.

Related: rest-api, ecosystem

Learn more

get_glossary

This dictionary: POST /api/v1/discovery/glossary, or the MCP tool get_glossary.

Optional terms is a JSON array of ids from this list, at most 64. Omit it for the full glossary; meta.request.terms is then null. An empty array is the full glossary too, and meta.request.terms echoes []. An unknown id is 422, and error.details lists the ids that exist. Ids are case-sensitive: w1 is not W1, and D+ is not D.

How to read it. Call it once per session, then keep the text. Filter with terms when you only need a few rows.

Related: P1, HVL, gamma-profile, data-clock

Learn more

TanukiTrade API and MCP. Derived options analytics for your code and for agents. Not investment advice. tanukitrade.com