Bybit perpetuals · volume profiles · 230 symbols · 90,283 symbol-days

Does where the day opens relative to yesterday's volume profile predict where it goes?

Every day the market builds a volume profile — a picture of where trading actually happened over 24 hours — from which we get three reference prices: the POC (the price where the most trading happened), and the VAH / VAL (top and bottom of the 70% value area, "fair value"). We asked: when the new day opens above, below, or inside yesterday's value area, does that tell us where the day is going? Full answer, with statistical tests, out-of-sample checks, and per-symbol consistency, below.

230liquid symbols
90,283symbol-days
522UTC days
2025-03-30 → 2026-09-02coverage

Headline findings

The naive theory is dead; the structure survives. Opening above yesterday's high-value zone is worse than a coin flip (45.5% up-rate, +8 bps n.s.) — but opening below yesterday's value bottom bounces (+19 bps, +53 bps out-of-sample). More importantly, the shape of yesterday — where the POC sat, and especially the London session's value area — carries more next-day signal than where today opens.

The below-VAL bounce is real

+19 mean day ret

+53 out-of-sample

Opening below yesterday's value bottom bounces back up — significant (p < 0.001) and stronger out-of-sample. The one open-location effect that survives.

"Open above value = bullish" fails

45.5% up-rate, above VAH

+8 mean, not significant

The classic market-profile theory — worse than a coin flip. Open location alone is not a crystal ball.

Structure of yesterday matters more

+13 POC near VAH → next day

+31 out-of-sample

Where the volume sat (POC high vs low) predicts next-day direction and survives out-of-sample — the absorption reading, not the naive one.

The London session carries the signal

-18 London VA spread

p = 0.006 only significant reference

The full-day value area most traders reference is not significant; London's is. London P-shape → next day +22 bps.

Executive summary — what the data says, in plain English

Written 2026-09-02 · 230 liquid Bybit perps · 90,283 trading days · ~522 days each

(Mar 2025 → Sep 2026) · 70% value area · UTC day profiles

What we did

Every day, the market builds a "volume profile": a picture of where the trading

actually happened over the previous 24 hours. From that picture we get three

