<code-root>/rvol_orb.py:73: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.
  df = pd.concat(frames, ignore_index=True)
============================================================================================
PRIMARY  —  NQ · 5m OR · Entry B (confirm) · Q5 · 1.0 pt friction · pass bar t > 3.0
============================================================================================
  n = 577   mean net = -1.114 pt   t = -0.33   hit = 33.3%   total = -642.8 pt
  >>> PRIMARY FAIL

============================================================================================
SECONDARY 1 — monotonicity across RVOL quintiles (the distinctive Zarattini claim)
============================================================================================
                bucket      n   mean_net       t   hit%   rvol range
                    Q1    605     -1.396   -0.47   24.3   0.02–0.78
                    Q2    870      1.436    0.58   27.1   0.68–0.94
                    Q3    953     -0.910   -0.40   26.8   0.90–1.13
                    Q4    908      0.112    0.04   28.4   1.07–1.43
                    Q5    577     -1.114   -0.33   33.3   1.29–3.85
  Spearman rho(Q1->Q5) = +0.100   (Zarattini on stocks: strictly increasing)

============================================================================================
SECONDARY 2 — entry rule: A (naive touch) vs B (desk confirm)
============================================================================================
                  cell      n   mean_net       t   hit%
         A naive · all   3913      0.361    0.27   27.5 
          A naive · Q5    577     -0.152   -0.04   31.7 
       B confirm · all   3913     -0.256   -0.21   27.8 
        B confirm · Q5    577     -1.114   -0.33   33.3 

============================================================================================
SECONDARY 3 — friction sensitivity (NQ, Entry B, base cost 1.0 pt)
============================================================================================
                  cell      n   mean_net       t   hit%
  0.0 pt (gross) · all   3913      0.744    0.61   28.3 
   0.0 pt (gross) · Q5    577     -0.114   -0.03   34.1 
          0.5 pt · all   3913      0.244    0.20   28.1 
           0.5 pt · Q5    577     -0.614   -0.18   33.3 
          1.0 pt · all   3913     -0.256   -0.21   27.8 
           1.0 pt · Q5    577     -1.114   -0.33   33.3 
          2.0 pt · all   3913     -1.256   -1.04   27.6 
           2.0 pt · Q5    577     -2.114   -0.63   32.9 

============================================================================================
SECONDARY 4 — year-by-year, NQ Q5 (Mesfin's failure mode: one year masking flat ones)
============================================================================================
                  year      n   mean_net      total
                  2010      2      4.625     nan    nan        9.2
                  2011     52      3.314     nan    nan      172.3
                  2012     49     -1.046     nan    nan      -51.2
                  2013     43     -2.004     nan    nan      -86.2
                  2014     50     -2.219     nan    nan     -110.9
                  2015     38     -8.803     nan    nan     -334.5
                  2016     32     -2.766     nan    nan      -88.5
                  2017     44     -0.185     nan    nan       -8.1
                  2018     50      3.074     nan    nan      153.7
                  2019     26     -0.897     nan    nan      -23.3
                  2020     36    -15.247     nan    nan     -548.9
                  2021     25    -20.715     nan    nan     -517.9
                  2022     21     22.179     nan    nan      465.8
                  2023     26     12.870     nan    nan      334.6
                  2024     24     58.010     nan    nan     1392.2
                  2025     39    -30.641     nan    nan    -1195.0
                  2026     20    -10.306     nan    nan     -206.1
  years with positive mean: 6/17
  IS  (<2020): n= 386 mean=-0.952 t=-0.60
  OOS (>=2020): n= 191 mean=-1.441 t=-0.15

============================================================================================
SECONDARY 5 — replication set, each instrument's own Q5, Entry B, desk friction
============================================================================================
                symbol      n   mean_net       t   hit%   p99 RVOL
                    NQ    577     -1.114   -0.33   33.3   2.23
                    ES    670     -0.901   -1.29   27.9   2.21
                   RTY    341     -0.114   -0.12   34.9   2.05
                    YM    632     -9.911   -1.78   30.2   2.22
                    CL    752     -0.046   -1.80   28.3   3.35
                    GC    704     -0.566   -1.49   30.0   4.04
                    ZN    779     -0.062   -9.83   22.6   3.58
                    6E    464     -0.001   -8.73   20.9   4.37
  instruments replicating at t > 2.0 (excl. NQ): 0/7  (pre-reg needs >= 4)

============================================================================================
VERDICT vs pre-registered falsification criteria
============================================================================================
  1. primary t > 3.0 and positive .......... FAIL  (t=-0.33)
  2. monotonicity rho > 0 .................. PASS  (rho=+0.100)
  3. >= 4/7 instruments replicate t > 2.0 .. FAIL  (0/7)

  H1 = REFUTED
