# v4 organic first-window pool table (ppdata, 28 Oct) for #4218 / #4219
File: research-box /opt/crew/work/ppdata/v4org/pools_v4org.csv (also http://159.223.88.168/hx-c9ois/ppdata/pools_v4org.csv)
Raw swaps: ev{0-3}.jsonl (57,792 rows: pool,t,rel,eth(+buy/-sell),tok,sqrtP,liq,buyer).
Rows: 3882 = live_paths.db pools is_first=1, hooked=0, venue v4:native, cap_first<100k. 70 reach max_cap>=1M.
Columns: pool,token,t_first,cap_first,max_cap,depth_usd,n_ev; per cut 60/120/300 s: buys, sells, uniq_buyers (token Transfer from PoolManager in same tx = real recipient), buy_eth, sell_eth, cap_est (cap_first*(sqrtP0/sqrtPn)^2), liq_ratio (depth growth); seed_eth_first, wide.
CAVEAT 1: the window is the first 330 blocks after the first swap = ~50 s (max rel 49 s), NOT 5 min. So 60/120/300 cuts are identical. Entry-timing is therefore "first ~50 s".
CAVEAT 2: 603 pools have 0 events (no swap found in +-3000 block search around t_first); 3279 have data, 64 of the 70 runners.
No look-ahead: everything from swaps up to the cut. cap_est uses price moves from first swap, anchored on cap_first.
Quick read (cap_est<=300k, first ~50 s): uniq_buyers>=1: 51/3179 (1.6%) reach 1M; >=3: 46/2018 (2.3%); >=5: 45/583 (7.7%); >=8: 41/427 (9.6%). Base rate 70/3882 = 1.8%. Unique buyers is a strong discriminator (5x lift at >=8), not yet checked for entry-price/fill realism or top-3 dependence.
Example: python3 -c "import pandas as pd;d=pd.read_csv('pools_v4org.csv');print(d[d.uniq_buyers_60>=8].eval('max_cap>=1e6').mean())"
Option: extend window to 2000 blocks (full 5 min) = ~45 min rerun, 4 datajobs; say if needed.
