Dataset
Methodology, hypothesis definitions and statistical protocol: PLAN.md, docs/methodology.md. Generated 2026-09-02 07:33 UTC.
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 UP | Average day return | Verdict |
|---|---|---|---|
| Above yesterday's VAH | 45.5% | +8 bps (not significant) | ❌ no real edge |
| Inside value, above POC | 46.3% | −4 bps | ❌ |
| Inside value, below POC | 47.0% | +4 bps | ❌ |
| Below yesterday's VAL | 48.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 +57 bps (vs +2 bps in calm conditions); opening above VAH
only worked in calm conditions (+23 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–46% of the time does the first hour even continue the direction of
an outside-the-value open. 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 nudges accuracy from
~51–55% (base rate) to ~54–55% out-of-sample. Real but small — it's structure
discovery, not yet 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.
2. 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.
3. This is 522 days of one regime. Crypto structure can change; treat these as
historical statistics, not guarantees.
4. The trees' out-of-sample improvement is ~0.5–2 points over guessing the
majority. Genuine but thin — any strategy built on this needs strict cost
awareness, per-symbol gates, and walk-forward validation (the lessons from our
earlier ORB and overnight-drift research apply here too).
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.
- 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.
H4 · Excess magnitude scaling (OLS slope per VA-width, corr)
| hyp | group | n | ols_slope_bps_per_va | pearson_r | spearman_rho | spearman_p |
|---|---|---|---|---|---|---|
| H4 | dist_above_VAH | 16864 | -28.712 | -0.017 | -0.009 | 0.247 |
| H4 | dist_below_VAL | 20011 | 0.000 | 0.002 | -0.017 | 0.018 |
H1–H3 · Day return by open location vs prior-day profile
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps | sym_consistency | n_symbols | oos_mean_bps | oos_p |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| H1-H4 | above_VAH | 16864 | 7.566 | -34.575 | 0.455 | 1.363 | 0.173 | -2.893 | 18.745 | 0.467 | 229 | 10.055 | 0.227 |
| H1-H4 | VA_above_POC | 25597 | -3.730 | -28.484 | 0.463 | -0.741 | 0.459 | -14.078 | 6.787 | 0.570 | 230 | 7.251 | 0.315 |
| H1-H4 | VA_below_POC | 27581 | 3.794 | -24.027 | 0.470 | 0.778 | 0.437 | -5.134 | 13.718 | 0.474 | 230 | -7.488 | 0.242 |
| H1-H4 | below_VAL | 20011 | 19.279 | -9.410 | 0.489 | 4.135 | 0.000 | 9.975 | 28.368 | 0.596 | 230 | 52.612 | 0.000 |
H7–H9 · Prior-day POC position zone → next-day return
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps | sym_consistency | n_symbols | oos_mean_bps | oos_p |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| H7-H9 | poc_near_VAL | 23104 | -13.072 | -38.304 | 0.454 | -2.611 | 0.009 | -22.654 | -3.050 | 0.643 | 230 | -19.088 | 0.006 |
| H7-H9 | poc_central | 45177 | 11.931 | -20.697 | 0.475 | 3.321 | 0.001 | 4.923 | 18.921 | 0.561 | 230 | 10.576 | 0.023 |
| H7-H9 | poc_near_VAH | 21772 | 13.113 | -19.498 | 0.476 | 2.561 | 0.010 | 3.244 | 23.341 | 0.541 | 229 | 30.590 | 0.000 |
H10 · Prior VA width band → next-day return & range
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps | next_day_range_pct |
|---|---|---|---|---|---|---|---|---|---|---|
| H10 | va_narrow | 45017 | -1.571 | -27.475 | 0.465 | -0.412 | 0.680 | -8.974 | 5.517 | 10.207 |
| H10 | va_wide | 45036 | 13.172 | -21.565 | 0.474 | 3.934 | 0.000 | 6.306 | 19.647 | 9.730 |
H11 · Prior-day profile shape → next-day return & range
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps | next_day_range_pct |
|---|---|---|---|---|---|---|---|---|---|---|
| H11 | shape_P | 19973 | 14.165 | -20.048 | 0.475 | 2.580 | 0.010 | 3.312 | 24.781 | 9.818 |
| H11 | shape_b | 22372 | -13.381 | -38.236 | 0.452 | -2.425 | 0.015 | -23.941 | -2.191 | 11.036 |
| H11 | shape_D | 47708 | 11.297 | -20.408 | 0.475 | 3.416 | 0.001 | 4.933 | 17.953 | 9.531 |
H15 · Open-location effect by ATR regime (low/high tercile)
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps |
|---|---|---|---|---|---|---|---|---|---|
| H15 | above_VAH_atr_low | 5439 | 22.873 | 1.068 | 0.501 | 4.321 | 0.000 | 12.689 | 33.421 |
| H15 | above_VAH_atr_high | 5739 | -7.395 | -123.832 | 0.414 | -0.534 | 0.594 | -33.936 | 19.067 |
| H15 | below_VAL_atr_low | 5837 | 2.278 | -9.785 | 0.482 | 0.464 | 0.642 | -7.461 | 11.412 |
| H15 | below_VAL_atr_high | 7438 | 56.933 | 3.151 | 0.501 | 5.389 | 0.000 | 36.243 | 78.534 |
H16 · Open-location effect by trend regime (daily EMA20)
| hyp | group | n | mean_ret_bps | median_ret_bps | win_rate | t | p | ci_lo_bps | ci_hi_bps |
|---|---|---|---|---|---|---|---|---|---|
| H16 | above_VAH_trend_up | 8474 | 19.529 | -22.070 | 0.474 | 2.226 | 0.026 | 2.206 | 36.622 |
| H16 | above_VAH_trend_down | 8390 | -4.517 | -47.170 | 0.435 | -0.666 | 0.505 | -17.362 | 8.513 |
| H16 | below_VAL_trend_up | 5342 | 16.635 | -6.036 | 0.493 | 1.642 | 0.101 | -3.544 | 36.068 |
| H16 | below_VAL_trend_down | 14669 | 20.242 | -10.662 | 0.488 | 3.907 | 0.000 | 9.711 | 30.482 |
H5–H6 · First-hour drive & day leadership
| hyp | group | n | open_drive_rate | drive_binom_p | mean_ret_1h_bps | day_follows_1h_rate | mean_day_ret_when_1h_up_bps | mean_day_ret_when_1h_down_bps |
|---|---|---|---|---|---|---|---|---|
| H5 | drive_above_VAH | 16864 | 0.434 | 0.000 | -7.430 | nan | nan | nan |
| H6 | lead_above_VAH | 16864 | nan | nan | nan | 0.603 | 137.794 | -91.541 |
| H5 | drive_below_VAL | 20011 | 0.461 | 0.000 | -1.017 | nan | nan | nan |
| H6 | lead_below_VAL | 20011 | nan | nan | nan | 0.580 | 103.039 | -80.334 |
H12–H13 · Fill-back into prior VA
| hyp | group | n | fill_rate |
|---|---|---|---|
| H12 | fill_above_VAH | 16864 | 0.795 |
| H12 | fill_below_VAL | 20011 | 0.777 |
H17 · Per-symbol stability (robustness)
| loc | n_symbols | symbols_agree | frac_agree | binom_p | pooled_mean_bps | median_sym_mean_bps | n_sym_positive | n_sym_negative | tier_liquid_mean_bps | tier_mid_mean_bps |
|---|---|---|---|---|---|---|---|---|---|---|
| above_VAH | 229 | 107 | 0.467 | 0.355 | 0.441 | -4.640 | 107 | 122 | 0.441 | nan |
| VA_above_POC | 230 | 131 | 0.570 | 0.041 | -5.483 | -7.737 | 99 | 131 | -5.483 | nan |
| VA_below_POC | 230 | 109 | 0.474 | 0.468 | 8.152 | -2.655 | 109 | 121 | 8.152 | nan |
| below_VAL | 230 | 137 | 0.596 | 0.004 | 30.160 | 11.743 | 137 | 93 | 30.160 | nan |
S1 · Open vs prior NY/London/Tokyo session VA vs full-day VA
| ref | bucket | n | mean_bps | win_rate | t | p |
|---|---|---|---|---|---|---|
| full_day | VA_above_POC | 25597 | -3.730 | 0.463 | -0.741 | 0.459 |
| full_day | VA_below_POC | 27581 | 3.794 | 0.470 | 0.778 | 0.437 |
| full_day | above_VAH | 16864 | 7.566 | 0.455 | 1.363 | 0.173 |
| full_day | below_VAL | 20011 | 19.279 | 0.489 | 4.135 | 0.000 |
| full_day | SPREAD(abv-blw) | 36875 | -11.713 | nan | -1.616 | 0.106 |
| tokyo | VA_above_POC | 10860 | 6.630 | 0.456 | 0.709 | 0.478 |
| tokyo | VA_below_POC | 10824 | -13.187 | 0.463 | -1.874 | 0.061 |
| tokyo | above_VAH | 31175 | 7.831 | 0.453 | 1.792 | 0.073 |
| tokyo | below_VAL | 36999 | 8.665 | 0.490 | 2.502 | 0.012 |
| tokyo | SPREAD(abv-blw) | 68174 | -0.834 | nan | -0.150 | 0.881 |
| london | VA_above_POC | 15458 | -17.315 | 0.449 | -2.792 | 0.005 |
| london | VA_below_POC | 16030 | -8.759 | 0.466 | -1.504 | 0.133 |
| london | above_VAH | 27740 | 6.545 | 0.457 | 1.291 | 0.197 |
| london | below_VAL | 30825 | 24.299 | 0.492 | 6.233 | 0.000 |
| london | SPREAD(abv-blw) | 58565 | -17.753 | nan | -2.775 | 0.006 |
| ny | VA_above_POC | 22454 | 7.538 | 0.473 | 1.417 | 0.157 |
| ny | VA_below_POC | 23047 | 0.810 | 0.465 | 0.176 | 0.860 |
| ny | above_VAH | 21410 | 5.658 | 0.465 | 0.968 | 0.333 |
| ny | below_VAL | 23142 | 9.223 | 0.475 | 2.035 | 0.042 |
| ny | SPREAD(abv-blw) | 44552 | -3.566 | nan | -0.482 | 0.630 |
S2 · Prior-day session shape → next-day return
| bucket | group | n | mean_bps | median_bps | win_rate | t | p | session |
|---|---|---|---|---|---|---|---|---|
| tokyo_shape | D | 46609 | 5.095 | -24.092 | 0.470 | 1.410 | 0.159 | tokyo |
| tokyo_shape | P | 19965 | 10.767 | -9.903 | 0.485 | 2.044 | 0.041 | tokyo |
| tokyo_shape | b | 23284 | 1.787 | -39.325 | 0.456 | 0.386 | 0.700 | tokyo |
| london_shape | D | 48929 | 4.047 | -25.119 | 0.468 | 1.215 | 0.224 | london |
| london_shape | P | 18428 | 22.358 | -15.022 | 0.482 | 3.914 | 0.000 | london |
| london_shape | b | 22696 | -3.856 | -30.801 | 0.463 | -0.727 | 0.467 | london |
| ny_shape | D | 47654 | 7.389 | -24.378 | 0.470 | 2.167 | 0.030 | ny |
| ny_shape | P | 19853 | -4.612 | -34.098 | 0.458 | -0.816 | 0.414 | ny |
| ny_shape | b | 22546 | 11.621 | -16.145 | 0.480 | 2.283 | 0.022 | ny |
S3 · Prior-day session return (momentum) → next-day return
| session | prior_session | n | mean_bps | win_rate | t | p |
|---|---|---|---|---|---|---|
| tokyo | up | 43601 | 8.357 | 0.468 | 2.285 | 0.022 |
| tokyo | down | 45929 | 2.560 | 0.471 | 0.736 | 0.462 |
| london | up | 42432 | 1.527 | 0.452 | 0.411 | 0.681 |
| london | down | 47307 | 9.743 | 0.486 | 2.798 | 0.005 |
| ny | up | 43394 | 7.480 | 0.458 | 1.998 | 0.046 |
| ny | down | 46309 | 4.458 | 0.481 | 1.288 | 0.198 |
S4 · Prior-day dominant session (by turnover share) → next-day
| session | n | mean_bps | win_rate | t | p |
|---|---|---|---|---|---|
| tokyo | 26634 | 12.686 | 0.479 | 2.405 | 0.016 |
| london | 22777 | -10.984 | 0.465 | -2.361 | 0.018 |
| ny | 40447 | 10.045 | 0.467 | 2.865 | 0.004 |
S5 · Prior-day session VA width → next-day range
| session | va_band | n | next_day_range_pct | mean_ret_bps | t | p |
|---|---|---|---|---|---|---|
| tokyo | narrow | 44929 | 9.724 | 0.671 | 110.424 | 0.000 |
| tokyo | wide | 44929 | 10.175 | 10.324 | 111.826 | 0.000 |
| london | narrow | 45022 | 9.928 | 14.111 | 111.021 | 0.000 |
| london | wide | 45031 | 10.009 | -2.505 | 111.316 | 0.000 |
| ny | narrow | 45023 | 10.161 | -10.655 | 97.358 | 0.000 |
| ny | wide | 45030 | 9.776 | 22.257 | 135.719 | 0.000 |
CF · Factual vs counterfactual (UP vs 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.
| scenario | feature | n_up | n_down | mean_up | mean_down | diff | t | p | cohens_d | up_rate |
|---|---|---|---|---|---|---|---|---|---|---|
| above_VAH | poc_pos | 7666 | 9198 | 0.381 | 0.374 | 0.007 | 2.705 | 0.007 | 0.042 | 0.455 |
| above_VAH | va_width_ratio | 7666 | 9198 | 0.484 | 0.479 | 0.005 | 2.982 | 0.003 | 0.046 | 0.455 |
| above_VAH | upper_share | 7666 | 9198 | 0.431 | 0.420 | 0.011 | 4.926 | 0.000 | 0.076 | 0.455 |
| above_VAH | open_dist_va | 7666 | 9198 | 0.394 | 0.422 | -0.027 | -4.165 | 0.000 | -0.063 | 0.455 |
| above_VAH | tokyo_poc_pos | 7659 | 9192 | 0.494 | 0.480 | 0.013 | 4.319 | 0.000 | 0.067 | 0.455 |
| above_VAH | tokyo_va_width_ratio | 7659 | 9192 | 0.477 | 0.478 | -0.001 | -0.569 | 0.569 | -0.009 | 0.455 |
| above_VAH | tokyo_upper_share | 7659 | 9192 | 0.488 | 0.480 | 0.009 | 3.649 | 0.000 | 0.056 | 0.455 |
| above_VAH | tokyo_turnover_share | 7659 | 9192 | 0.331 | 0.335 | -0.004 | -1.896 | 0.058 | -0.029 | 0.455 |
| above_VAH | tokyo_ret | 7659 | 9192 | 0.002 | 0.002 | 0.000 | 0.386 | 0.699 | 0.006 | 0.455 |
| above_VAH | london_poc_pos | 7666 | 9198 | 0.459 | 0.460 | -0.001 | -0.254 | 0.799 | -0.004 | 0.455 |
| above_VAH | london_va_width_ratio | 7666 | 9198 | 0.490 | 0.488 | 0.001 | 0.919 | 0.358 | 0.014 | 0.455 |
| above_VAH | london_upper_share | 7666 | 9198 | 0.478 | 0.472 | 0.006 | 2.728 | 0.006 | 0.042 | 0.455 |
| above_VAH | london_turnover_share | 7666 | 9198 | 0.381 | 0.375 | 0.005 | 2.994 | 0.003 | 0.046 | 0.455 |
| above_VAH | london_ret | 7666 | 9198 | 0.015 | 0.016 | -0.001 | -1.788 | 0.074 | -0.027 | 0.455 |
| above_VAH | ny_poc_pos | 7666 | 9198 | 0.504 | 0.504 | -0.001 | -0.158 | 0.875 | -0.002 | 0.455 |
| above_VAH | ny_va_width_ratio | 7666 | 9198 | 0.501 | 0.502 | -0.001 | -0.479 | 0.632 | -0.007 | 0.455 |
| above_VAH | ny_upper_share | 7666 | 9198 | 0.490 | 0.491 | -0.001 | -0.300 | 0.764 | -0.005 | 0.455 |
| above_VAH | ny_turnover_share | 7666 | 9198 | 0.429 | 0.422 | 0.007 | 3.713 | 0.000 | 0.057 | 0.455 |
| above_VAH | ny_ret | 7666 | 9198 | 0.030 | 0.033 | -0.003 | -3.396 | 0.001 | -0.050 | 0.455 |
| above_VAH | prev_atr14_pct | 7666 | 9198 | 0.697 | 0.761 | -0.063 | -7.206 | 0.000 | -0.110 | 0.455 |
| above_VAH | gap_pct | 7666 | 9198 | 0.000 | 0.000 | 0.000 | nan | nan | nan | 0.455 |
| VA_above_POC | poc_pos | 11859 | 13738 | 0.441 | 0.432 | 0.009 | 3.618 | 0.000 | 0.045 | 0.463 |
| VA_above_POC | va_width_ratio | 11859 | 13738 | 0.484 | 0.485 | -0.001 | -0.694 | 0.487 | -0.009 | 0.463 |
| VA_above_POC | upper_share | 11859 | 13738 | 0.492 | 0.485 | 0.007 | 3.798 | 0.000 | 0.048 | 0.463 |
| VA_above_POC | open_dist_va | 11859 | 13738 | 0.250 | 0.254 | -0.005 | -1.754 | 0.079 | -0.022 | 0.463 |
| VA_above_POC | tokyo_poc_pos | 11839 | 13701 | 0.495 | 0.484 | 0.011 | 4.305 | 0.000 | 0.054 | 0.463 |
| VA_above_POC | tokyo_va_width_ratio | 11839 | 13701 | 0.501 | 0.500 | 0.000 | 0.226 | 0.821 | 0.003 | 0.463 |
| VA_above_POC | tokyo_upper_share | 11839 | 13701 | 0.497 | 0.486 | 0.011 | 5.930 | 0.000 | 0.074 | 0.463 |
| VA_above_POC | tokyo_turnover_share | 11839 | 13701 | 0.343 | 0.342 | 0.001 | 0.657 | 0.511 | 0.008 | 0.463 |
| VA_above_POC | tokyo_ret | 11839 | 13701 | 0.001 | -0.001 | 0.002 | 3.237 | 0.001 | 0.041 | 0.463 |
| VA_above_POC | london_poc_pos | 11859 | 13738 | 0.471 | 0.466 | 0.006 | 2.114 | 0.035 | 0.026 | 0.463 |
| VA_above_POC | london_va_width_ratio | 11859 | 13738 | 0.497 | 0.502 | -0.005 | -3.694 | 0.000 | -0.046 | 0.463 |
| VA_above_POC | london_upper_share | 11859 | 13738 | 0.480 | 0.479 | 0.001 | 0.645 | 0.519 | 0.008 | 0.463 |
| VA_above_POC | london_turnover_share | 11859 | 13738 | 0.405 | 0.402 | 0.003 | 2.010 | 0.044 | 0.025 | 0.463 |
| VA_above_POC | london_ret | 11859 | 13738 | 0.004 | 0.005 | -0.000 | -0.906 | 0.365 | -0.011 | 0.463 |
| VA_above_POC | ny_poc_pos | 11859 | 13738 | 0.491 | 0.495 | -0.004 | -1.648 | 0.099 | -0.021 | 0.463 |
| VA_above_POC | ny_va_width_ratio | 11859 | 13738 | 0.477 | 0.476 | 0.001 | 0.499 | 0.618 | 0.006 | 0.463 |
| VA_above_POC | ny_upper_share | 11859 | 13738 | 0.488 | 0.495 | -0.006 | -3.374 | 0.001 | -0.042 | 0.463 |
| VA_above_POC | ny_turnover_share | 11859 | 13738 | 0.432 | 0.436 | -0.004 | -2.336 | 0.020 | -0.029 | 0.463 |
| VA_above_POC | ny_ret | 11859 | 13738 | 0.008 | 0.009 | -0.001 | -1.786 | 0.074 | -0.022 | 0.463 |
| VA_above_POC | prev_atr14_pct | 11859 | 13738 | 0.705 | 0.750 | -0.045 | -5.653 | 0.000 | -0.070 | 0.463 |
| VA_above_POC | gap_pct | 11859 | 13738 | 0.000 | 0.000 | 0.000 | nan | nan | nan | 0.463 |
| VA_below_POC | poc_pos | 12973 | 14608 | 0.529 | 0.527 | 0.002 | 0.763 | 0.446 | 0.009 | 0.470 |
| VA_below_POC | va_width_ratio | 12973 | 14608 | 0.488 | 0.488 | 0.000 | 0.203 | 0.839 | 0.002 | 0.470 |
| VA_below_POC | upper_share | 12973 | 14608 | 0.496 | 0.495 | 0.001 | 0.799 | 0.424 | 0.010 | 0.470 |
| VA_below_POC | open_dist_va | 12973 | 14608 | -0.271 | -0.254 | -0.017 | -6.567 | 0.000 | -0.079 | 0.470 |
| VA_below_POC | tokyo_poc_pos | 12944 | 14556 | 0.496 | 0.488 | 0.009 | 3.391 | 0.001 | 0.041 | 0.470 |
| VA_below_POC | tokyo_va_width_ratio | 12944 | 14556 | 0.498 | 0.499 | -0.001 | -1.006 | 0.314 | -0.012 | 0.470 |
| VA_below_POC | tokyo_upper_share | 12944 | 14556 | 0.497 | 0.491 | 0.006 | 3.133 | 0.002 | 0.038 | 0.470 |
| VA_below_POC | tokyo_turnover_share | 12944 | 14556 | 0.345 | 0.341 | 0.004 | 2.418 | 0.016 | 0.029 | 0.470 |
| VA_below_POC | tokyo_ret | 12944 | 14556 | -0.000 | -0.001 | 0.001 | 1.001 | 0.317 | 0.012 | 0.470 |
| VA_below_POC | london_poc_pos | 12973 | 14608 | 0.508 | 0.500 | 0.009 | 3.441 | 0.001 | 0.042 | 0.470 |
| VA_below_POC | london_va_width_ratio | 12973 | 14608 | 0.501 | 0.503 | -0.002 | -1.855 | 0.064 | -0.022 | 0.470 |
| VA_below_POC | london_upper_share | 12973 | 14608 | 0.497 | 0.493 | 0.004 | 2.440 | 0.015 | 0.029 | 0.470 |
| VA_below_POC | london_turnover_share | 12973 | 14608 | 0.403 | 0.409 | -0.006 | -4.084 | 0.000 | -0.049 | 0.470 |
| VA_below_POC | london_ret | 12973 | 14608 | -0.004 | -0.003 | -0.001 | -2.274 | 0.023 | -0.027 | 0.470 |
| VA_below_POC | ny_poc_pos | 12973 | 14608 | 0.492 | 0.499 | -0.007 | -3.060 | 0.002 | -0.037 | 0.470 |
| VA_below_POC | ny_va_width_ratio | 12973 | 14608 | 0.479 | 0.475 | 0.004 | 3.240 | 0.001 | 0.039 | 0.470 |
| VA_below_POC | ny_upper_share | 12973 | 14608 | 0.487 | 0.496 | -0.009 | -5.176 | 0.000 | -0.062 | 0.470 |
| VA_below_POC | ny_turnover_share | 12973 | 14608 | 0.430 | 0.436 | -0.006 | -3.232 | 0.001 | -0.039 | 0.470 |
| VA_below_POC | ny_ret | 12973 | 14608 | -0.008 | -0.005 | -0.003 | -6.741 | 0.000 | -0.081 | 0.470 |
| VA_below_POC | prev_atr14_pct | 12973 | 14608 | 0.740 | 0.750 | -0.010 | -1.123 | 0.261 | -0.014 | 0.470 |
| VA_below_POC | gap_pct | 12973 | 14608 | 0.000 | 0.000 | 0.000 | nan | nan | nan | 0.470 |
| below_VAL | poc_pos | 9788 | 10223 | 0.604 | 0.608 | -0.003 | -1.445 | 0.148 | -0.020 | 0.489 |
| below_VAL | va_width_ratio | 9788 | 10223 | 0.484 | 0.479 | 0.004 | 2.771 | 0.006 | 0.039 | 0.489 |
| below_VAL | upper_share | 9788 | 10223 | 0.559 | 0.565 | -0.006 | -2.855 | 0.004 | -0.040 | 0.489 |
| below_VAL | open_dist_va | 9788 | 10223 | -202,948.726 | -0.401 | -202,948.324 | -1.000 | 0.317 | -0.014 | 0.489 |
| below_VAL | tokyo_poc_pos | 9770 | 10197 | 0.490 | 0.490 | -0.000 | -0.034 | 0.973 | -0.000 | 0.489 |
| below_VAL | tokyo_va_width_ratio | 9770 | 10197 | 0.473 | 0.470 | 0.003 | 2.263 | 0.024 | 0.032 | 0.489 |
| below_VAL | tokyo_upper_share | 9770 | 10197 | 0.494 | 0.493 | 0.001 | 0.505 | 0.614 | 0.007 | 0.489 |
| below_VAL | tokyo_turnover_share | 9770 | 10197 | 0.354 | 0.348 | 0.007 | 3.594 | 0.000 | 0.051 | 0.489 |
| below_VAL | tokyo_ret | 9770 | 10197 | -0.000 | 0.001 | -0.001 | -2.504 | 0.012 | -0.035 | 0.489 |
| below_VAL | london_poc_pos | 9788 | 10223 | 0.517 | 0.515 | 0.002 | 0.810 | 0.418 | 0.011 | 0.489 |
| below_VAL | london_va_width_ratio | 9788 | 10223 | 0.493 | 0.492 | 0.001 | 0.898 | 0.369 | 0.013 | 0.489 |
| below_VAL | london_upper_share | 9788 | 10223 | 0.501 | 0.500 | 0.001 | 0.281 | 0.779 | 0.004 | 0.489 |
| below_VAL | london_turnover_share | 9788 | 10223 | 0.378 | 0.386 | -0.008 | -4.641 | 0.000 | -0.066 | 0.489 |
| below_VAL | london_ret | 9788 | 10223 | -0.015 | -0.014 | -0.001 | -3.222 | 0.001 | -0.046 | 0.489 |
| below_VAL | ny_poc_pos | 9788 | 10223 | 0.486 | 0.481 | 0.005 | 1.842 | 0.065 | 0.026 | 0.489 |
| below_VAL | ny_va_width_ratio | 9788 | 10223 | 0.510 | 0.501 | 0.009 | 5.987 | 0.000 | 0.085 | 0.489 |
| below_VAL | ny_upper_share | 9788 | 10223 | 0.487 | 0.491 | -0.004 | -2.289 | 0.022 | -0.032 | 0.489 |
| below_VAL | ny_turnover_share | 9788 | 10223 | 0.409 | 0.412 | -0.003 | -1.533 | 0.125 | -0.022 | 0.489 |
| below_VAL | ny_ret | 9788 | 10223 | -0.028 | -0.026 | -0.002 | -4.368 | 0.000 | -0.062 | 0.489 |
| below_VAL | prev_atr14_pct | 9788 | 10223 | 0.776 | 0.759 | 0.016 | 1.543 | 0.123 | 0.022 | 0.489 |
| below_VAL | gap_pct | 9788 | 10223 | 0.000 | 0.000 | 0.000 | nan | nan | nan | 0.489 |
Decision trees · Joint conditions separating UP from DOWN
========================================================================
Scenario: above_VAH | n=16851 | base rate=0.545 | train acc=0.548 | OOS acc=0.552 | leaves=8
top features: {'prev_atr14_pct': np.float64(0.3617645818439843), 'tokyo_ret': np.float64(0.20610582300596106), 'tokyo_poc_pos': np.float64(0.19360515407199874), 'london_poc_pos': np.float64(0.12398143427810583), 'ny_ret': np.float64(0.11454300679995005), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0), 'upper_share': np.float64(0.0)}
|--- prev_atr14_pct <= 0.63
| |--- tokyo_ret <= -0.03
| | |--- tokyo_poc_pos <= 0.26
| | | |--- class: 0
| | |--- tokyo_poc_pos > 0.26
| | | |--- class: 0
| |--- tokyo_ret > -0.03
| | |--- london_poc_pos <= 0.83
| | | |--- class: 0
| | |--- london_poc_pos > 0.83
| | | |--- class: 1
|--- prev_atr14_pct > 0.63
| |--- tokyo_poc_pos <= 0.28
| | |--- tokyo_ret <= -0.04
| | | |--- class: 0
| | |--- tokyo_ret > -0.04
| | | |--- class: 0
| |--- tokyo_poc_pos > 0.28
| | |--- ny_ret <= 0.12
| | | |--- class: 0
| | |--- ny_ret > 0.12
| | | |--- class: 0
========================================================================
Scenario: VA_above_POC | n=25540 | base rate=0.536 | train acc=0.542 | OOS acc=0.527 | leaves=8
top features: {'prev_atr14_pct': np.float64(0.2895973153322696), 'tokyo_turnover_share': np.float64(0.21846016572424576), 'tokyo_upper_share': np.float64(0.1682695309619286), 'tokyo_ret': np.float64(0.12602870354059006), 'tokyo_va_width_ratio': np.float64(0.10445084984162627), 'london_ret': np.float64(0.09319343459933974), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0)}
|--- prev_atr14_pct <= 0.79
| |--- tokyo_upper_share <= 0.43
| | |--- tokyo_ret <= -0.06
| | | |--- class: 1
| | |--- tokyo_ret > -0.06
| | | |--- class: 0
| |--- tokyo_upper_share > 0.43
| | |--- tokyo_turnover_share <= 0.69
| | | |--- class: 1
| | |--- tokyo_turnover_share > 0.69
| | | |--- class: 0
|--- prev_atr14_pct > 0.79
| |--- tokyo_va_width_ratio <= 0.42
| | |--- tokyo_turnover_share <= 0.23
| | | |--- class: 0
| | |--- tokyo_turnover_share > 0.23
| | | |--- class: 0
| |--- tokyo_va_width_ratio > 0.42
| | |--- london_ret <= -0.00
| | | |--- class: 0
| | |--- london_ret > -0.00
| | | |--- class: 0
========================================================================
Scenario: VA_below_POC | n=27500 | base rate=0.529 | train acc=0.536 | OOS acc=0.540 | leaves=8
top features: {'london_ret': np.float64(0.4343162692928736), 'ny_ret': np.float64(0.16263721123582817), 'ny_turnover_share': np.float64(0.11169816381567564), 'tokyo_ret': np.float64(0.1090231717559656), 'ny_poc_pos': np.float64(0.0954869289535156), 'london_upper_share': np.float64(0.08683825494614136), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0)}
|--- london_ret <= 0.00
| |--- london_ret <= -0.03
| | |--- ny_poc_pos <= 0.25
| | | |--- class: 1
| | |--- ny_poc_pos > 0.25
| | | |--- class: 0
| |--- london_ret > -0.03
| | |--- ny_ret <= -0.03
| | | |--- class: 1
| | |--- ny_ret > -0.03
| | | |--- class: 0
|--- london_ret > 0.00
| |--- tokyo_ret <= -0.02
| | |--- ny_turnover_share <= 0.52
| | | |--- class: 0
| | |--- ny_turnover_share > 0.52
| | | |--- class: 0
| |--- tokyo_ret > -0.02
| | |--- london_upper_share <= 0.40
| | | |--- class: 0
| | |--- london_upper_share > 0.40
| | | |--- class: 0
========================================================================
Scenario: below_VAL | n=19967 | base rate=0.511 | train acc=0.554 | OOS acc=0.536 | leaves=8
top features: {'tokyo_ret': np.float64(0.1908206397089765), 'london_ret': np.float64(0.1717652751368205), 'london_turnover_share': np.float64(0.16075405149767782), 'tokyo_turnover_share': np.float64(0.15763153578453465), 'ny_turnover_share': np.float64(0.13443368759667546), 'open_dist_va': np.float64(0.09884091288690967), 'ny_va_width_ratio': np.float64(0.08575389738840541), 'poc_pos': np.float64(0.0)}
|--- tokyo_ret <= -0.01
| |--- london_ret <= -0.00
| | |--- london_turnover_share <= 0.52
| | | |--- class: 1
| | |--- london_turnover_share > 0.52
| | | |--- class: 0
| |--- london_ret > -0.00
| | |--- ny_va_width_ratio <= 0.65
| | | |--- class: 0
| | |--- ny_va_width_ratio > 0.65
| | | |--- class: 1
|--- tokyo_ret > -0.01
| |--- tokyo_turnover_share <= 0.38
| | |--- open_dist_va <= -1.16
| | | |--- class: 0
| | |--- open_dist_va > -1.16
| | | |--- class: 0
| |--- tokyo_turnover_share > 0.38
| | |--- ny_turnover_share <= 0.23
| | | |--- class: 0
| | |--- ny_turnover_share > 0.23
| | | |--- class: 1
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 = OOS p < 0.05. 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)
| group | n | OLS slope (bps per VA-width) | Pearson r | Spearman ρ | ρ p |
|---|---|---|---|---|---|
| dist_above_VAH | 16864 | -28.7 | -0.017 | -0.009 | 2.47e-01 |
| dist_below_VAL | 20011 | +0.0 | +0.002 | -0.017 | 1.83e-02 |
H1–H3 · Day return by open location vs prior-day profile
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| above_VAH | 16864 | +8 | -2 | 45.5% | 1.36 | 1.73e-01 | +10 | 2.27e-01 | ❌ |
| VA_above_POC | 25597 | -4 | -14 | 46.3% | -0.74 | 4.59e-01 | +7 | 3.15e-01 | ❌ |
| VA_below_POC | 27581 | +4 | -6 | 47.0% | 0.78 | 4.37e-01 | -7 | 2.42e-01 | ❌ |
| below_VAL | 20011 | +19 | +9 | 48.9% | 4.13 | 3.57e-05 | +53 | <1e-6 | ✅ |
H7–H9 · Prior-day POC position zone → next-day return
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| poc_near_VAL | 23104 | -13 | -23 | 45.4% | -2.61 | 9.04e-03 | -19 | 5.60e-03 | ✅ |
| poc_central | 45177 | +12 | +2 | 47.5% | 3.32 | 8.97e-04 | +11 | 2.29e-02 | ✅ |
| poc_near_VAH | 21772 | +13 | +3 | 47.6% | 2.56 | 1.04e-02 | +31 | 1.83e-04 | ✅ |
H10 · Prior VA width band → next-day return & range
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| va_narrow | 45017 | -2 | -12 | 46.5% | -0.41 | 6.80e-01 | — | — | ❌ |
| va_wide | 45036 | +13 | +3 | 47.4% | 3.93 | 8.36e-05 | — | — | ❌ |
H11 · Prior-day profile shape → next-day return & range
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| shape_P | 19973 | +14 | +4 | 47.5% | 2.58 | 9.89e-03 | — | — | ❌ |
| shape_b | 22372 | -13 | -23 | 45.2% | -2.43 | 1.53e-02 | — | — | ❌ |
| shape_D | 47708 | +11 | +1 | 47.5% | 3.42 | 6.35e-04 | — | — | ❌ |
H15 · Open-location effect by ATR regime (low/high tercile)
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| above_VAH_atr_low | 5439 | +23 | +13 | 50.1% | 4.32 | 1.58e-05 | — | — | ❌ |
| above_VAH_atr_high | 5739 | -7 | -17 | 41.4% | -0.53 | 5.94e-01 | — | — | ❌ |
| below_VAL_atr_low | 5837 | +2 | -8 | 48.2% | 0.46 | 6.42e-01 | — | — | ❌ |
| below_VAL_atr_high | 7438 | +57 | +47 | 50.1% | 5.39 | <1e-6 | — | — | ❌ |
H16 · Open-location effect by trend regime (daily EMA20)
| group | n | mean(bps) | net(bps) | win | t | p (adj) | OOS mean | OOS p | sig |
|---|---|---|---|---|---|---|---|---|---|
| above_VAH_trend_up | 8474 | +20 | +10 | 47.4% | 2.23 | 2.60e-02 | — | — | ❌ |
| above_VAH_trend_down | 8390 | -5 | -15 | 43.5% | -0.67 | 5.05e-01 | — | — | ❌ |
| below_VAL_trend_up | 5342 | +17 | +7 | 49.3% | 1.64 | 1.01e-01 | — | — | ❌ |
| below_VAL_trend_down | 14669 | +20 | +10 | 48.8% | 3.91 | 9.40e-05 | — | — | ❌ |
H5–H6 · First-hour drive & day leadership
| group | n | open-drive rate | 1h mean(bps) | day-follows-1h | day ret \ | 1h up(bps) | day ret \ | 1h dn(bps) |
|---|---|---|---|---|---|---|---|---|
| drive_above_VAH | 16864 | 43.4% | -7 | — | — | — | ||
| lead_above_VAH | 16864 | — | — | 60.3% | +138 | -92 | ||
| drive_below_VAL | 20011 | 46.1% | -1 | — | — | — | ||
| lead_below_VAL | 20011 | — | — | 58.0% | +103 | -80 |
H12–H13 · Fill-back into prior VA
| group | n | fill rate |
|---|---|---|
| fill_above_VAH | 16864 | 79.5% |
| fill_below_VAL | 20011 | 77.7% |
H17 · Per-symbol stability (robustness)
| loc | n_symbols | frac_agree | binom p | pooled mean(bps) | median sym mean(bps) | sym+ | sym− |
|---|---|---|---|---|---|---|---|
| above_VAH | 229 | 46.7% | 3.55e-01 | +0 | -5 | 107 | 122 |
| VA_above_POC | 230 | 57.0% | 4.07e-02 | -5 | -8 | 99 | 131 |
| VA_below_POC | 230 | 47.4% | 4.68e-01 | +8 | -3 | 109 | 121 |
| below_VAL | 230 | 59.6% | 4.47e-03 | +30 | +12 | 137 | 93 |
_Report auto-generated by src/report.py. Re-run src/analysis.py + src/report.py after a fetch to refresh._
S1 · Open vs prior NY/London/Tokyo session VA vs full-day VA
| ref | bucket | n | mean(bps) | win | t | p |
|---|---|---|---|---|---|---|
| full_day | VA_above_POC | 25597 | -4 | 46.3% | -0.74 | 4.59e-01 |
| full_day | VA_below_POC | 27581 | +4 | 47.0% | 0.78 | 4.37e-01 |
| full_day | above_VAH | 16864 | +8 | 45.5% | 1.36 | 1.73e-01 |
| full_day | below_VAL | 20011 | +19 | 48.9% | 4.13 | 3.57e-05 |
| full_day | SPREAD(abv-blw) | 36875 | -12 | — | -1.62 | 1.06e-01 |
| tokyo | VA_above_POC | 10860 | +7 | 45.6% | 0.71 | 4.78e-01 |
| tokyo | VA_below_POC | 10824 | -13 | 46.3% | -1.87 | 6.09e-02 |
| tokyo | above_VAH | 31175 | +8 | 45.3% | 1.79 | 7.31e-02 |
| tokyo | below_VAL | 36999 | +9 | 49.0% | 2.50 | 1.23e-02 |
| tokyo | SPREAD(abv-blw) | 68174 | -1 | — | -0.15 | 8.81e-01 |
| london | VA_above_POC | 15458 | -17 | 44.9% | -2.79 | 5.25e-03 |
| london | VA_below_POC | 16030 | -9 | 46.6% | -1.50 | 1.33e-01 |
| london | above_VAH | 27740 | +7 | 45.7% | 1.29 | 1.97e-01 |
| london | below_VAL | 30825 | +24 | 49.2% | 6.23 | <1e-6 |
| london | SPREAD(abv-blw) | 58565 | -18 | — | -2.78 | 5.52e-03 |
| ny | VA_above_POC | 22454 | +8 | 47.3% | 1.42 | 1.57e-01 |
| ny | VA_below_POC | 23047 | +1 | 46.5% | 0.18 | 8.60e-01 |
| ny | above_VAH | 21410 | +6 | 46.5% | 0.97 | 3.33e-01 |
| ny | below_VAL | 23142 | +9 | 47.5% | 2.03 | 4.19e-02 |
| ny | SPREAD(abv-blw) | 44552 | -4 | — | -0.48 | 6.30e-01 |
S2 · Prior-day session shape → next-day return
| session | shape | n | mean(bps) | win | t | p |
|---|---|---|---|---|---|---|
| tokyo | D | 46609 | +5 | 47.0% | 1.41 | 1.59e-01 |
| tokyo | P | 19965 | +11 | 48.5% | 2.04 | 4.10e-02 |
| tokyo | b | 23284 | +2 | 45.6% | 0.39 | 7.00e-01 |
| london | D | 48929 | +4 | 46.8% | 1.21 | 2.24e-01 |
| london | P | 18428 | +22 | 48.2% | 3.91 | 9.10e-05 |
| london | b | 22696 | -4 | 46.3% | -0.73 | 4.67e-01 |
| ny | D | 47654 | +7 | 47.0% | 2.17 | 3.02e-02 |
| ny | P | 19853 | -5 | 45.8% | -0.82 | 4.14e-01 |
| ny | b | 22546 | +12 | 48.0% | 2.28 | 2.25e-02 |
S3 · Prior-day session return (momentum) → next-day return
| session | prior session | n | mean(bps) | win | t | p |
|---|---|---|---|---|---|---|
| tokyo | up | 43601 | +8 | 46.8% | 2.28 | 2.23e-02 |
| tokyo | down | 45929 | +3 | 47.1% | 0.74 | 4.62e-01 |
| london | up | 42432 | +2 | 45.2% | 0.41 | 6.81e-01 |
| london | down | 47307 | +10 | 48.6% | 2.80 | 5.15e-03 |
| ny | up | 43394 | +7 | 45.8% | 2.00 | 4.57e-02 |
| ny | down | 46309 | +4 | 48.1% | 1.29 | 1.98e-01 |
S4 · Prior-day dominant session (by turnover share) → next-day
| session | n | mean(bps) | win | t | p |
|---|---|---|---|---|---|
| tokyo | 26634 | +13 | 47.9% | 2.41 | 1.62e-02 |
| london | 22777 | -11 | 46.5% | -2.36 | 1.83e-02 |
| ny | 40447 | +10 | 46.7% | 2.87 | 4.17e-03 |
S5 · Prior-day session VA width → next-day range
| session | VA band | n | next-day range % | mean ret(bps) | p |
|---|---|---|---|---|---|
| tokyo | narrow | 44929 | 9.72% | +1 | <1e-6 |
| tokyo | wide | 44929 | 10.18% | +10 | <1e-6 |
| london | narrow | 45022 | 9.93% | +14 | <1e-6 |
| london | wide | 45031 | 10.01% | -3 | <1e-6 |
| ny | narrow | 45023 | 10.16% | -11 | <1e-6 |
| ny | wide | 45030 | 9.78% | +22 | <1e-6 |
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._
| scenario | feature | n_up | n_dn | mean UP | mean DN | diff | t | p | d |
|---|---|---|---|---|---|---|---|---|---|
| above_VAH | poc_pos | 7666 | 9198 | 0.3811 | 0.3740 | +0.0071 | 2.70 | 6.84e-03 | +0.04 |
| above_VAH | va_width_ratio | 7666 | 9198 | 0.4843 | 0.4790 | +0.0052 | 2.98 | 2.87e-03 | +0.05 |
| above_VAH | upper_share | 7666 | 9198 | 0.4306 | 0.4199 | +0.0107 | 4.93 | <1e-6 | +0.08 |
| above_VAH | open_dist_va | 7666 | 9198 | 0.3944 | 0.4219 | -0.0275 | -4.17 | 3.13e-05 | -0.06 |
| above_VAH | tokyo_poc_pos | 7659 | 9192 | 0.4937 | 0.4803 | +0.0133 | 4.32 | 1.58e-05 | +0.07 |
| above_VAH | tokyo_va_width_ratio | 7659 | 9192 | 0.4774 | 0.4783 | -0.0009 | -0.57 | 5.69e-01 | -0.01 |
| above_VAH | tokyo_upper_share | 7659 | 9192 | 0.4884 | 0.4797 | +0.0087 | 3.65 | 2.64e-04 | +0.06 |
| above_VAH | tokyo_turnover_share | 7659 | 9192 | 0.3311 | 0.3347 | -0.0037 | -1.90 | 5.80e-02 | -0.03 |
| above_VAH | tokyo_ret | 7659 | 9192 | 0.0018 | 0.0016 | +0.0002 | 0.39 | 6.99e-01 | +0.01 |
| above_VAH | london_poc_pos | 7666 | 9198 | 0.4590 | 0.4598 | -0.0008 | -0.25 | 7.99e-01 | -0.00 |
| above_VAH | london_va_width_ratio | 7666 | 9198 | 0.4896 | 0.4881 | +0.0015 | 0.92 | 3.58e-01 | +0.01 |
| above_VAH | london_upper_share | 7666 | 9198 | 0.4783 | 0.4723 | +0.0060 | 2.73 | 6.38e-03 | +0.04 |
| above_VAH | london_turnover_share | 7666 | 9198 | 0.3805 | 0.3753 | +0.0052 | 2.99 | 2.75e-03 | +0.05 |
| above_VAH | london_ret | 7666 | 9198 | 0.0145 | 0.0155 | -0.0010 | -1.79 | 7.37e-02 | -0.03 |
| above_VAH | ny_poc_pos | 7666 | 9198 | 0.5038 | 0.5043 | -0.0005 | -0.16 | 8.75e-01 | -0.00 |
| above_VAH | ny_va_width_ratio | 7666 | 9198 | 0.5014 | 0.5022 | -0.0008 | -0.48 | 6.32e-01 | -0.01 |
| above_VAH | ny_upper_share | 7666 | 9198 | 0.4902 | 0.4909 | -0.0007 | -0.30 | 7.64e-01 | -0.00 |
| above_VAH | ny_turnover_share | 7666 | 9198 | 0.4295 | 0.4223 | +0.0072 | 3.71 | 2.06e-04 | +0.06 |
| above_VAH | ny_ret | 7666 | 9198 | 0.0302 | 0.0335 | -0.0032 | -3.40 | 6.85e-04 | -0.05 |
| above_VAH | prev_atr14_pct | 7666 | 9198 | 0.6975 | 0.7608 | -0.0633 | -7.21 | <1e-6 | -0.11 |
| above_VAH | gap_pct | 7666 | 9198 | 0.0000 | 0.0000 | +0.0000 | nan | — | +nan |
| VA_above_POC | poc_pos | 11859 | 13738 | 0.4410 | 0.4318 | +0.0092 | 3.62 | 2.98e-04 | +0.05 |
| VA_above_POC | va_width_ratio | 11859 | 13738 | 0.4844 | 0.4853 | -0.0010 | -0.69 | 4.87e-01 | -0.01 |
| VA_above_POC | upper_share | 11859 | 13738 | 0.4923 | 0.4850 | +0.0073 | 3.80 | 1.46e-04 | +0.05 |
| VA_above_POC | open_dist_va | 11859 | 13738 | 0.2499 | 0.2545 | -0.0046 | -1.75 | 7.95e-02 | -0.02 |
| VA_above_POC | tokyo_poc_pos | 11839 | 13701 | 0.4952 | 0.4838 | +0.0114 | 4.30 | 1.68e-05 | +0.05 |
| VA_above_POC | tokyo_va_width_ratio | 11839 | 13701 | 0.5007 | 0.5004 | +0.0003 | 0.23 | 8.21e-01 | +0.00 |
| VA_above_POC | tokyo_upper_share | 11839 | 13701 | 0.4968 | 0.4860 | +0.0109 | 5.93 | <1e-6 | +0.07 |
| VA_above_POC | tokyo_turnover_share | 11839 | 13701 | 0.3431 | 0.3420 | +0.0011 | 0.66 | 5.11e-01 | +0.01 |
| VA_above_POC | tokyo_ret | 11839 | 13701 | 0.0011 | -0.0008 | +0.0019 | 3.24 | 1.21e-03 | +0.04 |
| VA_above_POC | london_poc_pos | 11859 | 13738 | 0.4714 | 0.4659 | +0.0055 | 2.11 | 3.45e-02 | +0.03 |
| VA_above_POC | london_va_width_ratio | 11859 | 13738 | 0.4973 | 0.5022 | -0.0050 | -3.69 | 2.21e-04 | -0.05 |
| VA_above_POC | london_upper_share | 11859 | 13738 | 0.4798 | 0.4786 | +0.0011 | 0.65 | 5.19e-01 | +0.01 |
| VA_above_POC | london_turnover_share | 11859 | 13738 | 0.4050 | 0.4019 | +0.0031 | 2.01 | 4.44e-02 | +0.03 |
| VA_above_POC | london_ret | 11859 | 13738 | 0.0043 | 0.0048 | -0.0005 | -0.91 | 3.65e-01 | -0.01 |
| VA_above_POC | ny_poc_pos | 11859 | 13738 | 0.4906 | 0.4946 | -0.0041 | -1.65 | 9.93e-02 | -0.02 |
| VA_above_POC | ny_va_width_ratio | 11859 | 13738 | 0.4770 | 0.4764 | +0.0006 | 0.50 | 6.18e-01 | +0.01 |
| VA_above_POC | ny_upper_share | 11859 | 13738 | 0.4884 | 0.4948 | -0.0063 | -3.37 | 7.43e-04 | -0.04 |
| VA_above_POC | ny_turnover_share | 11859 | 13738 | 0.4321 | 0.4363 | -0.0042 | -2.34 | 1.95e-02 | -0.03 |
| VA_above_POC | ny_ret | 11859 | 13738 | 0.0081 | 0.0091 | -0.0010 | -1.79 | 7.41e-02 | -0.02 |
| VA_above_POC | prev_atr14_pct | 11859 | 13738 | 0.7049 | 0.7499 | -0.0449 | -5.65 | <1e-6 | -0.07 |
| VA_above_POC | gap_pct | 11859 | 13738 | 0.0000 | 0.0000 | +0.0000 | nan | — | +nan |
| VA_below_POC | poc_pos | 12973 | 14608 | 0.5293 | 0.5274 | +0.0019 | 0.76 | 4.46e-01 | +0.01 |
| VA_below_POC | va_width_ratio | 12973 | 14608 | 0.4878 | 0.4875 | +0.0003 | 0.20 | 8.39e-01 | +0.00 |
| VA_below_POC | upper_share | 12973 | 14608 | 0.4964 | 0.4949 | +0.0015 | 0.80 | 4.24e-01 | +0.01 |
| VA_below_POC | open_dist_va | 12973 | 14608 | -0.2712 | -0.2543 | -0.0168 | -6.57 | <1e-6 | -0.08 |
| VA_below_POC | tokyo_poc_pos | 12944 | 14556 | 0.4965 | 0.4879 | +0.0086 | 3.39 | 6.98e-04 | +0.04 |
| VA_below_POC | tokyo_va_width_ratio | 12944 | 14556 | 0.4978 | 0.4991 | -0.0013 | -1.01 | 3.14e-01 | -0.01 |
| VA_below_POC | tokyo_upper_share | 12944 | 14556 | 0.4966 | 0.4910 | +0.0056 | 3.13 | 1.73e-03 | +0.04 |
| VA_below_POC | tokyo_turnover_share | 12944 | 14556 | 0.3452 | 0.3412 | +0.0040 | 2.42 | 1.56e-02 | +0.03 |
| VA_below_POC | tokyo_ret | 12944 | 14556 | -0.0005 | -0.0010 | +0.0006 | 1.00 | 3.17e-01 | +0.01 |
| VA_below_POC | london_poc_pos | 12973 | 14608 | 0.5083 | 0.4997 | +0.0087 | 3.44 | 5.79e-04 | +0.04 |
| VA_below_POC | london_va_width_ratio | 12973 | 14608 | 0.5009 | 0.5033 | -0.0024 | -1.85 | 6.37e-02 | -0.02 |
| VA_below_POC | london_upper_share | 12973 | 14608 | 0.4973 | 0.4932 | +0.0041 | 2.44 | 1.47e-02 | +0.03 |
| VA_below_POC | london_turnover_share | 12973 | 14608 | 0.4031 | 0.4091 | -0.0060 | -4.08 | 4.44e-05 | -0.05 |
| VA_below_POC | london_ret | 12973 | 14608 | -0.0044 | -0.0032 | -0.0012 | -2.27 | 2.30e-02 | -0.03 |
| VA_below_POC | ny_poc_pos | 12973 | 14608 | 0.4921 | 0.4994 | -0.0073 | -3.06 | 2.22e-03 | -0.04 |
| VA_below_POC | ny_va_width_ratio | 12973 | 14608 | 0.4793 | 0.4754 | +0.0038 | 3.24 | 1.20e-03 | +0.04 |
| VA_below_POC | ny_upper_share | 12973 | 14608 | 0.4869 | 0.4962 | -0.0093 | -5.18 | <1e-6 | -0.06 |
| VA_below_POC | ny_turnover_share | 12973 | 14608 | 0.4301 | 0.4356 | -0.0055 | -3.23 | 1.23e-03 | -0.04 |
| VA_below_POC | ny_ret | 12973 | 14608 | -0.0080 | -0.0045 | -0.0035 | -6.74 | <1e-6 | -0.08 |
| VA_below_POC | prev_atr14_pct | 12973 | 14608 | 0.7397 | 0.7499 | -0.0102 | -1.12 | 2.61e-01 | -0.01 |
| VA_below_POC | gap_pct | 12973 | 14608 | 0.0000 | 0.0000 | +0.0000 | nan | — | +nan |
| below_VAL | poc_pos | 9788 | 10223 | 0.6042 | 0.6076 | -0.0034 | -1.45 | 1.48e-01 | -0.02 |
| below_VAL | va_width_ratio | 9788 | 10223 | 0.4837 | 0.4793 | +0.0044 | 2.77 | 5.60e-03 | +0.04 |
| below_VAL | upper_share | 9788 | 10223 | 0.5593 | 0.5649 | -0.0056 | -2.86 | 4.30e-03 | -0.04 |
| below_VAL | open_dist_va | 9788 | 10223 | -202948.7255 | -0.4010 | -202948.3245 | -1.00 | 3.17e-01 | -0.01 |
| below_VAL | tokyo_poc_pos | 9770 | 10197 | 0.4900 | 0.4900 | -0.0001 | -0.03 | 9.73e-01 | -0.00 |
| below_VAL | tokyo_va_width_ratio | 9770 | 10197 | 0.4728 | 0.4695 | +0.0033 | 2.26 | 2.37e-02 | +0.03 |
| below_VAL | tokyo_upper_share | 9770 | 10197 | 0.4941 | 0.4929 | +0.0011 | 0.50 | 6.14e-01 | +0.01 |
| below_VAL | tokyo_turnover_share | 9770 | 10197 | 0.3543 | 0.3476 | +0.0067 | 3.59 | 3.27e-04 | +0.05 |
| below_VAL | tokyo_ret | 9770 | 10197 | -0.0002 | 0.0011 | -0.0013 | -2.50 | 1.23e-02 | -0.04 |
| below_VAL | london_poc_pos | 9788 | 10223 | 0.5174 | 0.5151 | +0.0023 | 0.81 | 4.18e-01 | +0.01 |
| below_VAL | london_va_width_ratio | 9788 | 10223 | 0.4930 | 0.4917 | +0.0013 | 0.90 | 3.69e-01 | +0.01 |
| below_VAL | london_upper_share | 9788 | 10223 | 0.5008 | 0.5002 | +0.0006 | 0.28 | 7.79e-01 | +0.00 |
| below_VAL | london_turnover_share | 9788 | 10223 | 0.3784 | 0.3860 | -0.0076 | -4.64 | 3.48e-06 | -0.07 |
| below_VAL | london_ret | 9788 | 10223 | -0.0154 | -0.0139 | -0.0015 | -3.22 | 1.28e-03 | -0.05 |
| below_VAL | ny_poc_pos | 9788 | 10223 | 0.4863 | 0.4809 | +0.0054 | 1.84 | 6.55e-02 | +0.03 |
| below_VAL | ny_va_width_ratio | 9788 | 10223 | 0.5097 | 0.5007 | +0.0090 | 5.99 | <1e-6 | +0.08 |
| below_VAL | ny_upper_share | 9788 | 10223 | 0.4866 | 0.4911 | -0.0045 | -2.29 | 2.21e-02 | -0.03 |
| below_VAL | ny_turnover_share | 9788 | 10223 | 0.4092 | 0.4121 | -0.0029 | -1.53 | 1.25e-01 | -0.02 |
| below_VAL | ny_ret | 9788 | 10223 | -0.0285 | -0.0263 | -0.0022 | -4.37 | 1.26e-05 | -0.06 |
| below_VAL | prev_atr14_pct | 9788 | 10223 | 0.7759 | 0.7595 | +0.0164 | 1.54 | 1.23e-01 | +0.02 |
| below_VAL | gap_pct | 9788 | 10223 | 0.0000 | 0.0000 | +0.0000 | nan | — | +nan |
CF-TREES · Joint conditions separating UP from DOWN
========================================================================
Scenario: above_VAH | n=16851 | base rate=0.545 | train acc=0.548 | OOS acc=0.552 | leaves=8
top features: {'prev_atr14_pct': np.float64(0.3617645818439843), 'tokyo_ret': np.float64(0.20610582300596106), 'tokyo_poc_pos': np.float64(0.19360515407199874), 'london_poc_pos': np.float64(0.12398143427810583), 'ny_ret': np.float64(0.11454300679995005), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0), 'upper_share': np.float64(0.0)}
|--- prev_atr14_pct <= 0.63
| |--- tokyo_ret <= -0.03
| | |--- tokyo_poc_pos <= 0.26
| | | |--- class: 0
| | |--- tokyo_poc_pos > 0.26
| | | |--- class: 0
| |--- tokyo_ret > -0.03
| | |--- london_poc_pos <= 0.83
| | | |--- class: 0
| | |--- london_poc_pos > 0.83
| | | |--- class: 1
|--- prev_atr14_pct > 0.63
| |--- tokyo_poc_pos <= 0.28
| | |--- tokyo_ret <= -0.04
| | | |--- class: 0
| | |--- tokyo_ret > -0.04
| | | |--- class: 0
| |--- tokyo_poc_pos > 0.28
| | |--- ny_ret <= 0.12
| | | |--- class: 0
| | |--- ny_ret > 0.12
| | | |--- class: 0
========================================================================
Scenario: VA_above_POC | n=25540 | base rate=0.536 | train acc=0.542 | OOS acc=0.527 | leaves=8
top features: {'prev_atr14_pct': np.float64(0.2895973153322696), 'tokyo_turnover_share': np.float64(0.21846016572424576), 'tokyo_upper_share': np.float64(0.1682695309619286), 'tokyo_ret': np.float64(0.12602870354059006), 'tokyo_va_width_ratio': np.float64(0.10445084984162627), 'london_ret': np.float64(0.09319343459933974), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0)}
|--- prev_atr14_pct <= 0.79
| |--- tokyo_upper_share <= 0.43
| | |--- tokyo_ret <= -0.06
| | | |--- class: 1
| | |--- tokyo_ret > -0.06
| | | |--- class: 0
| |--- tokyo_upper_share > 0.43
| | |--- tokyo_turnover_share <= 0.69
| | | |--- class: 1
| | |--- tokyo_turnover_share > 0.69
| | | |--- class: 0
|--- prev_atr14_pct > 0.79
| |--- tokyo_va_width_ratio <= 0.42
| | |--- tokyo_turnover_share <= 0.23
| | | |--- class: 0
| | |--- tokyo_turnover_share > 0.23
| | | |--- class: 0
| |--- tokyo_va_width_ratio > 0.42
| | |--- london_ret <= -0.00
| | | |--- class: 0
| | |--- london_ret > -0.00
| | | |--- class: 0
========================================================================
Scenario: VA_below_POC | n=27500 | base rate=0.529 | train acc=0.536 | OOS acc=0.540 | leaves=8
top features: {'london_ret': np.float64(0.4343162692928736), 'ny_ret': np.float64(0.16263721123582817), 'ny_turnover_share': np.float64(0.11169816381567564), 'tokyo_ret': np.float64(0.1090231717559656), 'ny_poc_pos': np.float64(0.0954869289535156), 'london_upper_share': np.float64(0.08683825494614136), 'poc_pos': np.float64(0.0), 'va_width_ratio': np.float64(0.0)}
|--- london_ret <= 0.00
| |--- london_ret <= -0.03
| | |--- ny_poc_pos <= 0.25
| | | |--- class: 1
| | |--- ny_poc_pos > 0.25
| | | |--- class: 0
| |--- london_ret > -0.03
| | |--- ny_ret <= -0.03
| | | |--- class: 1
| | |--- ny_ret > -0.03
| | | |--- class: 0
|--- london_ret > 0.00
| |--- tokyo_ret <= -0.02
| | |--- ny_turnover_share <= 0.52
| | | |--- class: 0
| | |--- ny_turnover_share > 0.52
| | | |--- class: 0
| |--- tokyo_ret > -0.02
| | |--- london_upper_share <= 0.40
| | | |--- class: 0
| | |--- london_upper_share > 0.40
| | | |--- class: 0
========================================================================
Scenario: below_VAL | n=19967 | base rate=0.511 | train acc=0.554 | OOS acc=0.536 | leaves=8
top features: {'tokyo_ret': np.float64(0.1908206397089765), 'london_ret': np.float64(0.1717652751368205), 'london_turnover_share': np.float64(0.16075405149767782), 'tokyo_turnover_share': np.float64(0.15763153578453465), 'ny_turnover_share': np.float64(0.13443368759667546), 'open_dist_va': np.float64(0.09884091288690967), 'ny_va_width_ratio': np.float64(0.08575389738840541), 'poc_pos': np.float64(0.0)}
|--- tokyo_ret <= -0.01
| |--- london_ret <= -0.00
| | |--- london_turnover_share <= 0.52
| | | |--- class: 1
| | |--- london_turnover_share > 0.52
| | | |--- class: 0
| |--- london_ret > -0.00
| | |--- ny_va_width_ratio <= 0.65
| | | |--- class: 0
| | |--- ny_va_width_ratio > 0.65
| | | |--- class: 1
|--- tokyo_ret > -0.01
| |--- tokyo_turnover_share <= 0.38
| | |--- open_dist_va <= -1.16
| | | |--- class: 0
| | |--- open_dist_va > -1.16
| | | |--- class: 0
| |--- tokyo_turnover_share > 0.38
| | |--- ny_turnover_share <= 0.23
| | | |--- class: 0
| | |--- ny_turnover_share > 0.23
| | | |--- class: 1