reference prices:

  • POC — the price where the most trading happened (the market's "memory point")
  • VAH / VAL — the top and bottom of the value area, the zone where 70% of the day's business took place ("fair value" for that day)

We then asked: when the new day opens above, below, or inside yesterday's value

area — does that tell us anything about where the day is going? And we went

deeper: does it matter where the volume sat (POC near the top vs bottom)? Do the

individual trading sessions (Tokyo, London, New York) carry their own signals?

And what separates the days that went up from the days that went down, within each

scenario?

All results below come from real Bybit kline data, with statistical tests,

out-of-sample checks, and per-symbol consistency — and every edge is shown both

gross and after a realistic ~10 basis point round-trip trading cost.


The big picture

1. Where the day opens is NOT a crystal ball by itself

The classic market-profile theories — "open above yesterday's value = bullish day",

"open below = bearish day" — do not hold up in crypto perps:

You open...Day went UPAverage day returnVerdict
Above yesterday's VAH45.5%+8 bps (not significant)❌ no real edge
Inside value, above POC46.3%−4 bps
Inside value, below POC47.0%+4 bps
Below yesterday's VAL48.9%+19 bps (significant)⚠️ small bounce

Two surprises here:

  • Opening above yesterday's high-value zone gave essentially nothing — worse than a coin flip. The popular "open drive" idea (excess begets more excess) doesn't survive contact with real data.
  • The one statistically real effect is the opposite of the theory: opening below yesterday's value bottom produced a mild bounce back up (+19 bps, and it got stronger out-of-sample at +53 bps). It's a small mean-reversion effect, and after costs it's marginal (+9 bps). Not a money printer — but it's real.
2. The STRUCTURE of yesterday matters more than where today opens

The interesting signal lives in how the previous day's volume was distributed:

  • POC near yesterday's high (VAH) → next day slightly up (+13 bps, significant, holds out-of-sample). This supports the absorption reading — when the most trading happened at the highs, buyers were defending those prices, and that strength carried into the next day. The opposite (distribution/bearish) reading is not supported.
  • POC near yesterday's low (VAL) → next day slightly down (−13 bps).
  • High volatility amplified things: opening below VAL in a high-volatility environment bounced +40 bps (vs +5 bps in calm conditions); opening above VAH only worked in calm conditions (+26 bps).

So: the shape of yesterday is a real (if small) directional hint. The open

location alone is not.

3. The London session is the one that matters

This is the most practically interesting finding. We split each day into its three

trading sessions and built a separate volume profile for each — and the London

session's value area was the only reference that significantly predicted next-day

direction (spread of −17.8 bps between "open above London VA" vs "open below

London VA", p = 0.0055). The full-day value area — the one most traders use — was

not significant.

A few more session-level signals:

  • A London session that closed near its highs (P-shape) → next day +22 bps (p < 0.0001) — the strongest single session effect we found, and again the opposite of the naive "distribution = bearish" story.
  • Which session dominated the previous day matters: Tokyo-heavy day → next day +13 bps; London-heavy day → next day −11 bps; NY-heavy → +10 bps.
  • Session "momentum" (a strong Tokyo, London, or NY move carrying into the next day) exists but is thin (+8–10 bps).
4. The "first hour predicts the day" theory mostly fails too
  • Only 43–45% of the time does the first hour even continue the direction of an outside-the-value open (42.6% above VAH, 45.3% below VAL). The "opening drive" idea is falsified.
  • The first hour's direction does line up with the day's direction about 60% of the time — but that's only knowable after the first hour, and the payoff difference is small. Not exploitable at the open.
5. Gaps tend to fill — but slowly

About 80% of days that open outside yesterday's value area return into it at

some point during the day. So fading an overextended open has eventual support —

but it's not a fast or clean edge.


What separates UP days from DOWN days? (factual vs counterfactual)

For each scenario we compared the days that went up vs the days that went down,

using only information known at the open:

  • On days that opened above yesterday's value high, the UP days came from calmer, buyer-heavy prior days: lower prior volatility, more volume sitting in the upper half of the prior profile, and a Tokyo POC positioned higher. In other words, an above-value open after a quiet, accumulation-style day behaves differently from one after a wild, distribution-style day.
  • On days that opened below yesterday's value low, the UP days had a wider prior New York value area and a thinner London presence — suggesting the bounce is more reliable after an NY session that ranged widely.

A simple decision tree using these prior-day/session features, split by

calendar date (first 60% of days train, last 40% test), does not reliably

beat the scenario base rate out of sample (above-VAH: 55.0% vs 54.5% base;

inside-VA above POC the tree is worse than guessing the majority). Real

structure, tiny and unstable — not a tradeable signal.


The honest caveats

  1. Effects are small. Most are 10–25 bps — the size of the bid-ask spread.

Only a few survive a 10 bps round-trip cost, and barely.

  1. Per-symbol agreement is weak (46–60% of symbols agree with the pooled

direction). These are tendencies across the market, not laws that hold for

every coin. Some symbols will behave opposite.

  1. This is 522 days of one regime. Crypto structure can change; treat these as

historical statistics, not guarantees.

  1. The trees' out-of-sample improvement is ~0–1 point over guessing the

majority, and can go the wrong way once the split is a real calendar cut.


What this means in practice

  • Don't trade "open above/below value = direction". The naive version is dead. The below-VAL bounce is the only raw effect worth respecting, and only in high-volatility conditions (+40 bps gross / +30 bps net of 10 bps).
  • Watch the London session. Its value area and shape carry more next-day signal than the full-day profile most people reference. London P-shape → positive next day is the single most robust session finding.
  • Use the structure, not the level. Yesterday's POC position (high vs low) and the prior volatility regime tell you more than where today's open falls.
  • The framework is now the asset. The code, data, and site let us test any refinement — session-by-session leads, per-symbol filters, cost-aware backtests — without re-building anything.

Full numbers behind every claim: see the tables on this page, or the detailed

findings report below.

Potential trading strategies

These are historically measured tendencies, not trade recommendations.

Every setup below is knowable at the 00:00 UTC open. Edges are pooled across

230 liquid Bybit USDT perps (2025-03-30 → 2026-09-02). Round-trip cost is

assumed at 10 bps. Per-symbol agreement is only 46–60%, so a universe-wide

rule will lose on a large minority of coins.

Do not deploy any of these without: a per-symbol gate, walk-forward

validation on that symbol, live-spread costs, and a kill switch if the

regime changes.


Do not trade

IdeaWhy it died
Open above prior VAH → long the day+8 bps, not significant, win rate 45.5%
Open inside VA (above or below POC) → fade/follow±4 bps, noise
First-hour "opening drive" after an excess openContinues only 42.6–45.3% of the time
Decision-tree overlay on open locationCalendar OOS accuracy ≤ base rate
Calendar-gap fill (open vs prior close)24/7 perps: gap ≈ 0

Candidates that survived the gates

A "finding" here means: in-sample p < 0.05, out-of-sample p < 0.05, and

the same sign in both halves. Session tests (S1–S4) report raw p-values only.

1. High-vol below-VAL bounce (best raw open-location edge)
SetupUTC open below prior-day VAL, and prior-day ATR is in the symbol's high historical tercile
ActionLong at the open; exit at the UTC close (or flatten if price re-enters the prior VA)
HorizonOpen → close (~24h)
Historical+40 bps gross / +30 bps net · win rate 50.0% · OOS +97 bps
EvidenceH1 below_VAL (+19 bps pooled); H15 below_VAL_atr_high
Why it might existExcess below value is more often rejected than continued, and the bounce is concentrated in already-volatile names
Why it might failWin rate is a coin flip; the +19 bps pooled edge is only +9 bps after costs; 40% of symbols disagree
2. Open below prior London value (session reference)
SetupUTC open below the prior London session VAL (09:00–17:00 UTC profile)
ActionLong at the open; exit UTC close
HorizonOpen → close
Historical+24 bps · win rate 49.2% · p < 1e-6. Spread vs open-above-London-VAH: −17.8 bps (p = 0.0055)
EvidenceS1 London below_VAL / SPREAD(abv-blw)
Why it might existLondon is where most two-sided size trades; its value area is a tighter next-day anchor than the 24h profile
Why it might failSession tests are not OOS-gated the same way as H-tables; overlap with NY 13:00–17:00
3. London P-shape continuation (strongest session shape)
SetupPrior London session classified P (POC near session high, upper-half volume skew)
ActionLong next UTC day (open → close)
HorizonNext full UTC day
Historical+22 bps · win rate 48.2% · p = 9.1e-5
EvidenceS2 London shape P
Why it might existVolume at London highs reads as absorption, not distribution — the same pattern as daily POC-near-VAH
Why it might failNaive "P = distribution = short" is the popular reading; crowding that fade is what this edge is betting against
4. Prior-day POC location (structure, not the open)
Setup APrior-day POC in the top third of the day's range (poc_pos > 0.66) → long next day
Setup BPrior-day POC in the bottom third (poc_pos < 0.33) → short next day
ActionHold open → close
HistoricalNear VAH: +13 bps (OOS +31) · near VAL: −13 bps (OOS −19)
EvidenceH7–H9
Why it might existPOC at the high = buyers defended; POC at the low = sellers defended. Next day inherits that lean
Why it might failNet of 10 bps the long is only +3 bps; short is −23 bps if you are long-biased by default — the short is the cleaner of the two if you can actually get short
5. Daily P / b profile shape
Setup APrior day shape P → long next day
Setup BPrior day shape b → short next day
HistoricalP: +14 bps (OOS +35) · b: −13 bps (OOS −19)
EvidenceH11
NoteClosely related to strategy 4 (POC position is an input to shape). Do not stack 4 and 5 as independent edges
6. Wide prior value area
SetupPrior-day va_width_ratio above that symbol-day's sample median (wide VA)
ActionLong next day (the wide-VA cohort's mean return is positive; this is not a range-expansion trade)
HistoricalWide: +13 bps (OOS +14) · narrow: −2 bps and sign-flips OOS — do not fade narrow VAs
EvidenceH10
Why it might failDirectional, not a volatility-breakout rule. Narrow-VA "expansion day" folklore is not supported
7. Session-dominance lean
Setup APrior day Tokyo- or NY-dominant by turnover share → slight long lean
Setup BPrior day London-dominant → slight short lean
HistoricalTokyo +13 bps (p = 0.016) · NY +10 bps (p = 0.004) · London −11 bps (p = 0.018)
EvidenceS4
Why it might failThin; no OOS gate; dominance is just "which session printed more notional"
8. Below-VAL bounce in a downtrend
SetupUTC open below prior VAL and prior close is below daily EMA20
ActionLong (fade the excess, not the trend)
Historical+20 bps (OOS +53) · win rate 48.8%
EvidenceH16 below_VAL_trend_down
NoteOverlaps strategy 1. High-ATR + below-VAL is the tighter filter; this is the trend-regime view of the same bounce
9. Calm above-VAH (continuation only when quiet)
SetupUTC open above prior VAH and prior ATR in the low tercile
ActionLong open → close
Historical+26 bps (OOS +25) · win rate 48.3%
EvidenceH15 above_VAH_atr_low
Why it might failThe unfiltered above-VAH trade is dead. This only works in the calm slice; high-ATR above-VAH is −16 bps
10. Intraday fill-back (eventual, not timed)
SetupOpen above prior VAH, or below prior VAL
ActionFade back toward the VA intraday, not as a day-hold
HistoricalFill rate 79.5% (above VAH) / 77.7% (below VAL) — price touches the VA edge at some point
EvidenceH12
Why it might fail"Touches" ≠ profitable path. No timing, no stop study, no time-to-fill. Treat as a management hint (don't panic if it comes back) rather than an entry

How you might combine them (not backtested as a portfolio)

The data support stacking structure filters on the below-VAL bounce, not

running ten independent systems:

  1. Require UTC open below prior VAL (strategy 1 / 8 core).
  2. Prefer high prior ATR (strategy 1) and/or prior close below EMA20 (strategy 8).
  3. Prefer London VAL also below the open (strategy 2) — same direction, better reference.
  4. Skip names where per-symbol history of this setup is the opposite sign (H17:

only 60% of symbols agree with the pooled below-VAL bounce).

  1. Size as if the edge is 10–30 bps, not 1%. After 10 bps costs, several of

these are already gone.

A second, separate sleeve is next-day long after London P-shape or POC-near-VAH

(strategies 3–5) — a structure long that does not need an excess open.


Operational constraints (from this study)

  • Clock: all "opens" are 00:00 UTC, not an exchange bell.
  • Cost: 10 bps round-trip is already enough to kill H1 unfiltered and most session-momentum effects.
  • Holding period studied: open → close. Intraday scaling was not optimized.
  • Universe: liquid Bybit USDT perps, listed ≥ 60 days, ≥ $1M 24h turnover.
  • What was not tested: leverage, funding, stop placement, partial fills, per-symbol walk-forward, or stacking rules 1–10 as a single combined signal.

H1–H3 · Day return by open location vs prior-day profile

GroupNMean (bps)Median (bps)Win %tpOOS mean (bps)OOS pVerdict
above_VAH16,864+8-3545.5%1.360.173+100.227n.s.
VA_above_POC25,597-4-2846.3%-0.740.459+70.315n.s.
VA_below_POC27,581+4-2447.0%0.780.437-70.242n.s.
below_VAL20,011+19-948.9%4.13<0.001+53<0.001sig + OOS

Mean open→close return in bps by where the day opened relative to the prior day's 70% value area (VAH/VAL/POC). OOS = out-of-sample split. Only below_VAL is significant and holds out-of-sample.

H4 · Excess magnitude scaling (OLS slope per VA-width, corr)

GroupNOLS slope (bps/VA-width)Pearson rSpearman ρρ pVerdict
dist_above_VAH16,864-28.71-0.017-0.0090.247
dist_below_VAL20,0110.000.002-0.0170.018

H7–H9 · Prior-day POC position zone → next-day return

GroupNMean (bps)Median (bps)Win %tpOOS mean (bps)OOS pVerdict
poc_near_VAL23,104-13-3845.4%-2.610.009-190.006sig + OOS
poc_central45,177+12-2147.5%3.32<0.001+110.023sig + OOS
poc_near_VAH21,772+13-1947.6%2.560.010+31<0.001sig + OOS

Where the most trading happened (POC) in the prior day's range predicts next-day direction — all three zones are significant and hold out-of-sample.

H10 · Prior VA width band → next-day return & range

GroupNMean (bps)Median (bps)Win %tpNext-day range %Verdict
va_narrow45,017-2-2746.5%-0.410.68010.21%n.s.
va_wide45,036+13-2247.4%3.93<0.0019.73%sig + OOS

H11 · Prior-day profile shape → next-day return & range

GroupNMean (bps)Median (bps)Win %tpNext-day range %Verdict
shape_P19,973+14-2047.5%2.580.0109.82%sig + OOS
shape_b22,372-13-3845.2%-2.430.01511.04%sig + OOS
shape_D47,708+11-2047.5%3.42<0.0019.53%sig + OOS

H15 · Open-location effect by ATR regime (low/high tercile)

GroupNMean (bps)Median (bps)Win %tpVerdict
above_VAH_atr_low6,966+26-1048.3%4.02<0.001sig + OOS
above_VAH_atr_high4,547-16-9941.7%-1.120.263n.s.
below_VAL_atr_low8,273+5-1847.5%0.830.405n.s.
below_VAL_atr_high5,700+40+150.0%3.83<0.001sig + OOS

Opening below VAL in a high-volatility environment is where the bounce concentrates (+40 bps).

H16 · Open-location effect by trend regime (daily EMA20)

GroupNMean (bps)Median (bps)Win %tpVerdict
above_VAH_trend_up8,474+20-2247.4%2.230.026in-sample
above_VAH_trend_down8,390-5-4743.5%-0.670.505n.s.
below_VAL_trend_up5,342+17-649.3%1.640.101n.s.
below_VAL_trend_down14,669+20-1148.8%3.91<0.001sig + OOS

H5–H6 · First-hour drive & day leadership

GroupNOpen-drive rateDrive p1h mean (bps)Day follows 1hDay ret | 1h upDay ret | 1h dnVerdict
drive_above_VAH16,86442.6%<0.001-7
lead_above_VAH16,86460.3%+138-92
drive_below_VAL20,01145.3%<0.001-1
lead_below_VAL20,01158.0%+103-80

The "opening drive" theory mostly fails: only 43–46% of outside-value opens continue in the first hour (p ≪ 0.001, but in the wrong direction for the theory).

H12–H13 · Fill-back into prior VA

GroupNFill rateVerdict
fill_above_VAH16,86479.5%
fill_below_VAL20,01177.7%

About 80% of days that open outside the prior value area return into it at some point — eventual support for fading overextended opens, but slow.

S1 · Open vs prior NY/London/Tokyo session VA vs full-day VA

ReferenceBucketNMean (bps)Win %tpVerdict
full_dayVA_above_POC25,597-446.3%-0.740.459n.s.
full_dayVA_below_POC27,581+447.0%0.780.437n.s.
full_dayabove_VAH16,864+845.5%1.360.173n.s.
full_daybelow_VAL20,011+1948.9%4.13<0.001sig
full_daySPREAD(abv-blw)36,875-12-1.620.106n.s.
tokyoVA_above_POC10,860+745.6%0.710.478n.s.
tokyoVA_below_POC10,824-1346.3%-1.870.061n.s.
tokyoabove_VAH31,175+845.3%1.790.073n.s.
tokyobelow_VAL36,999+949.0%2.500.012sig
tokyoSPREAD(abv-blw)68,174-1-0.150.881n.s.
londonVA_above_POC15,458-1744.9%-2.790.005sig
londonVA_below_POC16,030-946.6%-1.500.133n.s.
londonabove_VAH27,740+745.7%1.290.197n.s.
londonbelow_VAL30,825+2449.2%6.23<0.001sig
londonSPREAD(abv-blw)58,565-18-2.780.006sig
nyVA_above_POC22,454+847.3%1.420.157n.s.
nyVA_below_POC23,047+146.5%0.180.860n.s.
nyabove_VAH21,410+646.5%0.970.333n.s.
nybelow_VAL23,142+947.5%2.030.042sig
nySPREAD(abv-blw)44,552-4-0.480.630n.s.

London is the only session reference whose value area significantly predicts next-day direction (spread of open-above minus open-below). The full-day VA most traders use is not significant.

S2 · Prior-day session shape → next-day return

BucketGroupSessionNMean (bps)Median (bps)Win %tpVerdict
tokyo_shapeDtokyo46,609+5-2447.0%1.410.159n.s.
tokyo_shapePtokyo19,965+11-1048.5%2.040.041sig
tokyo_shapebtokyo23,284+2-3945.6%0.390.700n.s.
london_shapeDlondon48,929+4-2546.8%1.210.224n.s.
london_shapePlondon18,428+22-1548.2%3.91<0.001sig
london_shapeblondon22,696-4-3146.3%-0.730.467n.s.
ny_shapeDny47,654+7-2447.0%2.170.030sig
ny_shapePny19,853-5-3445.8%-0.820.414n.s.
ny_shapebny22,546+12-1648.0%2.280.022sig

A London session that closed near its highs (P-shape) → next day +22 bps (p < 0.0001) — the strongest single session effect.

S3 · Prior-day session return (momentum) → next-day return

SessionPrior moveNMean (bps)Win %tpVerdict
tokyoup43,601+846.8%2.280.022sig
tokyodown45,929+347.1%0.740.462n.s.
londonup42,432+245.2%0.410.681n.s.
londondown47,307+1048.6%2.800.005sig
nyup43,394+745.8%2.000.046sig
nydown46,309+448.1%1.290.198n.s.

S4 · Prior-day dominant session (by turnover share) → next-day

SessionNMean (bps)Win %tpVerdict
tokyo26,634+1347.9%2.410.016sig
london22,777-1146.5%-2.360.018sig
ny40,447+1046.7%2.870.004sig

Tokyo-heavy prior day → next day +13 bps; London-heavy → −11 bps; NY-heavy → +10 bps.

S5 · Prior-day session VA width → next-day range

SessionVA bandNNext-day range %Mean (bps)tpVerdict
tokyoNone3.56<0.001sig
londonNone0.640.520n.s.
nyNone-3.030.002sig

CF · What separates UP days from DOWN days?

Within each open-location scenario, feature means for UP days vs DOWN days — all features known at the open. |d| = Cohen's d. With a calendar-time split, the trees do not beat the majority-class base rate out of sample.

Counterfactual table — feature means for UP vs DOWN days within each open-location scenario (84 rows)
ScenarioFeatureN upN downMean upMean downDifftp|d|Up rateVerdict
above_VAHpoc_pos7,6669,1980.3810.3740.0072.700.0070.0445.5%sig
above_VAHva_width_ratio7,6669,1980.4840.4790.0052.980.0030.0545.5%sig
above_VAHupper_share7,6669,1980.4310.4200.0114.93<0.0010.0845.5%sig
above_VAHopen_dist_va7,6669,1980.3940.422-0.027-4.17<0.001-0.0645.5%sig
above_VAHtokyo_poc_pos7,6599,1920.4940.4800.0134.32<0.0010.0745.5%sig
above_VAHtokyo_va_width_ratio7,6599,1920.4770.478-0.001-0.570.569-0.0145.5%n.s.
above_VAHtokyo_upper_share7,6599,1920.4880.4800.0093.65<0.0010.0645.5%sig
above_VAHtokyo_turnover_share7,6599,1920.3310.335-0.004-1.900.058-0.0345.5%n.s.
above_VAHtokyo_ret7,6599,1920.0020.0020.0000.390.6990.0145.5%n.s.
above_VAHlondon_poc_pos7,6669,1980.4590.460-0.001-0.250.799-0.0045.5%n.s.
above_VAHlondon_va_width_ratio7,6669,1980.4900.4880.0010.920.3580.0145.5%n.s.
above_VAHlondon_upper_share7,6669,1980.4780.4720.0062.730.0060.0445.5%sig
above_VAHlondon_turnover_share7,6669,1980.3810.3750.0052.990.0030.0545.5%sig
above_VAHlondon_ret7,6669,1980.0150.016-0.001-1.790.074-0.0345.5%n.s.
above_VAHny_poc_pos7,6669,1980.5040.504-0.001-0.160.875-0.0045.5%n.s.
above_VAHny_va_width_ratio7,6669,1980.5010.502-0.001-0.480.632-0.0145.5%n.s.
above_VAHny_upper_share7,6669,1980.4900.491-0.001-0.300.764-0.0045.5%n.s.
above_VAHny_turnover_share7,6669,1980.4290.4220.0073.71<0.0010.0645.5%sig
above_VAHny_ret7,6669,1980.0300.033-0.003-3.40<0.001-0.0545.5%sig
above_VAHprev_atr14_pct7,6669,1980.6970.761-0.063-7.21<0.001-0.1145.5%sig
VA_above_POCpoc_pos11,85913,7380.4410.4320.0093.62<0.0010.0546.3%sig
VA_above_POCva_width_ratio11,85913,7380.4840.485-0.001-0.690.487-0.0146.3%n.s.
VA_above_POCupper_share11,85913,7380.4920.4850.0073.80<0.0010.0546.3%sig
VA_above_POCopen_dist_va11,85913,7380.2500.254-0.005-1.750.079-0.0246.3%n.s.
VA_above_POCtokyo_poc_pos11,83913,7010.4950.4840.0114.30<0.0010.0546.3%sig
VA_above_POCtokyo_va_width_ratio11,83913,7010.5010.5000.0000.230.8210.0046.3%n.s.
VA_above_POCtokyo_upper_share11,83913,7010.4970.4860.0115.93<0.0010.0746.3%sig
VA_above_POCtokyo_turnover_share11,83913,7010.3430.3420.0010.660.5110.0146.3%n.s.
VA_above_POCtokyo_ret11,83913,7010.001-0.0010.0023.240.0010.0446.3%sig
VA_above_POClondon_poc_pos11,85913,7380.4710.4660.0062.110.0350.0346.3%sig
VA_above_POClondon_va_width_ratio11,85913,7380.4970.502-0.005-3.69<0.001-0.0546.3%sig
VA_above_POClondon_upper_share11,85913,7380.4800.4790.0010.650.5190.0146.3%n.s.
VA_above_POClondon_turnover_share11,85913,7380.4050.4020.0032.010.0440.0346.3%sig
VA_above_POClondon_ret11,85913,7380.0040.005-0.000-0.910.365-0.0146.3%n.s.
VA_above_POCny_poc_pos11,85913,7380.4910.495-0.004-1.650.099-0.0246.3%n.s.
VA_above_POCny_va_width_ratio11,85913,7380.4770.4760.0010.500.6180.0146.3%n.s.
VA_above_POCny_upper_share11,85913,7380.4880.495-0.006-3.37<0.001-0.0446.3%sig
VA_above_POCny_turnover_share11,85913,7380.4320.436-0.004-2.340.020-0.0346.3%sig
VA_above_POCny_ret11,85913,7380.0080.009-0.001-1.790.074-0.0246.3%n.s.
VA_above_POCprev_atr14_pct11,85913,7380.7050.750-0.045-5.65<0.001-0.0746.3%sig
VA_below_POCpoc_pos12,97314,6080.5290.5270.0020.760.4460.0147.0%n.s.
VA_below_POCva_width_ratio12,97314,6080.4880.4880.0000.200.8390.0047.0%n.s.
VA_below_POCupper_share12,97314,6080.4960.4950.0010.800.4240.0147.0%n.s.
VA_below_POCopen_dist_va12,97314,608-0.271-0.254-0.017-6.57<0.001-0.0847.0%sig
VA_below_POCtokyo_poc_pos12,94414,5560.4960.4880.0093.39<0.0010.0447.0%sig
VA_below_POCtokyo_va_width_ratio12,94414,5560.4980.499-0.001-1.010.314-0.0147.0%n.s.
VA_below_POCtokyo_upper_share12,94414,5560.4970.4910.0063.130.0020.0447.0%sig
VA_below_POCtokyo_turnover_share12,94414,5560.3450.3410.0042.420.0160.0347.0%sig
VA_below_POCtokyo_ret12,94414,556-0.000-0.0010.0011.000.3170.0147.0%n.s.
VA_below_POClondon_poc_pos12,97314,6080.5080.5000.0093.44<0.0010.0447.0%sig
VA_below_POClondon_va_width_ratio12,97314,6080.5010.503-0.002-1.850.064-0.0247.0%n.s.
VA_below_POClondon_upper_share12,97314,6080.4970.4930.0042.440.0150.0347.0%sig
VA_below_POClondon_turnover_share12,97314,6080.4030.409-0.006-4.08<0.001-0.0547.0%sig
VA_below_POClondon_ret12,97314,608-0.004-0.003-0.001-2.270.023-0.0347.0%sig
VA_below_POCny_poc_pos12,97314,6080.4920.499-0.007-3.060.002-0.0447.0%sig
VA_below_POCny_va_width_ratio12,97314,6080.4790.4750.0043.240.0010.0447.0%sig
VA_below_POCny_upper_share12,97314,6080.4870.496-0.009-5.18<0.001-0.0647.0%sig
VA_below_POCny_turnover_share12,97314,6080.4300.436-0.006-3.230.001-0.0447.0%sig
VA_below_POCny_ret12,97314,608-0.008-0.005-0.003-6.74<0.001-0.0847.0%sig
VA_below_POCprev_atr14_pct12,97314,6080.7400.750-0.010-1.120.261-0.0147.0%n.s.
below_VALpoc_pos9,78810,2230.6040.608-0.003-1.450.148-0.0248.9%n.s.
below_VALva_width_ratio9,78810,2230.4840.4790.0042.770.0060.0448.9%sig
below_VALupper_share9,78810,2230.5590.565-0.006-2.860.004-0.0448.9%sig
below_VALopen_dist_va9,78810,223-202948.726-0.401-202948.324-1.000.317-0.0148.9%n.s.
below_VALtokyo_poc_pos9,77010,1970.4900.490-0.000-0.030.973-0.0048.9%n.s.
below_VALtokyo_va_width_ratio9,77010,1970.4730.4700.0032.260.0240.0348.9%sig
below_VALtokyo_upper_share9,77010,1970.4940.4930.0010.500.6140.0148.9%n.s.
below_VALtokyo_turnover_share9,77010,1970.3540.3480.0073.59<0.0010.0548.9%sig
below_VALtokyo_ret9,77010,197-0.0000.001-0.001-2.500.012-0.0448.9%sig
below_VALlondon_poc_pos9,78810,2230.5170.5150.0020.810.4180.0148.9%n.s.
below_VALlondon_va_width_ratio9,78810,2230.4930.4920.0010.900.3690.0148.9%n.s.
below_VALlondon_upper_share9,78810,2230.5010.5000.0010.280.7790.0048.9%n.s.
below_VALlondon_turnover_share9,78810,2230.3780.386-0.008-4.64<0.001-0.0748.9%sig
below_VALlondon_ret9,78810,223-0.015-0.014-0.001-3.220.001-0.0548.9%sig
below_VALny_poc_pos9,78810,2230.4860.4810.0051.840.0650.0348.9%n.s.
below_VALny_va_width_ratio9,78810,2230.5100.5010.0095.99<0.0010.0848.9%sig
below_VALny_upper_share9,78810,2230.4870.491-0.004-2.290.022-0.0348.9%sig
below_VALny_turnover_share9,78810,2230.4090.412-0.003-1.530.125-0.0248.9%n.s.
below_VALny_ret9,78810,223-0.028-0.026-0.002-4.37<0.001-0.0648.9%sig
below_VALprev_atr14_pct9,78810,2230.7760.7590.0161.540.1230.0248.9%n.s.

Decision trees · Joint conditions separating UP from DOWN

Decision trees — joint conditions separating UP from DOWN
========================================================================
Scenario: above_VAH | n=16851 | base rate=0.545 | train acc=0.564 | OOS acc=0.550 | leaves=8
top features: {'ny_ret': 0.42243803814801856, 'prev_atr14_pct': 0.26646049336725486, 'london_ret': 0.10849773405615512, 'tokyo_ret': 0.09347070055305111, 'london_va_width_ratio': 0.07053270437142942, 'ny_va_width_ratio': 0.03860032950409106, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- ny_ret <= -0.00
|   |--- london_ret <= -0.02
|   |   |--- ny_va_width_ratio <= 0.42
|   |   |   |--- class: 1
|   |   |--- ny_va_width_ratio >  0.42
|   |   |   |--- class: 0
|   |--- london_ret >  -0.02
|   |   |--- london_va_width_ratio <= 0.52
|   |   |   |--- class: 0
|   |   |--- london_va_width_ratio >  0.52
|   |   |   |--- class: 0
|--- ny_ret >  -0.00
|   |--- prev_atr14_pct <= 0.44
|   |   |--- tokyo_ret <= -0.02
|   |   |   |--- class: 0
|   |   |--- tokyo_ret >  -0.02
|   |   |   |--- class: 1
|   |--- prev_atr14_pct >  0.44
|   |   |--- ny_ret <= 0.10
|   |   |   |--- class: 0
|   |   |--- ny_ret >  0.10
|   |   |   |--- class: 0


========================================================================
Scenario: VA_above_POC | n=25540 | base rate=0.536 | train acc=0.545 | OOS acc=0.497 | leaves=8
top features: {'tokyo_turnover_share': 0.47760811907654627, 'tokyo_upper_share': 0.190851548337765, 'london_turnover_share': 0.13430932715768032, 'london_poc_pos': 0.08585220445455517, 'london_ret': 0.06295583463540175, 'tokyo_ret': 0.0484229663380515, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- tokyo_turnover_share <= 0.21
|   |--- london_turnover_share <= 0.44
|   |   |--- london_ret <= -0.04
|   |   |   |--- class: 0
|   |   |--- london_ret >  -0.04
|   |   |   |--- class: 0
|   |--- london_turnover_share >  0.44
|   |   |--- tokyo_ret <= -0.00
|   |   |   |--- class: 1
|   |   |--- tokyo_ret >  -0.00
|   |   |   |--- class: 0
|--- tokyo_turnover_share >  0.21
|   |--- tokyo_turnover_share <= 0.56
|   |   |--- tokyo_upper_share <= 0.42
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.42
|   |   |   |--- class: 1
|   |--- tokyo_turnover_share >  0.56
|   |   |--- london_poc_pos <= 0.47
|   |   |   |--- class: 0
|   |   |--- london_poc_pos >  0.47
|   |   |   |--- class: 0


========================================================================
Scenario: VA_below_POC | n=27500 | base rate=0.529 | train acc=0.555 | OOS acc=0.526 | leaves=8
top features: {'open_dist_va': 0.2892899966369089, 'tokyo_upper_share': 0.21712938915988533, 'ny_upper_share': 0.1913642445606463, 'ny_ret': 0.12223425155135473, 'tokyo_poc_pos': 0.10756088495385614, 'london_va_width_ratio': 0.07242123313734862, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- open_dist_va <= -0.35
|   |--- ny_upper_share <= 0.61
|   |   |--- tokyo_upper_share <= 0.25
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.25
|   |   |   |--- class: 1
|   |--- ny_upper_share >  0.61
|   |   |--- tokyo_upper_share <= 0.62
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.62
|   |   |   |--- class: 0
|--- open_dist_va >  -0.35
|   |--- tokyo_poc_pos <= 0.59
|   |   |--- ny_ret <= -0.06
|   |   |   |--- class: 1
|   |   |--- ny_ret >  -0.06
|   |   |   |--- class: 0
|   |--- tokyo_poc_pos >  0.59
|   |   |--- london_va_width_ratio <= 0.65
|   |   |   |--- class: 0
|   |   |--- london_va_width_ratio >  0.65
|   |   |   |--- class: 1


========================================================================
Scenario: below_VAL | n=19967 | base rate=0.511 | train acc=0.577 | OOS acc=0.496 | leaves=8
top features: {'tokyo_turnover_share': 0.22303498395007368, 'upper_share': 0.1705156002685089, 'tokyo_ret': 0.15874304152173455, 'london_turnover_share': 0.15487891038800045, 'ny_turnover_share': 0.12149812357395297, 'london_ret': 0.10285562960857356, 'ny_ret': 0.06847371068915592, 'poc_pos': 0.0}
|--- tokyo_turnover_share <= 0.36
|   |--- tokyo_ret <= -0.01
|   |   |--- london_turnover_share <= 0.52
|   |   |   |--- class: 1
|   |   |--- london_turnover_share >  0.52
|   |   |   |--- class: 0
|   |--- tokyo_ret >  -0.01
|   |   |--- ny_turnover_share <= 0.63
|   |   |   |--- class: 0
|   |   |--- ny_turnover_share >  0.63
|   |   |   |--- class: 1
|--- tokyo_turnover_share >  0.36
|   |--- upper_share <= 0.69
|   |   |--- london_ret <= -0.01
|   |   |   |--- class: 1
|   |   |--- london_ret >  -0.01
|   |   |   |--- class: 0
|   |--- upper_share >  0.69
|   |   |--- ny_ret <= -0.05
|   |   |   |--- class: 1
|   |   |--- ny_ret >  -0.05
|   |   |   |--- class: 0

H17 · Per-symbol stability (robustness)

Per-symbol agreement with the pooled direction. These are market-wide tendencies, not laws that hold for every coin.

LocationN symbolsAgreeFrac agreeBinom pPooled mean (bps)Median sym mean (bps)Sym +Sym −Verdict
above_VAH22910746.7%0.355+0-5107122
VA_above_POC23013157.0%0.041-5-899131
VA_below_POC23010947.4%0.468+8-3109121
below_VAL23013759.6%0.004+30+1213793

Findings report

Volume Profile Open-Location Findings — 2026-09-02

_Generated from real Bybit 15m klines. All returns are open→close in basis points unless stated. net = mean − 10bps round-trip cost. sig = in-sample p < 0.05, OOS p < 0.05, and same sign in both. p-values are raw (not Bonferroni-adjusted). See PLAN.md for hypothesis definitions._

Dataset: 230 symbols · 90283 symbol-days · 522 UTC days · 2025-03-30 → 2026-09-02

H4 · Excess magnitude scaling (OLS slope per VA-width, corr)

groupnOLS slope (bps per VA-width)Pearson rSpearman ρρ p
dist_above_VAH16864-28.7-0.017-0.0092.47e-01
dist_below_VAL20011+0.0+0.002-0.0171.83e-02

H1–H3 · Day return by open location vs prior-day profile

groupnmean(bps)net(bps)wintpOOS meanOOS psig
above_VAH16864+8-245.5%1.361.73e-01+102.27e-01
VA_above_POC25597-4-1446.3%-0.744.59e-01+73.15e-01
VA_below_POC27581+4-647.0%0.784.37e-01-72.42e-01
below_VAL20011+19+948.9%4.133.57e-05+53<1e-6

H7–H9 · Prior-day POC position zone → next-day return

groupnmean(bps)net(bps)wintpOOS meanOOS psig
poc_near_VAL23104-13-2345.4%-2.619.04e-03-195.60e-03
poc_central45177+12+247.5%3.328.97e-04+112.29e-02
poc_near_VAH21772+13+347.6%2.561.04e-02+311.83e-04

H10 · Prior VA width band → next-day return & range

groupnmean(bps)net(bps)wintpOOS meanOOS psig
va_narrow45017-2-1246.5%-0.416.80e-01+146.57e-03
va_wide45036+13+347.4%3.938.36e-05+145.23e-03

H11 · Prior-day profile shape → next-day return & range

groupnmean(bps)net(bps)wintpOOS meanOOS psig
shape_P19973+14+447.5%2.589.89e-03+357.14e-05
shape_b22372-13-2345.2%-2.431.53e-02-196.28e-03
shape_D47708+11+147.5%3.426.35e-04+111.49e-02

H15 · Open-location effect by ATR regime (low/high tercile)

groupnmean(bps)net(bps)wintpOOS meanOOS psig
above_VAH_atr_low6966+26+1648.3%4.025.91e-05+254.08e-03
above_VAH_atr_high4547-16-2641.7%-1.122.63e-01-551.63e-02
below_VAL_atr_low8273+5-547.5%0.834.05e-01+44<1e-6
below_VAL_atr_high5700+40+3050.0%3.831.28e-04+97<1e-6

H16 · Open-location effect by trend regime (daily EMA20)

groupnmean(bps)net(bps)wintpOOS meanOOS psig
above_VAH_trend_up8474+20+1047.4%2.232.60e-02+66.83e-01
above_VAH_trend_down8390-5-1543.5%-0.675.05e-01+28.08e-01
below_VAL_trend_up5342+17+749.3%1.641.01e-01+591.21e-04
below_VAL_trend_down14669+20+1048.8%3.919.40e-05+53<1e-6

H5–H6 · First-hour drive & day leadership

groupnopen-drive rate1h mean(bps)day-follows-1hday ret \1h up(bps)day ret \1h dn(bps)
drive_above_VAH1686442.6%-7
lead_above_VAH1686460.3%+138-92
drive_below_VAL2001145.3%-1
lead_below_VAL2001158.0%+103-80

H12 · Fill-back into prior VA

groupnfill rate
fill_above_VAH1686479.5%
fill_below_VAL2001177.7%

H17 · Per-symbol stability (robustness)

locn_symbolsfrac_agreebinom ppooled mean(bps)median sym mean(bps)sym+sym−
above_VAH22946.7%3.55e-01+0-5107122
VA_above_POC23057.0%4.07e-02-5-899131
VA_below_POC23047.4%4.68e-01+8-3109121
below_VAL23059.6%4.47e-03+30+1213793

S1 · Open vs prior NY/London/Tokyo session VA vs full-day VA

refbucketnmean(bps)wintp
full_dayVA_above_POC25597-446.3%-0.744.59e-01
full_dayVA_below_POC27581+447.0%0.784.37e-01
full_dayabove_VAH16864+845.5%1.361.73e-01
full_daybelow_VAL20011+1948.9%4.133.57e-05
full_daySPREAD(abv-blw)36875-12-1.621.06e-01
tokyoVA_above_POC10860+745.6%0.714.78e-01
tokyoVA_below_POC10824-1346.3%-1.876.09e-02
tokyoabove_VAH31175+845.3%1.797.31e-02
tokyobelow_VAL36999+949.0%2.501.23e-02
tokyoSPREAD(abv-blw)68174-1-0.158.81e-01
londonVA_above_POC15458-1744.9%-2.795.25e-03
londonVA_below_POC16030-946.6%-1.501.33e-01
londonabove_VAH27740+745.7%1.291.97e-01
londonbelow_VAL30825+2449.2%6.23<1e-6
londonSPREAD(abv-blw)58565-18-2.785.52e-03
nyVA_above_POC22454+847.3%1.421.57e-01
nyVA_below_POC23047+146.5%0.188.60e-01
nyabove_VAH21410+646.5%0.973.33e-01
nybelow_VAL23142+947.5%2.034.19e-02
nySPREAD(abv-blw)44552-4-0.486.30e-01

S2 · Prior-day session shape → next-day return

sessionshapenmean(bps)wintp
tokyoD46609+547.0%1.411.59e-01
tokyoP19965+1148.5%2.044.10e-02
tokyob23284+245.6%0.397.00e-01
londonD48929+446.8%1.212.24e-01
londonP18428+2248.2%3.919.10e-05
londonb22696-446.3%-0.734.67e-01
nyD47654+747.0%2.173.02e-02
nyP19853-545.8%-0.824.14e-01
nyb22546+1248.0%2.282.25e-02

S3 · Prior-day session return (momentum) → next-day return

sessionprior sessionnmean(bps)wintp
tokyoup43601+846.8%2.282.23e-02
tokyodown45929+347.1%0.744.62e-01
londonup42432+245.2%0.416.81e-01
londondown47307+1048.6%2.805.15e-03
nyup43394+745.8%2.004.57e-02
nydown46309+448.1%1.291.98e-01

S4 · Prior-day dominant session (by turnover share) → next-day

sessionnmean(bps)wintp
tokyo26634+1347.9%2.411.62e-02
london22777-1146.5%-2.361.83e-02
ny40447+1046.7%2.874.17e-03

S5 · Prior-day session VA width → next-day range

_p-value is a two-sample Welch t on next-day range (wide − narrow). Range is always positive, so a one-sample test vs 0 is not informative._

sessionn narrown widerange narrowrange widedifftpret narrow(bps)ret wide(bps)
tokyo44929449299.72%10.18%+0.45pp3.563.73e-04+1+10
london45022450319.93%10.01%+0.08pp0.645.20e-01+14-3
ny450234503010.16%9.78%-0.38pp-3.032.44e-03-11+22

CF · Factual vs counterfactual: what separates UP from DOWN days?

_Within each open-location scenario, feature means for UP days vs DOWN days (all features known at the open). |d| = Cohen's d._

scenariofeaturen_upn_dnmean UPmean DNdifftpd
above_VAHpoc_pos766691980.38110.3740+0.00712.706.84e-03+0.04
above_VAHva_width_ratio766691980.48430.4790+0.00522.982.87e-03+0.05
above_VAHupper_share766691980.43060.4199+0.01074.93<1e-6+0.08
above_VAHopen_dist_va766691980.39440.4219-0.0275-4.173.13e-05-0.06
above_VAHtokyo_poc_pos765991920.49370.4803+0.01334.321.58e-05+0.07
above_VAHtokyo_va_width_ratio765991920.47740.4783-0.0009-0.575.69e-01-0.01
above_VAHtokyo_upper_share765991920.48840.4797+0.00873.652.64e-04+0.06
above_VAHtokyo_turnover_share765991920.33110.3347-0.0037-1.905.80e-02-0.03
above_VAHtokyo_ret765991920.00180.0016+0.00020.396.99e-01+0.01
above_VAHlondon_poc_pos766691980.45900.4598-0.0008-0.257.99e-01-0.00
above_VAHlondon_va_width_ratio766691980.48960.4881+0.00150.923.58e-01+0.01
above_VAHlondon_upper_share766691980.47830.4723+0.00602.736.38e-03+0.04
above_VAHlondon_turnover_share766691980.38050.3753+0.00522.992.75e-03+0.05
above_VAHlondon_ret766691980.01450.0155-0.0010-1.797.37e-02-0.03
above_VAHny_poc_pos766691980.50380.5043-0.0005-0.168.75e-01-0.00
above_VAHny_va_width_ratio766691980.50140.5022-0.0008-0.486.32e-01-0.01
above_VAHny_upper_share766691980.49020.4909-0.0007-0.307.64e-01-0.00
above_VAHny_turnover_share766691980.42950.4223+0.00723.712.06e-04+0.06
above_VAHny_ret766691980.03020.0335-0.0032-3.406.85e-04-0.05
above_VAHprev_atr14_pct766691980.69750.7608-0.0633-7.21<1e-6-0.11
VA_above_POCpoc_pos11859137380.44100.4318+0.00923.622.98e-04+0.05
VA_above_POCva_width_ratio11859137380.48440.4853-0.0010-0.694.87e-01-0.01
VA_above_POCupper_share11859137380.49230.4850+0.00733.801.46e-04+0.05
VA_above_POCopen_dist_va11859137380.24990.2545-0.0046-1.757.95e-02-0.02
VA_above_POCtokyo_poc_pos11839137010.49520.4838+0.01144.301.68e-05+0.05
VA_above_POCtokyo_va_width_ratio11839137010.50070.5004+0.00030.238.21e-01+0.00
VA_above_POCtokyo_upper_share11839137010.49680.4860+0.01095.93<1e-6+0.07
VA_above_POCtokyo_turnover_share11839137010.34310.3420+0.00110.665.11e-01+0.01
VA_above_POCtokyo_ret11839137010.0011-0.0008+0.00193.241.21e-03+0.04
VA_above_POClondon_poc_pos11859137380.47140.4659+0.00552.113.45e-02+0.03
VA_above_POClondon_va_width_ratio11859137380.49730.5022-0.0050-3.692.21e-04-0.05
VA_above_POClondon_upper_share11859137380.47980.4786+0.00110.655.19e-01+0.01
VA_above_POClondon_turnover_share11859137380.40500.4019+0.00312.014.44e-02+0.03
VA_above_POClondon_ret11859137380.00430.0048-0.0005-0.913.65e-01-0.01
VA_above_POCny_poc_pos11859137380.49060.4946-0.0041-1.659.93e-02-0.02
VA_above_POCny_va_width_ratio11859137380.47700.4764+0.00060.506.18e-01+0.01
VA_above_POCny_upper_share11859137380.48840.4948-0.0063-3.377.43e-04-0.04
VA_above_POCny_turnover_share11859137380.43210.4363-0.0042-2.341.95e-02-0.03
VA_above_POCny_ret11859137380.00810.0091-0.0010-1.797.41e-02-0.02
VA_above_POCprev_atr14_pct11859137380.70490.7499-0.0449-5.65<1e-6-0.07
VA_below_POCpoc_pos12973146080.52930.5274+0.00190.764.46e-01+0.01
VA_below_POCva_width_ratio12973146080.48780.4875+0.00030.208.39e-01+0.00
VA_below_POCupper_share12973146080.49640.4949+0.00150.804.24e-01+0.01
VA_below_POCopen_dist_va1297314608-0.2712-0.2543-0.0168-6.57<1e-6-0.08
VA_below_POCtokyo_poc_pos12944145560.49650.4879+0.00863.396.98e-04+0.04
VA_below_POCtokyo_va_width_ratio12944145560.49780.4991-0.0013-1.013.14e-01-0.01
VA_below_POCtokyo_upper_share12944145560.49660.4910+0.00563.131.73e-03+0.04
VA_below_POCtokyo_turnover_share12944145560.34520.3412+0.00402.421.56e-02+0.03
VA_below_POCtokyo_ret1294414556-0.0005-0.0010+0.00061.003.17e-01+0.01
VA_below_POClondon_poc_pos12973146080.50830.4997+0.00873.445.79e-04+0.04
VA_below_POClondon_va_width_ratio12973146080.50090.5033-0.0024-1.856.37e-02-0.02
VA_below_POClondon_upper_share12973146080.49730.4932+0.00412.441.47e-02+0.03
VA_below_POClondon_turnover_share12973146080.40310.4091-0.0060-4.084.44e-05-0.05
VA_below_POClondon_ret1297314608-0.0044-0.0032-0.0012-2.272.30e-02-0.03
VA_below_POCny_poc_pos12973146080.49210.4994-0.0073-3.062.22e-03-0.04
VA_below_POCny_va_width_ratio12973146080.47930.4754+0.00383.241.20e-03+0.04
VA_below_POCny_upper_share12973146080.48690.4962-0.0093-5.18<1e-6-0.06
VA_below_POCny_turnover_share12973146080.43010.4356-0.0055-3.231.23e-03-0.04
VA_below_POCny_ret1297314608-0.0080-0.0045-0.0035-6.74<1e-6-0.08
VA_below_POCprev_atr14_pct12973146080.73970.7499-0.0102-1.122.61e-01-0.01
below_VALpoc_pos9788102230.60420.6076-0.0034-1.451.48e-01-0.02
below_VALva_width_ratio9788102230.48370.4793+0.00442.775.60e-03+0.04
below_VALupper_share9788102230.55930.5649-0.0056-2.864.30e-03-0.04
below_VALopen_dist_va978810223-202948.7255-0.4010-202948.3245-1.003.17e-01-0.01
below_VALtokyo_poc_pos9770101970.49000.4900-0.0001-0.039.73e-01-0.00
below_VALtokyo_va_width_ratio9770101970.47280.4695+0.00332.262.37e-02+0.03
below_VALtokyo_upper_share9770101970.49410.4929+0.00110.506.14e-01+0.01
below_VALtokyo_turnover_share9770101970.35430.3476+0.00673.593.27e-04+0.05
below_VALtokyo_ret977010197-0.00020.0011-0.0013-2.501.23e-02-0.04
below_VALlondon_poc_pos9788102230.51740.5151+0.00230.814.18e-01+0.01
below_VALlondon_va_width_ratio9788102230.49300.4917+0.00130.903.69e-01+0.01
below_VALlondon_upper_share9788102230.50080.5002+0.00060.287.79e-01+0.00
below_VALlondon_turnover_share9788102230.37840.3860-0.0076-4.643.48e-06-0.07
below_VALlondon_ret978810223-0.0154-0.0139-0.0015-3.221.28e-03-0.05
below_VALny_poc_pos9788102230.48630.4809+0.00541.846.55e-02+0.03
below_VALny_va_width_ratio9788102230.50970.5007+0.00905.99<1e-6+0.08
below_VALny_upper_share9788102230.48660.4911-0.0045-2.292.21e-02-0.03
below_VALny_turnover_share9788102230.40920.4121-0.0029-1.531.25e-01-0.02
below_VALny_ret978810223-0.0285-0.0263-0.0022-4.371.26e-05-0.06
below_VALprev_atr14_pct9788102230.77590.7595+0.01641.541.23e-01+0.02

CF-TREES · Joint conditions separating UP from DOWN



========================================================================
Scenario: above_VAH | n=16851 | base rate=0.545 | train acc=0.564 | OOS acc=0.550 | leaves=8
top features: {'ny_ret': 0.42243803814801856, 'prev_atr14_pct': 0.26646049336725486, 'london_ret': 0.10849773405615512, 'tokyo_ret': 0.09347070055305111, 'london_va_width_ratio': 0.07053270437142942, 'ny_va_width_ratio': 0.03860032950409106, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- ny_ret <= -0.00
|   |--- london_ret <= -0.02
|   |   |--- ny_va_width_ratio <= 0.42
|   |   |   |--- class: 1
|   |   |--- ny_va_width_ratio >  0.42
|   |   |   |--- class: 0
|   |--- london_ret >  -0.02
|   |   |--- london_va_width_ratio <= 0.52
|   |   |   |--- class: 0
|   |   |--- london_va_width_ratio >  0.52
|   |   |   |--- class: 0
|--- ny_ret >  -0.00
|   |--- prev_atr14_pct <= 0.44
|   |   |--- tokyo_ret <= -0.02
|   |   |   |--- class: 0
|   |   |--- tokyo_ret >  -0.02
|   |   |   |--- class: 1
|   |--- prev_atr14_pct >  0.44
|   |   |--- ny_ret <= 0.10
|   |   |   |--- class: 0
|   |   |--- ny_ret >  0.10
|   |   |   |--- class: 0


========================================================================
Scenario: VA_above_POC | n=25540 | base rate=0.536 | train acc=0.545 | OOS acc=0.497 | leaves=8
top features: {'tokyo_turnover_share': 0.47760811907654627, 'tokyo_upper_share': 0.190851548337765, 'london_turnover_share': 0.13430932715768032, 'london_poc_pos': 0.08585220445455517, 'london_ret': 0.06295583463540175, 'tokyo_ret': 0.0484229663380515, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- tokyo_turnover_share <= 0.21
|   |--- london_turnover_share <= 0.44
|   |   |--- london_ret <= -0.04
|   |   |   |--- class: 0
|   |   |--- london_ret >  -0.04
|   |   |   |--- class: 0
|   |--- london_turnover_share >  0.44
|   |   |--- tokyo_ret <= -0.00
|   |   |   |--- class: 1
|   |   |--- tokyo_ret >  -0.00
|   |   |   |--- class: 0
|--- tokyo_turnover_share >  0.21
|   |--- tokyo_turnover_share <= 0.56
|   |   |--- tokyo_upper_share <= 0.42
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.42
|   |   |   |--- class: 1
|   |--- tokyo_turnover_share >  0.56
|   |   |--- london_poc_pos <= 0.47
|   |   |   |--- class: 0
|   |   |--- london_poc_pos >  0.47
|   |   |   |--- class: 0


========================================================================
Scenario: VA_below_POC | n=27500 | base rate=0.529 | train acc=0.555 | OOS acc=0.526 | leaves=8
top features: {'open_dist_va': 0.2892899966369089, 'tokyo_upper_share': 0.21712938915988533, 'ny_upper_share': 0.1913642445606463, 'ny_ret': 0.12223425155135473, 'tokyo_poc_pos': 0.10756088495385614, 'london_va_width_ratio': 0.07242123313734862, 'poc_pos': 0.0, 'va_width_ratio': 0.0}
|--- open_dist_va <= -0.35
|   |--- ny_upper_share <= 0.61
|   |   |--- tokyo_upper_share <= 0.25
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.25
|   |   |   |--- class: 1
|   |--- ny_upper_share >  0.61
|   |   |--- tokyo_upper_share <= 0.62
|   |   |   |--- class: 0
|   |   |--- tokyo_upper_share >  0.62
|   |   |   |--- class: 0
|--- open_dist_va >  -0.35
|   |--- tokyo_poc_pos <= 0.59
|   |   |--- ny_ret <= -0.06
|   |   |   |--- class: 1
|   |   |--- ny_ret >  -0.06
|   |   |   |--- class: 0
|   |--- tokyo_poc_pos >  0.59
|   |   |--- london_va_width_ratio <= 0.65
|   |   |   |--- class: 0
|   |   |--- london_va_width_ratio >  0.65
|   |   |   |--- class: 1


========================================================================
Scenario: below_VAL | n=19967 | base rate=0.511 | train acc=0.577 | OOS acc=0.496 | leaves=8
top features: {'tokyo_turnover_share': 0.22303498395007368, 'upper_share': 0.1705156002685089, 'tokyo_ret': 0.15874304152173455, 'london_turnover_share': 0.15487891038800045, 'ny_turnover_share': 0.12149812357395297, 'london_ret': 0.10285562960857356, 'ny_ret': 0.06847371068915592, 'poc_pos': 0.0}
|--- tokyo_turnover_share <= 0.36
|   |--- tokyo_ret <= -0.01
|   |   |--- london_turnover_share <= 0.52
|   |   |   |--- class: 1
|   |   |--- london_turnover_share >  0.52
|   |   |   |--- class: 0
|   |--- tokyo_ret >  -0.01
|   |   |--- ny_turnover_share <= 0.63
|   |   |   |--- class: 0
|   |   |--- ny_turnover_share >  0.63
|   |   |   |--- class: 1
|--- tokyo_turnover_share >  0.36
|   |--- upper_share <= 0.69
|   |   |--- london_ret <= -0.01
|   |   |   |--- class: 1
|   |   |--- london_ret >  -0.01
|   |   |   |--- class: 0
|   |--- upper_share >  0.69
|   |   |--- ny_ret <= -0.05
|   |   |   |--- class: 1
|   |   |--- ny_ret >  -0.05
|   |   |   |--- class: 0


_Report auto-generated by src/report.py. Re-run src/analysis.py + src/report.py after a fetch to refresh._

Method & caveats

Data

Bybit V5 public API, 15m OHLCV, all USDT-margined perpetuals (741 verified), tiered by 24h turnover & listing age. Headline tier: turnover ≥ $1M and listed ≥ 60 days (230 symbols). ~500 days of history per symbol, resumable caching.

Profiles

UTC 00:00–00:00 calendar days; notional-weighted binning (traded turnover, not contracts); 70% value area via classic POC-outward expansion. Session profiles for Tokyo / London / New York. All returns are open→close in basis points; net = mean − 10 bps round-trip cost.

Protocol

  • Hypothesis tests with raw p-values (not Bonferroni-adjusted), per-symbol consistency, and out-of-sample splits. A finding requires in-sample p, OOS p, and the same sign in both halves.
  • Effects are small (10–25 bps — the size of the spread); few survive costs.
  • 522 days = one regime. Structure can change; treat as historical statistics.

Reproduce

All code is in the repo. End-to-end (fetch → features → all analyses → report → site → commit → push):

./run_pipeline.sh                    # features → analysis → report → site
PUSH_RESULTS=1 ./run_pipeline.sh     # also push to origin
python src/make_site.py              # regenerate site only

Full methodology: docs/methodology.md · Master plan: PLAN.md · Raw datasets: results/