Skip to main content

Analog Events

Who it’s for
Users who want historical context for the current market state
Assumes
You have read the discovery vocabulary
Applies to
Indian index and India VIX, daily resolution, sessions since 2010
Historical frequencies, not a forecast

Historical frequencies of past events, not a forecast, not a probability, and not investment advice. Past outcomes do not constrain future ones.

That is the engine's own disclaimer, and this screen renders it. Read the last sentence twice. It is the correct way to think about everything on this page.


What is this?

An engine that finds historical sessions resembling the current market state, and reports what the next session did in each of them.

You pick an event type. It finds every session since 2010 where that event occurred, ranks them by similarity to today, and reports the next-session outcome for each.

Why does it exist?

"The last time VIX jumped like this, what happened?" is a question traders ask constantly and usually answer from memory, which is the least reliable possible method. The engine answers it from data, and is careful to present the answer as a frequency count, not a probability.

The distinction is the whole design. Forty past instances where the next session rose is a fact about forty past sessions. It is not a 40-in-N chance of anything.

How does it work?

Event types

Seven, each with a precisely-stated definition. The definitions are worth reading in full because they show the care taken over what counts:

Event typeDefinition
Volatility expansionIndia VIX up ≥ 15% over 5 sessions with level ≥ 20. Both conditions matter: 11 to 13 is a 20% jump and not an expansion
VIX crushIndia VIX down ≥ 15% over 5 sessions from a level of 20 or more. The starting level is what matters: a fall from 12 to 10 is a quiet market getting quieter, not fear draining out of a tense one
Gap up openNIFTY opens ≥ 1% above the previous close. Measured open-against-previous-close, so it is the overnight repricing and not the day's move
Gap down openNIFTY opens ≥ 1% below the previous close, measured the same way
52-week highThe index at a 52-week high
52-week lowThe index at a 52-week low
Breakout after tight rangeA range break following a compressed period

Each event's threshold is a parameter you can adjust, the defaults above are the definitions the engine ships with.

The comparison vector

Similarity is computed over a feature set, and one constraint governs its membership:

Only quantities available for every session since 2010 appear here; adding a feature that exists only recently would silently shrink the comparable history.

Features include the VIX level, its 5-day change, the index level and 20-day historical volatility. Each historical match carries a similarity score against today.

The outcome measure

MeasuredThe next session's close-to-close move
ResolutionDaily
Classified asPOSITIVE (≥ +0.5%), NEUTRAL (between), NEGATIVE (≤ -0.5%)

One session, one horizon, one band width. The engine states this in its own definition string rather than leaving it to be inferred.

Data requirements

The engine refuses rather than approximating:

  • Each event type declares a warm-up in sessions. Insufficient aligned history is an error naming both the requirement and what is available.
  • Index and VIX series must be aligned and ascending. Misalignment is an error.
  • If the current session lacks enough history, the query fails rather than comparing against a partial vector.

Freshness

Analog snapshots carry their own freshness state, with a STALE threshold defined in trading sessions behind the current one.

The engine publishes an algorithm version (analogs-v1), so a result can be attributed to a specific revision.

How do you use it?

  1. Pick an event type.
  2. Adjust its threshold if the default is not the condition you mean.
  3. Read the matched sessions with their similarity scores.
  4. Read the outcome distribution across matches.
  5. Read the regime each match sat in, a gap-down in a bull regime and one in a bear regime are different events with the same name.
  6. Treat the whole thing as context for a decision, not as the decision.

Example

Illustrative. Not a real result.

Event type: Volatility expansion (VIX +15% over 5 sessions, level ≥ 20) Sessions scanned: 3,940. Matches: 31.

Next-session outcomeCount
POSITIVE (≥ +0.5%)13
NEUTRAL6
NEGATIVE (≤ -0.5%)12

Closest match: 18 Mar 2022. Similarity 0.91, VIX 24.1 (up 18.3% over 5 days), HV20 19.4%, regime bear. Next session +1.2%.

What to take from it: thirty-one historical instances, split almost evenly between positive and negative next sessions. That is a genuinely useful finding. It says this event type has carried no directional edge at a one-day horizon in this history. Which is exactly the kind of answer memory would never produce, because memory keeps the dramatic instances.


Limitations

Small samples. A well-specified event over fifteen years yields tens of instances, not thousands. A 60/40 split on 31 observations is not a finding.

One horizon. Next session, close to close. It says nothing about the following week.

Historical frequency is not probability. The engine says this itself. Counting past occurrences does not produce a chance of a future one.

Regime is not controlled for. Matches are ranked by feature similarity; the regime is reported alongside, not held constant. Filter by it yourself.

One market. Indian index and India VIX. There is no equivalent for individual equities or for crypto.

Feature-set conservatism has a cost. Restricting features to those available since 2010 keeps the history comparable. And excludes data that might improve similarity matching on recent sessions. That is a deliberate trade and worth knowing about.

Threshold sensitivity. Changing a threshold changes the match set. A finding that disappears when you move VIX ≥ 20 to VIX ≥ 19 was never a finding.


Next