# Seven-venue BTC volume share and realised volatility, one week -- raw side ## Question Venue share and realised vol. For BTC perpetuals on Hyperliquid, edgeX, ApeX, Pacifica, dYdX, Paradex and Nado over 2026-09-21 00:00 to 2026-09-28 00:00 UTC: each venue's total traded notional in USD and its share of the seven-venue total; and each venue's realised volatility of 1-minute log returns, annualised. Is realised vol consistent across venues? If not, explain the outliers. ## System prompt You are an agent assisting a quantitative researcher. Work the question end to end: find the data, compute, check your own numbers, and make the judgement calls a careful quant would make. You have a Bash tool; Python 3 with duckdb, pandas, pyarrow and numpy is at /tmp/peerfeed-a21/venv/bin/python. Work inside your current directory. When you are done, end with a section headed FINAL ANSWER that gives every number asked for and states each judgement call you made. The researcher has downloaded PeerFeed's parquet archive for the relevant venues and data types to /tmp/peerfeed-a21/archive, in the layout PeerFeed delivers it. That directory is your only source of market data; there is no API access. ## [agent thinking] ## [tool call 1] Bash { "command": "cd /tmp/peerfeed-a21/archive; find . -maxdepth 4 | head -100; find . -type f | wc -l; find . -type f -not -name '*.parquet'" } ## [tool result] . ./apex ./dydx ./paradex ./pacifica ./edgex ./extended ./hyperliquid ./nado ./apex/trades ./dydx/trades ./paradex/trades ./pacifica/trades ./pacifica/prices ./edgex/trades ./edgex/ticker ./extended/funding ./hyperliquid/trades ./hyperliquid/activeAssetCtx ./nado/funding_rate ./nado/trades ./apex/trades/parquet ./dydx/trades/parquet ./paradex/trades/parquet ./nado/funding_rate/parquet ./nado/trades/parquet ./pacifica/trades/parquet ./pacifica/prices/parquet ./edgex/trades/parquet ./edgex/ticker/parquet ./extended/funding/parquet ./hyperliquid/trades/parquet ./hyperliquid/activeAssetCtx/parquet ./apex/trades/parquet/2026 ./dydx/trades/parquet/2026 ./paradex/trades/parquet/2026 ./nado/funding_rate/parquet/2026 ./nado/trades/parquet/2026 ./extended/funding/parquet/2026 ./hyperliquid/trades/parquet/2026 ./hyperliquid/activeAssetCtx/parquet/2026 ./pacifica/trades/parquet/2026 ./pacifica/prices/parquet/2026 ./edgex/trades/parquet/2026 ./edgex/ticker/parquet/2026 1220 Shell cwd was reset to /tmp/peerfeed-a21/work-t3-raw ## [tool call 2] Bash { "command": "cd /tmp/peerfeed-a21/archive; for v in */*/parquet; do echo \"== $v\"; find $v -type f | head -3; find $v -type f | wc -l; done; find . -type f | sed 's|/[^/]*$||' | sort | uniq -c | head -50" } ## [tool result] == apex/trades/parquet apex/trades/parquet/2026/09/25/12-14.parquet apex/trades/parquet/2026/09/25/18-20.parquet apex/trades/parquet/2026/09/25/22-24.parquet 108 == dydx/trades/parquet dydx/trades/parquet/2026/09/25/12-14.parquet dydx/trades/parquet/2026/09/25/18-20.parquet dydx/trades/parquet/2026/09/25/22-24.parquet 108 == edgex/ticker/parquet edgex/ticker/parquet/2026/09/25/12-14.parquet edgex/ticker/parquet/2026/09/25/18-20.parquet edgex/ticker/parquet/2026/09/25/22-24.parquet 108 == edgex/trades/parquet edgex/trades/parquet/2026/09/25/12-14.parquet edgex/trades/parquet/2026/09/25/18-20.parquet edgex/trades/parquet/2026/09/25/22-24.parquet 108 == extended/funding/parquet extended/funding/parquet/2026/09/25/12-14.parquet extended/funding/parquet/2026/09/25/18-20.parquet extended/funding/parquet/2026/09/25/22-24.parquet 108 == hyperliquid/activeAssetCtx/parquet hyperliquid/activeAssetCtx/parquet/2026/09/25/12-14.parquet hyperliquid/activeAssetCtx/parquet/2026/09/25/18-20.parquet hyperliquid/activeAssetCtx/parquet/2026/09/25/22-24.parquet 108 == hyperliquid/trades/parquet hyperliquid/trades/parquet/2026/09/25/12-14.parquet hyperliquid/trades/parquet/2026/09/25/18-20.parquet hyperliquid/trades/parquet/2026/09/25/22-24.parquet 108 == nado/funding_rate/parquet nado/funding_rate/parquet/2026/09/25/12-14.parquet nado/funding_rate/parquet/2026/09/25/18-20.parquet nado/funding_rate/parquet/2026/09/25/22-24.parquet 108 == nado/trades/parquet nado/trades/parquet/2026/09/25/12-14.parquet nado/trades/parquet/2026/09/25/18-20.parquet nado/trades/parquet/2026/09/25/22-24.parquet 108 == pacifica/prices/parquet pacifica/prices/parquet/2026/09/25/12-14.parquet pacifica/prices/parquet/2026/09/25/18-20.parquet pacifica/prices/parquet/2026/09/25/22-24.parquet 108 == pacifica/trades/parquet pacifica/trades/parquet/2026/09/25/12-14.parquet pacifica/trades/parquet/2026/09/25/18-20.parquet pacifica/trades/parquet/2026/09/25/22-24.parquet 108 == paradex/trades/parquet paradex/trades/parquet/2026/09/22/04-06.parquet paradex/trades/parquet/2026/09/22/00-02.parquet paradex/trades/parquet/2026/09/22/02-04.parquet 32 12 ./apex/trades/parquet/2026/09/20 12 ./apex/trades/parquet/2026/09/21 12 ./apex/trades/parquet/2026/09/22 12 ./apex/trades/parquet/2026/09/23 12 ./apex/trades/parquet/2026/09/24 12 ./apex/trades/parquet/2026/09/25 12 ./apex/trades/parquet/2026/09/26 12 ./apex/trades/parquet/2026/09/27 12 ./apex/trades/parquet/2026/09/28 12 ./dydx/trades/parquet/2026/09/20 12 ./dydx/trades/parquet/2026/09/21 12 ./dydx/trades/parquet/2026/09/22 12 ./dydx/trades/parquet/2026/09/23 12 ./dydx/trades/parquet/2026/09/24 12 ./dydx/trades/parquet/2026/09/25 12 ./dydx/trades/parquet/2026/09/26 12 ./dydx/trades/parquet/2026/09/27 12 ./dydx/trades/parquet/2026/09/28 12 ./edgex/ticker/parquet/2026/09/20 12 ./edgex/ticker/parquet/2026/09/21 12 ./edgex/ticker/parquet/2026/09/22 12 ./edgex/ticker/parquet/2026/09/23 12 ./edgex/ticker/parquet/2026/09/24 12 ./edgex/ticker/parquet/2026/09/25 12 ./edgex/ticker/parquet/2026/09/26 12 ./edgex/ticker/parquet/2026/09/27 12 ./edgex/ticker/parquet/2026/09/28 12 ./edgex/trades/parquet/2026/09/20 12 ./edgex/trades/parquet/2026/09/21 12 ./edgex/trades/parquet/2026/09/22 12 ./edgex/trades/parquet/2026/09/23 12 ./edgex/trades/parquet/2026/09/24 12 ./edgex/trades/parquet/2026/09/25 12 ./edgex/trades/parquet/2026/09/26 12 ./edgex/trades/parquet/2026/09/27 12 ./edgex/trades/parquet/2026/09/28 12 ./extended/funding/parquet/2026/09/20 12 ./extended/funding/parquet/2026/09/21 12 ./extended/funding/parquet/2026/09/22 12 ./extended/funding/parquet/2026/09/23 12 ./extended/funding/parquet/2026/09/24 12 ./extended/funding/parquet/2026/09/25 12 ./extended/funding/parquet/2026/09/26 12 ./extended/funding/parquet/2026/09/27 12 ./extended/funding/parquet/2026/09/28 12 ./hyperliquid/activeAssetCtx/parquet/2026/09/20 12 ./hyperliquid/activeAssetCtx/parquet/2026/09/21 12 ./hyperliquid/activeAssetCtx/parquet/2026/09/22 12 ./hyperliquid/activeAssetCtx/parquet/2026/09/23 12 ./hyperliquid/activeAssetCtx/parquet/2026/09/24 Shell cwd was reset to /tmp/peerfeed-a21/work-t3-raw ## [agent thinking] ## [tool call 3] Bash { "command": "cd /tmp/peerfeed-a21/archive; find paradex -type f | sort; P=/tmp/peerfeed-a21/venv/bin/python; $P -c \"\nimport duckdb,glob\nfor v in ['hyperliquid','edgex','apex','pacifica','dydx','paradex','nado']:\n f=sorted(glob.glob(f'{v}/trades/parquet/2026/09/2[2]/*.parquet'))[0]\n print('=====',v,f)\n print(duckdb.sql(f\\\"select * from '{f}' limit 3\\\").df().to_string())\n print(duckdb.sql(f\\\"describe select * from '{f}'\\\").df()[['column_name','column_type']].to_string())\n\"" } ## [tool result] paradex/trades/parquet/2026/09/20/00-02.parquet paradex/trades/parquet/2026/09/20/02-04.parquet paradex/trades/parquet/2026/09/20/04-06.parquet paradex/trades/parquet/2026/09/20/06-08.parquet paradex/trades/parquet/2026/09/20/08-10.parquet paradex/trades/parquet/2026/09/20/10-12.parquet paradex/trades/parquet/2026/09/20/12-14.parquet paradex/trades/parquet/2026/09/20/14-16.parquet paradex/trades/parquet/2026/09/20/16-18.parquet paradex/trades/parquet/2026/09/20/18-20.parquet paradex/trades/parquet/2026/09/20/20-22.parquet paradex/trades/parquet/2026/09/20/22-24.parquet paradex/trades/parquet/2026/09/21/00-02.parquet paradex/trades/parquet/2026/09/21/02-04.parquet paradex/trades/parquet/2026/09/21/04-06.parquet paradex/trades/parquet/2026/09/21/06-08.parquet paradex/trades/parquet/2026/09/21/08-10.parquet paradex/trades/parquet/2026/09/21/10-12.parquet paradex/trades/parquet/2026/09/21/12-14.parquet paradex/trades/parquet/2026/09/21/14-16.parquet paradex/trades/parquet/2026/09/21/16-18.parquet paradex/trades/parquet/2026/09/21/18-20.parquet paradex/trades/parquet/2026/09/21/20-22.parquet paradex/trades/parquet/2026/09/21/22-24.parquet paradex/trades/parquet/2026/09/22/00-02.parquet paradex/trades/parquet/2026/09/22/02-04.parquet paradex/trades/parquet/2026/09/22/04-06.parquet paradex/trades/parquet/2026/09/28/14-16.parquet paradex/trades/parquet/2026/09/28/16-18.parquet paradex/trades/parquet/2026/09/28/18-20.parquet paradex/trades/parquet/2026/09/28/20-22.parquet paradex/trades/parquet/2026/09/28/22-24.parquet ===== hyperliquid hyperliquid/trades/parquet/2026/09/22/00-02.parquet coin side px sz time hash tid users recorded_at 0 xyz:KSTR B 24.236 1.21 2026-09-21 09:31:39.801000+02:00 0xaa2904e247fb9de0aba20444dfa19502030600c7e2febcb24df1b03506ff77cb 386889698309137 [0x0eafbfa3979028e531ac2ea9bfa9f1766d6efa8c, 0x33ad48ed92e3e91a98278f0f7456eae6eafa516e] 2026-09-22 02:38:02.583000+02:00 1 xyz:KSTR B 24.236 4.69 2026-09-21 09:31:56.017000+02:00 0x55527f0cbec76bba56cc0444dfa27c02033800f259ca8a8cf91b2a5f7dcb45a4 1105437299941505 [0x0eafbfa3979028e531ac2ea9bfa9f1766d6efa8c, 0x33ad48ed92e3e91a98278f0f7456eae6eafa516e] 2026-09-22 02:38:02.583000+02:00 2 xyz:KSTR A 24.129 5.90 2026-09-21 09:32:38.600000+02:00 0xb7d54b1b02c09666b94f0444dfa4e20202fa00009dc3b5385b9df66dc1c47051 143118758048092 [0x1081e214bd6f0137234b92432d9b6033b88965b7, 0x0eafbfa3979028e531ac2ea9bfa9f1766d6efa8c] 2026-09-22 02:38:02.583000+02:00 column_name column_type 0 coin VARCHAR 1 side VARCHAR 2 px DOUBLE 3 sz DOUBLE 4 time TIMESTAMP WITH TIME ZONE 5 hash VARCHAR 6 tid BIGINT 7 users VARCHAR[] 8 recorded_at TIMESTAMP WITH TIME ZONE ===== edgex edgex/trades/parquet/2026/09/22/00-02.parquet ticketId time price size value takerOrderId makerOrderId takerAccountId makerAccountId contractId contractName isBestMatch isBuyerMaker recorded_at 0 6cbb990c-b29c-4f1c-8ee9-5715c2db0747 2026-09-22 01:59:00.059000+02:00 1.4334 75.30 107.93502 797065148081637332 797065148081636308 688841844680092724 689554585960994765 30000109 EULUSDC True True 2026-09-22 01:59:00.177000+02:00 1 ecfa02d5-6e2a-4b77-af32-aeff3bd896b8 2026-09-22 01:59:00.135000+02:00 3.5500 21.73 77.14150 797065148404597750 797065148400403446 690065391684768885 681588705657871858 30000104 XIAOMIUSDC True False 2026-09-22 01:59:00.254000+02:00 2 d4b87118-c8a1-4394-8001-c682dfc538d7 2026-09-22 01:59:00.235000+02:00 149.8100 0.42 62.92020 797065148819834874 797065148819833850 685169864082531754 679785461337472137 30000165 MRKUSDC True True 2026-09-22 01:59:00.354000+02:00 column_name column_type 0 ticketId VARCHAR 1 time TIMESTAMP WITH TIME ZONE 2 price DOUBLE 3 size DOUBLE 4 value DOUBLE 5 takerOrderId BIGINT 6 makerOrderId BIGINT 7 takerAccountId BIGINT 8 makerAccountId BIGINT 9 contractId BIGINT 10 contractName VARCHAR 11 isBestMatch BOOLEAN 12 isBuyerMaker BOOLEAN 13 recorded_at TIMESTAMP WITH TIME ZONE ===== apex apex/trades/parquet/2026/09/22/00-02.parquet T s S_1 v p L i recorded_at 0 2026-09-22 00:29:57.760000+02:00 CASHCATUSDT Sell 275.0 0.17263 MinusTick 0d404555-b95d-5cbf-ab29-c27592cd1073 2026-09-22 01:59:05.608000+02:00 1 2026-09-22 00:30:06.761000+02:00 CASHCATUSDT Buy 258.0 0.17412 PlusTick ef5fa1f3-aed7-5c3c-9b14-15f3f66ea187 2026-09-22 01:59:05.608000+02:00 2 2026-09-22 00:30:23.450000+02:00 WLFIUSDT Sell 13.0 0.05700 MinusTick 8ff826f6-43d0-5228-b8aa-6cc0536d1731 2026-09-22 01:59:05.593000+02:00 column_name column_type 0 T TIMESTAMP WITH TIME ZONE 1 s VARCHAR 2 S_1 VARCHAR 3 v DOUBLE 4 p DOUBLE 5 L VARCHAR 6 i VARCHAR 7 recorded_at TIMESTAMP WITH TIME ZONE ===== pacifica pacifica/trades/parquet/2026/09/22/00-02.parquet h s a p d tc t li it recorded_at 0 282548277 PLATINUM 0.0001 1816.5000 close_short normal 2026-09-22 01:59:00.031000+02:00 13005929822 0 2026-09-22 01:59:00.200000+02:00 1 282548281 PAXG 0.0010 4367.0000 close_long normal 2026-09-22 01:59:00.713000+02:00 13005930319 0 2026-09-22 01:59:00.829000+02:00 2 282548283 MEGA 1.0000 0.0456 close_long normal 2026-09-22 01:59:00.751000+02:00 13005930352 0 2026-09-22 01:59:00.868000+02:00 column_name column_type 0 h BIGINT 1 s VARCHAR 2 a DOUBLE 3 p DOUBLE 4 d VARCHAR 5 tc VARCHAR 6 t TIMESTAMP WITH TIME ZONE 7 li BIGINT 8 it BIGINT 9 recorded_at TIMESTAMP WITH TIME ZONE ===== dydx dydx/trades/parquet/2026/09/22/00-02.parquet id size price side createdAt type market 0 06576e350000000200000002 0.0003 86658.0 BUY 2026-09-22 01:59:06.956000+02:00 LIMIT BTC-USD 1 06576e390000000200000002 0.0003 86635.0 BUY 2026-09-22 01:59:09.481000+02:00 LIMIT BTC-USD 2 06576e430000000200000002 0.0004 86651.0 BUY 2026-09-22 01:59:16.042000+02:00 LIMIT BTC-USD column_name column_type 0 id VARCHAR 1 size DOUBLE 2 price DOUBLE 3 side VARCHAR 4 createdAt TIMESTAMP WITH TIME ZONE 5 type VARCHAR 6 market VARCHAR ===== paradex paradex/trades/parquet/2026/09/22/00-02.parquet id market side size price created_at trade_type recorded_at 0 1790035144450201709220640001 BTC-USD-PERP BUY 0.00019 86631.2 2026-09-22 01:59:04.459000+02:00 RPI 2026-09-22 01:59:04.602000+02:00 1 1790035144450201709220640002 BTC-USD-PERP BUY 0.00691 86643.7 2026-09-22 01:59:04.459000+02:00 RPI 2026-09-22 01:59:04.612000+02:00 2 1790035200500201709220640001 BTC-USD-PERP SELL 0.00012 86498.3 2026-09-22 02:00:00.513000+02:00 FILL 2026-09-22 02:00:00.665000+02:00 column_name column_type 0 id VARCHAR 1 market VARCHAR 2 side VARCHAR 3 size DOUBLE 4 price DOUBLE 5 created_at TIMESTAMP WITH TIME ZONE 6 trade_type VARCHAR 7 recorded_at TIMESTAMP WITH TIME ZONE ===== nado nado/trades/parquet/2026/09/22/00-02.parquet type timestamp product_id price taker_qty maker_qty is_taker_buyer recorded_at 0 trade 2026-09-22 01:59:00.514977+02:00 186 165700000000000000 3200000000000000000000 3200000000000000000000 True 2026-09-22 01:59:00.653000+02:00 1 trade 2026-09-22 01:59:00.572773+02:00 186 165700000000000000 2150000000000000000000 2150000000000000000000 True 2026-09-22 01:59:00.706000+02:00 2 trade 2026-09-22 01:59:00.857279+02:00 32 318080000000000000000 1380000000000000000 1380000000000000000 True 2026-09-22 01:59:00.974000+02:00 column_name column_type 0 type VARCHAR 1 timestamp TIMESTAMP WITH TIME ZONE 2 product_id BIGINT 3 price VARCHAR 4 taker_qty VARCHAR 5 maker_qty VARCHAR 6 is_taker_buyer BOOLEAN 7 recorded_at TIMESTAMP WITH TIME ZONE Shell cwd was reset to /tmp/peerfeed-a21/work-t3-raw ## [agent thinking] ## [tool call 4] Bash { "command": "cd /tmp/peerfeed-a21/archive; P=/tmp/peerfeed-a21/venv/bin/python; $P -c \"\nimport duckdb\nc=duckdb.connect(); c.sql(\\\"set TimeZone='UTC'\\\")\nq={'hyperliquid':\\\"select coin k,count(*),avg(px) from 'hyperliquid/trades/parquet/*/*/*/*.parquet' where coin ilike '%BTC%' group by 1\\\",\n'edgex':\\\"select contractName||'/'||contractId k,count(*),avg(price) from 'edgex/trades/parquet/*/*/*/*.parquet' where contractName ilike '%BTC%' group by 1\\\",\n'apex':\\\"select s k,count(*),avg(p) from 'apex/trades/parquet/*/*/*/*.parquet' where s ilike '%BTC%' group by 1\\\",\n'pacifica':\\\"select s k,count(*),avg(p) from 'pacifica/trades/parquet/*/*/*/*.parquet' where s ilike '%BTC%' group by 1\\\",\n'dydx':\\\"select market k,count(*),avg(price) from 'dydx/trades/parquet/*/*/*/*.parquet' group by 1\\\",\n'paradex':\\\"select market||'/'||trade_type k,count(*),avg(price) from 'paradex/trades/parquet/*/*/*/*.parquet' group by 1\\\",\n'nado':\\\"select product_id k,count(*),avg(price::hugeint/1e18) from 'nado/trades/parquet/*/*/*/*.parquet' group by 1 having avg(price::hugeint/1e18) > 10000\\\",\n}\nfor v,s in q.items(): print('==',v); print(c.sql(s).df().to_string())\n\"" } ## [tool result] == hyperliquid k count_star() avg(px) 0 BTC 2964554 84302.458922 == edgex k count_star() avg(price) 0 BTCUSDC/30000001 1055479 84175.770204 == apex k count_star() avg(p) 0 BTCUSDT 221697 84021.915191 == pacifica k count_star() avg(p) 0 BTC 108120 84185.658694 == dydx k count_star() avg(price) 0 AVAX-USD 10049 10.665986 1 SOL-USD 67672 116.188885 2 BCH-USD 7762 331.347140 3 LTC-USD 6431 62.466058 4 LDO-USD 12956 0.426165 5 BLUR-USD 241 0.019721 6 BTC-USD 72284 84092.793288 7 ATOM-USD 16929 1.764800 8 ARB-USD 10661 0.217555 9 XLM-USD 10027 0.209286 10 UNI-USD 4682 9.442749 11 SUI-USD 6818 0.929830 12 PEPE-USD 1246 0.000005 13 ETC-USD 6630 9.175570 14 APT-USD 9245 0.778454 15 SHIB-USD 8690 0.000006 16 LINK-USD 6471 12.885741 17 TRX-USD 4667 0.343739 18 NEAR-USD 10309 4.420747 19 WLD-USD 12458 0.450710 20 OP-USD 1242 0.132768 21 ETH-USD 90187 2692.076787 22 ADA-USD 10189 0.238529 23 CRV-USD 10024 0.349426 24 SEI-USD 2819 0.063946 25 DOT-USD 10455 1.156618 26 COMP-USD 187 22.936631 27 DOGE-USD 9931 0.094517 28 APE-USD 123 0.152212 29 FIL-USD 8902 1.006261 == paradex k count_star() avg(price) 0 ENA-USD-PERP/RPI 1 0.219200 1 LINK-USD-PERP/BLOCK_TRADE 5 13.069400 2 HYPE-USD-PERP/BLOCK_TRADE 3 90.075667 3 LTC-USD-PERP/FILL 26 61.268077 4 STRK-USD-PERP/RPI 7 0.047500 5 GOOGL-USD-PERP/BLOCK_TRADE 2 350.750000 6 LDO-USD-PERP/FILL 16 0.422069 7 ZEC-USD-PERP/FILL 101 1517.378050 8 ZEC-USD-PERP/RPI 112 1487.875000 9 TAO-USD-PERP/FILL 6 291.403333 10 XAU-USD-PERP/RPI 7 4329.328571 11 XRP-USD-PERP/LIQUIDATION 1 1.478598 12 ETH-USD-PERP/BLOCK_TRADE 5 2731.944000 13 MON-USD-PERP/RPI 2 0.026724 14 XRP-USD-PERP/FILL 8 1.480350 15 SOL-USD-PERP/FILL 393 113.453440 16 XCU-USD-PERP/FILL 14 6.675021 17 TRX-USD-PERP/RPI 12 0.344083 18 ZEC-USD-PERP/BLOCK_TRADE 2 1504.933500 19 HYPE-USD-PERP/UNWIND_TRANSFER 1 93.404969 20 UNI-USD-PERP/RPI 1 8.837000 21 BTC-USD-PERP/BLOCK_TRADE 6 84014.366667 22 BZ-USD-PERP/RPI 36 99.230833 23 PAXG-USD-PERP/FILL 868 4349.396866 24 SOL-USD-PERP/BLOCK_TRADE 2 116.018000 25 BNB-USD-PERP/UNWIND_TRANSFER 1 764.867965 26 LINK-USD-PERP/FILL 112 13.313768 27 ONDO-USD-PERP/FILL 6 0.394100 28 XRP-USD-PERP/BLOCK_TRADE 3 1.453900 29 ETH-USD-PERP/UNWIND_TRANSFER 1 2621.456201 30 PYTH-USD-PERP/FILL 12 0.061902 31 TRX-USD-PERP/FILL 16 0.343224 32 UNI-USD-PERP/FILL 31 8.883000 33 SUI-USD-PERP/UNWIND_TRANSFER 1 1.030487 34 XPT-USD-PERP/RPI 1 1719.900000 35 LTC-USD-PERP/RPI 51 60.455686 36 SUI-USD-PERP/RPI 18 1.120406 37 BTC-USD-PERP/UNWIND_TRANSFER 4 84512.362865 38 AVAX-USD-PERP/FILL 21 12.076619 39 kSHIB-USD-PERP/FILL 1 0.006666 40 PUMP-USD-PERP/FILL 25 0.004866 41 PUMP-USD-PERP/RPI 3 0.004221 42 ETHFI-USD-PERP/FILL 2 0.660550 43 ZEC-USD-PERP/UNWIND_TRANSFER 1 1467.605664 44 XPL-USD-PERP/RPI 18 0.096720 45 TRUMP-USD-PERP/FILL 12 2.352000 46 PAXG-USD-PERP/LIQUIDATION 9 4346.370615 47 BNB-USD-PERP/BLOCK_TRADE 1 784.530000 48 XRP-USD-PERP/UNWIND_TRANSFER 1 1.397076 49 WLFI-USD-PERP/FILL 3 0.053400 50 LINK-USD-PERP/LIQUIDATION 3 15.211098 51 PYTH-USD-PERP/BLOCK_TRADE 1 0.079220 52 XMR-USD-PERP/UNWIND_TRANSFER 1 597.656908 53 HYPE-USD-PERP/RPI 111 91.006964 54 LIT-USD-PERP/RPI 10 4.857477 55 VVV-USD-PERP/FILL 11 30.459464 56 TRX-USD-PERP/LIQUIDATION 11 0.343829 57 NEAR-USD-PERP/LIQUIDATION 1 3.917746 58 NEAR-USD-PERP/UNWIND_TRANSFER 2 4.081798 59 AAVE-USD-PERP/FILL 4 139.400000 60 ETH-USD-PERP/RPI 1580 2688.714082 61 XMR-USD-PERP/RPI 16 574.480000 62 PAXG-USD-PERP/RPI 39 4332.614103 63 HYPE-USD-PERP/LIQUIDATION 9 91.772610 64 KAITO-USD-PERP/RPI 1 0.335800 65 ZEC-USD-PERP/LIQUIDATION 6 1523.585329 66 SUI-USD-PERP/LIQUIDATION 10 1.016664 67 DOGE-USD-PERP/BLOCK_TRADE 1 0.099020 68 PYTH-USD-PERP/RPI 1 0.078740 69 ADA-USD-PERP/UNWIND_TRANSFER 1 0.247029 70 kSHIB-USD-PERP/UNWIND_TRANSFER 1 0.006127 71 UNI-USD-PERP/UNWIND_TRANSFER 1 8.834965 72 SOL-USD-PERP/LIQUIDATION 9 111.531699 73 CL-USD-PERP/RPI 8 93.917500 74 DOGE-USD-PERP/UNWIND_TRANSFER 3 0.097867 75 LTC-USD-PERP/UNWIND_TRANSFER 1 62.053366 76 AVAX-USD-PERP/RPI 10 11.131500 77 JUP-USD-PERP/FILL 5 0.308454 78 GRAM-USD-PERP/FILL 12 1.258117 79 TRUMP-USD-PERP/RPI 1 2.095000 80 PENDLE-USD-PERP/FILL 86 2.601852 81 NEAR-USD-PERP/FILL 45 3.971651 82 CRCL-USD-PERP/BLOCK_TRADE 1 96.321000 83 DOGE-USD-PERP/RPI 1 0.098300 84 CL-USD-PERP/FILL 1 92.200000 85 BNB-USD-PERP/FILL 190 761.363053 86 ONDO-USD-PERP/RPI 1 0.513300 87 TRX-USD-PERP/UNWIND_TRANSFER 1 0.344180 88 XCU-USD-PERP/RPI 31 6.730581 89 XAG-USD-PERP/RPI 5 64.333800 90 JUP-USD-PERP/BLOCK_TRADE 2 0.305210 91 kPEPE-USD-PERP/RPI 2 0.004008 92 ENA-USD-PERP/FILL 4 0.221850 93 BNB-USD-PERP/LIQUIDATION 2 778.174986 94 SPCX-USD-PERP/RPI 1 146.930000 95 TAO-USD-PERP/RPI 15 297.366667 96 ETH-USD-PERP/FILL 4627 2664.465440 97 XRP-USD-PERP/RPI 26 1.459319 98 BNB-USD-PERP/RPI 26 775.897692 99 SUI-USD-PERP/FILL 70 1.000856 100 MORPHO-USD-PERP/FILL 1 2.311000 101 AVAX-USD-PERP/UNWIND_TRANSFER 1 11.257770 102 BTC-USD-PERP/RPI 10116 84446.718515 103 HYPE-USD-PERP/FILL 257 92.277623 104 DOGE-USD-PERP/FILL 169 0.099800 105 ADA-USD-PERP/RPI 1 0.233000 106 BTC-USD-PERP/LIQUIDATION 131 84642.993653 107 AAVE-USD-PERP/BLOCK_TRADE 2 146.505000 108 LINK-USD-PERP/RPI 17 14.694647 109 JUP-USD-PERP/RPI 11 0.300068 110 ETHFI-USD-PERP/RPI 2 0.694900 111 GRAM-USD-PERP/UNWIND_TRANSFER 1 1.452897 112 BTC-USD-PERP/FILL 8492 84046.971561 113 SOL-USD-PERP/RPI 268 115.049478 114 CRCL-USD-PERP/RPI 4 93.358250 115 DOGE-USD-PERP/LIQUIDATION 18 0.090153 116 ETH-USD-PERP/LIQUIDATION 43 2788.744297 117 SUI-USD-PERP/BLOCK_TRADE 4 1.016350 118 PENDLE-USD-PERP/BLOCK_TRADE 2 2.735250 119 STRK-USD-PERP/FILL 2 0.051000 120 kPEPE-USD-PERP/FILL 1 0.003585 121 LIT-USD-PERP/FILL 12 4.666893 122 VVV-USD-PERP/RPI 4 27.240700 123 LINK-USD-PERP/UNWIND_TRANSFER 1 13.199412 == nado k count_star() avg((CAST(price AS "HUGEINT") / 1e+18)) 0 2 350498 84053.080217 1 1 747 84438.933066 Shell cwd was reset to /tmp/peerfeed-a21/work-t3-raw ## [agent thinking] ## [tool call 5] Bash { "command": "mkdir -p /tmp/peerfeed-a21/work-t3-raw && cd /tmp/peerfeed-a21/work-t3-raw; cat > load.py <<'EOF'\nimport duckdb\nA='/tmp/peerfeed-a21/archive'\nc=duckdb.connect('btc.duckdb'); c.sql(\"set TimeZone='UTC'\")\ndef g(v,t='trades'): return f\"read_parquet('{A}/{v}/{t}/parquet/*/*/*/*.parquet', filename=true)\"\nc.sql(f\"\"\"create or replace table raw as\nselect 'hyperliquid' venue, time ts, px price, sz qty, px*sz notional, tid::varchar id, side, null::varchar kind, recorded_at rec, filename from {g('hyperliquid')} where coin='BTC'\nunion all select 'edgex', time, price, size, value, ticketId, case when isBuyerMaker then 'S' else 'B' end, null, recorded_at, filename from {g('edgex')} where contractId=30000001\nunion all select 'apex', T, p, v, p*v, i, S_1, null, recorded_at, filename from {g('apex')} where s='BTCUSDT'\nunion all select 'pacifica', t, p, a, p*a, h::varchar, d, tc, recorded_at, filename from {g('pacifica')} where s='BTC'\nunion all select 'dydx', createdAt, price, size, price*size, id, side, type, null, filename from {g('dydx')} where market='BTC-USD'\nunion all select 'paradex', created_at, price, size, price*size, id, side, trade_type, recorded_at, filename from {g('paradex')} where market='BTC-USD-PERP'\nunion all select 'nado', timestamp, price::hugeint/1e18, taker_qty::hugeint/1e18, price::hugeint/1e18*taker_qty::hugeint/1e18, null, is_taker_buyer::varchar, type, recorded_at, filename from {g('nado')} where product_id=2\n\"\"\")\nprint(c.sql(\"select venue,count(*),count(distinct id),min(ts),max(ts),min(price),max(price),min(qty),max(qty),sum(qty<=0), sum(price is null) from raw group by 1\").df().to_string())\nEOF\n/tmp/peerfeed-a21/venv/bin/python load.py" } ## [tool result] venue count_star() count(DISTINCT id) min(ts) max(ts) min(price) max(price) min(qty) max(qty) sum((qty <= 0)) sum((price IS NULL)) 0 nado 350498 0 2026-09-19 23:59:01.326449+00:00 2026-09-28 23:58:00.336084+00:00 80109.0 87377.0 0.00005 2.38785 0.0 0.0 1 hyperliquid 2964554 2964526 2026-09-19 23:59:00+00:00 2026-09-28 23:58:58.550000+00:00 80148.0 87471.0 0.00001 180.40989 0.0 0.0 2 edgex 1055479 1055414 2026-09-19 23:59:00.190000+00:00 2026-09-28 23:58:57.164000+00:00 80080.4 87361.1 0.00100 10.05900 0.0 0.0 3 dydx 72284 25132 2026-09-19 14:15:49.337000+00:00 2026-09-28 23:58:13.236000+00:00 80066.0 87422.0 0.00010 8.71850 0.0 0.0 4 pacifica 108120 108120 2026-09-19 23:59:05.040000+00:00 2026-09-28 23:58:15.276000+00:00 80165.0 87375.0 0.00001 5.62951 0.0 0.0 5 paradex 18749 18749 2026-09-19 23:59:53.057000+00:00 2026-09-28 23:46:54.636000+00:00 80158.6 88476.6 0.00001 6.23631 0.0 0.0 6 apex 221697 216503 2026-09-19 23:53:57.544000+00:00 2026-09-28 23:58:58.233000+00:00 80101.0 87367.7 0.00100 8.30600 0.0 0.0 ## [agent thinking] ## [agent] Loaded all seven BTC perp feeds. I'm now checking duplicates (dYdX has ~3x repeated IDs), data gaps (Paradex is missing roughly six days) and price outliers. ## [tool call 6] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb; c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nprint(c.sql('''select venue, count(*) dupids, sum(nd_ts>1) difts, sum(nd_px>1) difpx, sum(nd_q>1) difq, sum(nfile>1) multifile from (select venue,id,count(distinct ts) nd_ts,count(distinct price) nd_px,count(distinct qty) nd_q,count(distinct filename) nfile from raw where id is not null group by 1,2 having count(*)>1) group by 1''').df())\nprint(c.sql('''select id,ts,price,qty,side,kind,filename from raw where venue='dydx' and id in (select id from raw where venue='dydx' group by 1 having count(*)>1 limit 2) order by id''').df().to_string())\nprint(c.sql('''select id,ts,price,qty,side,rec,filename from raw where venue='hyperliquid' and id in (select id from raw where venue='hyperliquid' group by 1 having count(*)>1 limit 3) order by id''').df().to_string())\nprint(c.sql('''select count(*), count(distinct (ts,price,qty,side)) from raw where venue='nado' ''').df())\n\"" } ## [tool result] venue dupids difts difpx difq multifile 0 apex 5194 0.0 0.0 0.0 5194.0 1 dydx 19758 0.0 0.0 0.0 19745.0 2 edgex 65 0.0 0.0 0.0 65.0 3 hyperliquid 28 0.0 0.0 0.0 28.0 id ts price qty side kind filename 0 0653b62e0000000200000008 2026-09-20 01:33:26.773000+00:00 80992.0 0.0014 SELL LIMIT /tmp/peerfeed-a21/archive/dydx/trades/parquet/2026/09/20/00-02.parquet 1 0653b62e0000000200000008 2026-09-20 01:33:26.773000+00:00 80992.0 0.0014 SELL LIMIT /tmp/peerfeed-a21/archive/dydx/trades/parquet/2026/09/20/04-06.parquet 2 0653b6370000000200000002 2026-09-20 01:33:32.991000+00:00 81053.0 0.0350 SELL LIMIT /tmp/peerfeed-a21/archive/dydx/trades/parquet/2026/09/20/00-02.parquet 3 0653b6370000000200000002 2026-09-20 01:33:32.991000+00:00 81053.0 0.0350 SELL LIMIT /tmp/peerfeed-a21/archive/dydx/trades/parquet/2026/09/20/04-06.parquet id ts price qty side rec filename 0 1038839810927392 2026-09-21 17:58:59.527000+00:00 85924.0 0.00100 B 2026-09-21 17:58:59.975000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/16-18.parquet 1 1038839810927392 2026-09-21 17:58:59.527000+00:00 85924.0 0.00100 B 2026-09-21 17:59:00.048000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/18-20.parquet 2 887070999413260 2026-09-21 03:58:56.770000+00:00 81473.0 0.00014 A 2026-09-21 03:58:57.050000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/02-04.parquet 3 887070999413260 2026-09-21 03:58:56.770000+00:00 81473.0 0.00014 A 2026-09-21 03:59:25.391000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/04-06.parquet 4 985811731245551 2026-09-21 03:58:56.770000+00:00 81472.0 0.00245 A 2026-09-21 03:58:57.050000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/02-04.parquet 5 985811731245551 2026-09-21 03:58:56.770000+00:00 81472.0 0.00245 A 2026-09-21 03:59:25.391000+00:00 /tmp/peerfeed-a21/archive/hyperliquid/trades/parquet/2026/09/21/04-06.parquet count_star() count(DISTINCT main."row"(ts, price, qty, side)) 0 350498 350476 ## [agent thinking] ## [tool call 7] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb; c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nprint(c.sql('''select ts,price,qty,side,rec,regexp_extract(filename,'parquet/(.*)',1) f from raw r where venue='nado' and (ts,price,qty,side) in (select (ts,price,qty,side) from raw where venue='nado' group by all having count(*)>1) order by ts limit 12''').df().to_string())\nprint(c.sql('''select count(*) from (select ts,price,qty,side from raw where venue='nado' group by all having count(*)>1 and count(distinct filename)>1)''').df())\n\"" } ## [tool result] ts price qty side rec f 0 2026-09-21 01:58:59.197100+00:00 81032.0 0.00385 true 2026-09-21 01:58:59.834000+00:00 2026/09/21/00-02.parquet 1 2026-09-21 01:58:59.197100+00:00 81032.0 0.00280 true 2026-09-21 01:58:59.834000+00:00 2026/09/21/00-02.parquet 2 2026-09-21 01:58:59.197100+00:00 81032.0 0.02800 true 2026-09-21 01:58:59.834000+00:00 2026/09/21/00-02.parquet 3 2026-09-21 01:58:59.197100+00:00 81032.0 0.00385 true 2026-09-21 01:59:01.998000+00:00 2026/09/21/02-04.parquet 4 2026-09-21 01:58:59.197100+00:00 81032.0 0.03260 true 2026-09-21 01:58:59.834000+00:00 2026/09/21/00-02.parquet 5 2026-09-21 01:58:59.197100+00:00 81032.0 0.03260 true 2026-09-21 01:59:01.998000+00:00 2026/09/21/02-04.parquet 6 2026-09-21 01:58:59.197100+00:00 81032.0 0.00280 true 2026-09-21 01:59:01.998000+00:00 2026/09/21/02-04.parquet 7 2026-09-21 01:58:59.197100+00:00 81032.0 0.05370 true 2026-09-21 01:59:01.998000+00:00 2026/09/21/02-04.parquet 8 2026-09-21 01:58:59.197100+00:00 81032.0 0.05370 true 2026-09-21 01:58:59.834000+00:00 2026/09/21/00-02.parquet 9 2026-09-21 01:58:59.197100+00:00 81032.0 0.02800 true 2026-09-21 01:59:01.998000+00:00 2026/09/21/02-04.parquet 10 2026-09-21 13:58:58.183717+00:00 85449.0 0.00195 true 2026-09-21 13:58:58.964000+00:00 2026/09/21/12-14.parquet 11 2026-09-21 13:58:58.183717+00:00 85449.0 0.00195 true 2026-09-21 13:59:00.091000+00:00 2026/09/21/14-16.parquet count_star() 0 22 ## [agent thinking] ## [tool call 8] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb; c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nprint(c.sql(\\\"select count(*), sum(taker_qty<>maker_qty) from read_parquet('/tmp/peerfeed-a21/archive/nado/trades/parquet/*/*/*/*.parquet') where product_id=2\\\").df())\nc.sql('''create or replace table t as\nselect * exclude(rn) from (select *, row_number() over (partition by venue, coalesce(id, ts::varchar||price||qty||side) order by rec) rn from raw)\nwhere rn=1 and ts>='2026-09-21 00:00:00+00' and ts<'2026-09-28 00:00:00+00' ''')\nprint(c.sql('select venue,count(*),sum(notional) from t group by 1 order by 3 desc').df())\nh=c.sql('''select venue, date_trunc('hour',ts) h, count(*) n from t group by 1,2''').df()\np=h.pivot(index='h',columns='venue',values='n')\nprint('hours with no trades per venue:'); print(p.isna().sum()); print(len(p))\nimport pandas as pd; pd.set_option('display.width',250)\nprint(p.fillna(0).astype(int).resample('6h').sum().to_string())\n\"" } ## [tool result] count_star() sum((taker_qty != maker_qty)) 0 350498 0.0 venue count_star() sum(notional) 0 hyperliquid 2406078 2.087198e+10 1 edgex 826371 2.992776e+09 2 apex 165722 2.105623e+09 3 pacifica 85851 1.384059e+09 4 nado 261857 8.473746e+08 5 dydx 18509 5.854896e+07 6 paradex 14404 1.085685e+07 hours with no trades per venue: venue apex 0 dydx 0 edgex 0 hyperliquid 0 nado 0 pacifica 0 paradex 139 dtype: int64 168 venue apex dydx edgex hyperliquid nado pacifica paradex h 2026-09-21 00:00:00+00:00 9360 839 35622 90024 14564 3118 1404 2026-09-21 06:00:00+00:00 12968 1833 51389 197765 15646 6026 4003 2026-09-21 12:00:00+00:00 8926 1960 55286 213275 15006 4100 4224 2026-09-21 18:00:00+00:00 5430 1278 39040 110773 10489 3409 3648 2026-09-22 00:00:00+00:00 4899 682 42597 96500 12202 2671 1125 2026-09-22 06:00:00+00:00 6397 733 38860 101857 11143 4088 0 2026-09-22 12:00:00+00:00 7329 1112 42988 112318 12842 4452 0 2026-09-22 18:00:00+00:00 4281 376 27301 55652 11571 2620 0 2026-09-23 00:00:00+00:00 5632 621 35935 86335 11028 2954 0 2026-09-23 06:00:00+00:00 4373 484 35870 82081 9481 2877 0 2026-09-23 12:00:00+00:00 8494 1396 50475 209323 13892 4978 0 2026-09-23 18:00:00+00:00 7000 363 25351 58492 7566 2745 0 2026-09-24 00:00:00+00:00 4271 329 31455 73722 9500 3138 0 2026-09-24 06:00:00+00:00 5883 767 41122 103432 10884 4610 0 2026-09-24 12:00:00+00:00 6397 779 42843 144818 12626 5771 0 2026-09-24 18:00:00+00:00 8150 256 18088 61177 7527 2836 0 2026-09-25 00:00:00+00:00 5696 397 21179 53688 7456 3289 0 2026-09-25 06:00:00+00:00 4956 513 31501 77051 9173 3719 0 2026-09-25 12:00:00+00:00 7142 746 38476 130055 13347 3089 0 2026-09-25 18:00:00+00:00 4232 214 12916 45006 6360 1729 0 2026-09-26 00:00:00+00:00 3752 87 10128 27611 3972 1196 0 2026-09-26 06:00:00+00:00 3863 212 11385 33863 3991 1398 0 2026-09-26 12:00:00+00:00 3811 399 11569 28703 4500 1318 0 2026-09-26 18:00:00+00:00 3990 349 11258 36757 3772 1403 0 2026-09-27 00:00:00+00:00 4011 178 10374 28841 3625 1655 0 2026-09-27 06:00:00+00:00 4595 510 17884 45700 5824 2664 0 2026-09-27 12:00:00+00:00 5025 691 20401 53933 7442 2259 0 2026-09-27 18:00:00+00:00 4859 405 15078 47326 6428 1739 0 ## [agent thinking] ## [tool call 9] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb; c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nprint(c.sql(\\\"select kind,count(*),sum(notional),min(ts),max(ts) from t where venue='paradex' group by 1\\\").df())\nprint(c.sql(\\\"select kind,count(*),sum(notional) from t where venue in ('dydx','pacifica') group by all\\\").df())\n# per-minute close\nc.sql('''create or replace table m as select venue, time_bucket(interval 1 minute, ts) mi, arg_max(price, (ts, rec)) close, count(*) n from t where kind is null or kind not in ('UNWIND_TRANSFER','BLOCK_TRADE') group by 1,2''')\nprint(c.sql('''select venue,count(*) minutes_with_trades from m group by 1''').df())\nc.sql('''create or replace table dev as select m.venue, m.mi, m.close, h.close hl, ln(m.close/h.close)*1e4 bps from m join m h on h.mi=m.mi and h.venue='hyperliquid' ''')\nprint(c.sql('''select venue, median(abs(bps)), quantile_cont(abs(bps),0.99) p99, max(abs(bps)) mx, sum(abs(bps)>50) n50 from dev group by 1''').df())\nprint(c.sql('''select * from dev where abs(bps)>50 order by abs(bps) desc limit 30''').df().to_string())\n\"" } ## [tool result (error)] Exit code 1 Traceback (most recent call last): File "", line 6, in _duckdb.ParserException: Parser Error: syntax error at or near "close" LINE 1: ...ucket(interval 1 minute, ts) mi, arg_max(price, (ts, rec)) close, count(*) n from t where kind is null or kind not... ^ kind ... max(ts) 0 UNWIND_TRANSFER ... 2026-09-21 18:13:30.672000+00:00 1 BLOCK_TRADE ... 2026-09-21 16:06:48.857000+00:00 2 RPI ... 2026-09-22 04:25:17.212000+00:00 3 FILL ... 2026-09-22 04:26:53.112000+00:00 4 LIQUIDATION ... 2026-09-21 20:26:36.721000+00:00 [5 rows x 5 columns] kind count_star() sum(notional) 0 game_settlement 52 2.166530e+05 1 LIMIT 18119 5.790068e+07 2 normal 85603 1.383568e+09 3 backstop_liquidation 18 4.093407e+04 4 LIQUIDATED 390 6.482784e+05 5 market_liquidation 178 2.330783e+05 ## [agent thinking] ## [tool call 10] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb,pandas as pd; pd.set_option('display.width',250); c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nprint(c.sql(\\\"select kind,count(*),sum(notional),min(ts),max(ts) from t where venue='paradex' group by 1\\\").df().to_string())\nprint(c.sql(\\\"select ts,price,qty,side,id from t where venue='pacifica' and kind='game_settlement' limit 8\\\").df())\nc.sql('''create or replace table m as select venue, time_bucket(interval 1 minute, ts) mi, arg_max(price, ts) cl, count(*) n from t where kind is null or kind not in ('UNWIND_TRANSFER','BLOCK_TRADE','game_settlement') group by 1,2''')\nprint(c.sql('''select venue,count(*) minutes_with_trades from m group by 1''').df())\nc.sql('''create or replace table dev as select m.venue, m.mi, m.cl, h.cl hl, ln(m.cl/h.cl)*1e4 bps from m join m h on h.mi=m.mi and h.venue='hyperliquid' ''')\nprint(c.sql('''select venue, median(abs(bps)), quantile_cont(abs(bps),0.99) p99, max(abs(bps)) mx, sum(abs(bps)>50) n50 from dev group by 1''').df())\nprint(c.sql('''select * from dev where abs(bps)>40 order by abs(bps) desc limit 30''').df().to_string())\n\"" } ## [tool result] kind count_star() sum(notional) min(ts) max(ts) 0 BLOCK_TRADE 5 2.942266e+03 2026-09-21 09:14:08.033000+00:00 2026-09-21 16:06:48.857000+00:00 1 UNWIND_TRANSFER 3 3.137938e+03 2026-09-21 13:19:14.960000+00:00 2026-09-21 18:13:30.672000+00:00 2 RPI 8186 7.234985e+06 2026-09-21 00:00:12.037000+00:00 2026-09-22 04:25:17.212000+00:00 3 LIQUIDATION 122 4.267544e+05 2026-09-21 00:12:58.844000+00:00 2026-09-21 20:26:36.721000+00:00 4 FILL 6088 3.189033e+06 2026-09-21 00:00:08.579000+00:00 2026-09-22 04:26:53.112000+00:00 ts price qty side id 0 2026-09-26 11:07:17.814000+00:00 84453.0 0.00118 open_long 285972485 1 2026-09-24 06:38:17.811000+00:00 85195.0 0.00586 open_long 284318116 2 2026-09-24 11:28:17.886000+00:00 84668.0 0.00118 open_long 284475639 3 2026-09-24 11:47:17.801000+00:00 84582.0 0.00923 open_long 284485326 4 2026-09-23 18:33:17.812000+00:00 85867.0 0.00468 open_long 283946858 5 2026-09-23 17:17:17.813000+00:00 85554.0 0.00058 open_long 283906665 6 2026-09-23 16:50:17.811000+00:00 84825.0 0.04805 open_long 283891662 7 2026-09-23 17:04:17.814000+00:00 84977.0 0.14121 open_long 283899443 venue minutes_with_trades 0 paradex 1415 1 edgex 10080 2 dydx 4205 3 apex 10080 4 hyperliquid 10077 5 nado 9765 6 pacifica 9897 venue median(abs(bps)) p99 mx n50 0 paradex 5.168788 40.533275 206.686812 14.0 1 hyperliquid 0.000000 0.000000 0.000000 0.0 2 nado 3.215894 13.450622 50.845563 1.0 3 apex 3.162921 14.753627 23.911970 0.0 4 pacifica 2.733409 13.679764 29.048416 0.0 5 edgex 4.354602 15.536110 25.772755 0.0 6 dydx 4.641062 18.298355 36.174075 0.0 venue mi cl hl bps 0 paradex 2026-09-21 13:32:00+00:00 83375.8 85117.0 -206.686812 1 paradex 2026-09-22 01:02:00+00:00 87164.1 85830.0 154.239532 2 paradex 2026-09-22 00:37:00+00:00 87711.6 86373.0 153.790328 3 paradex 2026-09-22 00:36:00+00:00 87711.6 86431.0 147.077520 4 paradex 2026-09-22 00:38:00+00:00 87556.8 86356.0 138.094388 5 paradex 2026-09-22 00:05:00+00:00 87711.6 86532.0 135.398720 6 paradex 2026-09-22 01:29:00+00:00 84750.0 85813.0 -124.647639 7 paradex 2026-09-22 01:30:00+00:00 84750.0 85762.0 -118.702717 8 paradex 2026-09-21 14:38:00+00:00 86890.0 85962.0 107.376127 9 paradex 2026-09-22 02:54:00+00:00 84901.0 85740.0 -98.335894 10 paradex 2026-09-22 02:25:00+00:00 84901.0 85733.0 -97.519439 11 paradex 2026-09-22 02:40:00+00:00 85090.0 85836.0 -87.289791 12 paradex 2026-09-22 00:35:00+00:00 87105.2 86462.0 74.115725 13 paradex 2026-09-21 15:54:00+00:00 86517.4 86023.0 57.308474 14 nado 2026-09-21 09:32:00+00:00 84355.0 84785.0 -50.845563 15 paradex 2026-09-21 13:57:00+00:00 85311.7 85660.0 -40.743641 ## [agent thinking] ## [tool call 11] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb,pandas as pd; pd.set_option('display.width',250); c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nfor v,a,b in [('paradex','2026-09-21 13:30','2026-09-21 13:35'),('paradex','2026-09-22 00:34','2026-09-22 00:39'),('nado','2026-09-21 09:31','2026-09-21 09:33'),('hyperliquid','2026-09-21 09:31:50','2026-09-21 09:32:10')]:\n print(v,a); print(c.sql(f\\\"select ts,price,qty,notional,side,kind from t where venue='{v}' and ts between '{a}+00' and '{b}+00' order by ts\\\").df().to_string())\n\"" } ## [tool result (error)] Exit code 1 Traceback (most recent call last): File "", line 4, in _duckdb.ConversionException: Conversion Error: invalid timestamp field format: "2026-09-21 13:30+00", expected format is (YYYY-MM-DD HH:MM:SS[.US][±HH[:MM[:SS]]| ZONE]) LINE 1: ..., notional, side, kind FROM t WHERE ((venue = 'paradex') AND (ts BETWEEN '2026-09-21 13:30+00' AND '2026-09-21 13:35+00... ^ paradex 2026-09-21 13:30 ## [agent] Checking a few price outliers on Paradex and Nado against Hyperliquid. ## [tool call 12] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; /tmp/peerfeed-a21/venv/bin/python -c \"\nimport duckdb,pandas as pd; pd.set_option('display.width',250); c=duckdb.connect('btc.duckdb'); c.sql(\\\"set TimeZone='UTC'\\\")\nfor v,a,b in [('paradex','2026-09-21 13:30:00','2026-09-21 13:35:00'),('paradex','2026-09-22 00:34:00','2026-09-22 00:39:00'),('nado','2026-09-21 09:31:30','2026-09-21 09:32:59'),('hyperliquid','2026-09-21 09:31:55','2026-09-21 09:32:05')]:\n print(v,a); print(c.sql(f\\\"select ts,price,qty,notional,side,kind from t where venue='{v}' and ts between '{a}+00' and '{b}+00' order by ts limit 40\\\").df().to_string())\n\"" } ## [tool result] paradex 2026-09-21 13:30:00 ts price qty notional side kind 0 2026-09-21 13:30:03.438000+00:00 84949.4 0.00048 40.775712 BUY RPI 1 2026-09-21 13:30:12.101000+00:00 84712.9 0.00378 320.214762 SELL RPI 2 2026-09-21 13:30:18.053000+00:00 84928.3 0.00048 40.765584 BUY RPI 3 2026-09-21 13:30:23.564000+00:00 84925.0 0.00048 40.764000 BUY RPI 4 2026-09-21 13:30:30.310000+00:00 84948.8 0.00048 40.775424 BUY RPI 5 2026-09-21 13:30:35.207000+00:00 84964.8 0.00048 40.783104 BUY RPI 6 2026-09-21 13:30:41.722000+00:00 84997.0 0.00019 16.149430 BUY RPI 7 2026-09-21 13:30:41.722000+00:00 85004.8 0.00029 24.651392 BUY RPI 8 2026-09-21 13:30:48.623000+00:00 85040.1 0.00048 40.819248 BUY RPI 9 2026-09-21 13:30:53.900000+00:00 84990.5 0.00048 40.795440 BUY RPI 10 2026-09-21 13:30:59.017000+00:00 85031.4 0.00048 40.815072 BUY RPI 11 2026-09-21 13:31:05.669000+00:00 84973.8 0.00048 40.787424 BUY RPI 12 2026-09-21 13:31:09.987000+00:00 84896.4 0.00700 594.274800 BUY RPI 13 2026-09-21 13:31:11.570000+00:00 84867.4 0.01023 868.193502 SELL RPI 14 2026-09-21 13:31:17.552000+00:00 84821.0 0.02701 2291.015210 SELL RPI 15 2026-09-21 13:31:22.895000+00:00 84606.2 0.00015 12.690930 SELL FILL 16 2026-09-21 13:31:22.895000+00:00 84606.2 0.00015 12.690930 SELL FILL 17 2026-09-21 13:31:22.895000+00:00 83548.4 0.01400 1169.677600 SELL FILL 18 2026-09-21 13:31:22.895000+00:00 84566.2 0.00019 16.067578 SELL FILL 19 2026-09-21 13:31:22.895000+00:00 84686.2 0.00024 20.324688 SELL FILL 20 2026-09-21 13:31:22.895000+00:00 84606.2 0.00015 12.690930 SELL FILL 21 2026-09-21 13:31:22.895000+00:00 84686.2 0.00024 20.324688 SELL FILL 22 2026-09-21 13:31:22.895000+00:00 84606.2 0.00015 12.690930 SELL FILL 23 2026-09-21 13:31:22.895000+00:00 84566.2 0.00019 16.067578 SELL FILL 24 2026-09-21 13:31:22.895000+00:00 84566.2 0.00019 16.067578 SELL FILL 25 2026-09-21 13:31:22.895000+00:00 84686.2 0.00012 10.162344 SELL FILL 26 2026-09-21 13:31:24.182000+00:00 84833.5 0.00955 810.159925 SELL RPI 27 2026-09-21 13:31:32.973000+00:00 84857.3 0.00565 479.443745 SELL RPI 28 2026-09-21 13:31:33.035000+00:00 84857.4 0.04159 3529.219266 BUY FILL 29 2026-09-21 13:31:37.825000+00:00 84922.2 0.00045 38.214990 BUY RPI 30 2026-09-21 13:31:41.689000+00:00 84937.4 0.04312 3662.500688 BUY FILL 31 2026-09-21 13:31:43.511000+00:00 84959.9 0.00075 63.719925 BUY RPI 32 2026-09-21 13:31:50.329000+00:00 84984.5 0.00681 578.744445 BUY RPI 33 2026-09-21 13:31:50.329000+00:00 84981.8 0.00019 16.146542 BUY RPI 34 2026-09-21 13:31:57.273000+00:00 85045.2 0.00681 579.157812 BUY FILL 35 2026-09-21 13:31:57.273000+00:00 84961.1 0.00019 16.142609 BUY RPI 36 2026-09-21 13:32:02.617000+00:00 85001.6 0.00019 16.150304 BUY RPI 37 2026-09-21 13:32:10.451000+00:00 85012.8 0.00019 16.152432 BUY RPI 38 2026-09-21 13:32:17.220000+00:00 85043.8 0.00031 26.363578 BUY RPI 39 2026-09-21 13:32:22.610000+00:00 84982.4 0.00031 26.344544 BUY RPI paradex 2026-09-22 00:34:00 ts price qty notional side kind 0 2026-09-22 00:34:02.530000+00:00 86473.4 0.00683 590.613322 SELL RPI 1 2026-09-22 00:34:05.447000+00:00 86468.1 0.00683 590.577123 SELL RPI 2 2026-09-22 00:34:12.215000+00:00 86745.2 0.00015 13.011780 BUY FILL 3 2026-09-22 00:34:12.215000+00:00 86745.2 0.00003 2.602356 BUY FILL 4 2026-09-22 00:34:18.171000+00:00 86745.2 0.00012 10.409424 BUY FILL 5 2026-09-22 00:34:42.205000+00:00 86865.2 0.00015 13.029780 BUY FILL 6 2026-09-22 00:34:42.205000+00:00 86865.2 0.00002 1.737304 BUY FILL 7 2026-09-22 00:35:07.621000+00:00 86413.8 0.00019 16.418622 SELL FILL 8 2026-09-22 00:35:07.621000+00:00 86433.8 0.00015 12.965070 SELL FILL 9 2026-09-22 00:35:12.202000+00:00 86985.2 0.00002 1.739704 BUY FILL 10 2026-09-22 00:35:12.202000+00:00 86945.2 0.00015 13.041780 BUY FILL 11 2026-09-22 00:35:42.208000+00:00 87105.2 0.00002 1.742104 BUY FILL 12 2026-09-22 00:35:42.208000+00:00 87105.2 0.00015 13.065780 BUY FILL 13 2026-09-22 00:36:12.210000+00:00 87225.2 0.00015 13.083780 BUY FILL 14 2026-09-22 00:36:12.210000+00:00 87225.2 0.00002 1.744504 BUY FILL 15 2026-09-22 00:36:42.205000+00:00 87385.2 0.00002 1.747704 BUY FILL 16 2026-09-22 00:36:42.205000+00:00 87345.2 0.00015 13.101780 BUY FILL 17 2026-09-22 00:36:45.219000+00:00 87405.2 0.00002 1.748104 BUY FILL 18 2026-09-22 00:36:45.219000+00:00 87385.2 0.00015 13.107780 BUY FILL 19 2026-09-22 00:36:45.219000+00:00 87385.2 0.00013 11.360076 BUY FILL 20 2026-09-22 00:36:50.043000+00:00 87445.2 0.00015 13.116780 BUY FILL 21 2026-09-22 00:36:50.043000+00:00 87711.6 0.00002 1.754232 BUY FILL 22 2026-09-22 00:36:52.038000+00:00 87711.6 0.00030 26.313480 BUY FILL 23 2026-09-22 00:36:55.330000+00:00 87711.6 0.00030 26.313480 BUY FILL 24 2026-09-22 00:36:57.536000+00:00 87711.6 0.00030 26.313480 BUY FILL 25 2026-09-22 00:37:04.250000+00:00 87711.6 0.00025 21.927900 BUY FILL 26 2026-09-22 00:37:12.214000+00:00 87711.6 0.00017 14.910972 BUY FILL 27 2026-09-22 00:37:42.204000+00:00 87711.6 0.00017 14.910972 BUY FILL 28 2026-09-22 00:38:12.221000+00:00 87711.6 0.00017 14.910972 BUY FILL 29 2026-09-22 00:38:13.456000+00:00 87711.6 0.00030 26.313480 BUY FILL 30 2026-09-22 00:38:42.199000+00:00 87556.8 0.00017 14.884656 BUY FILL nado 2026-09-21 09:31:30 ts price qty notional side kind 0 2026-09-21 09:31:30.100033+00:00 84445.0 0.02370 2001.34650 false trade 1 2026-09-21 09:31:30.763112+00:00 84435.0 0.05910 4990.10850 true trade 2 2026-09-21 09:31:30.763469+00:00 84435.0 0.02090 1764.69150 true trade 3 2026-09-21 09:31:31.092212+00:00 84447.0 0.06630 5598.83610 true trade 4 2026-09-21 09:31:31.092212+00:00 84447.0 0.15295 12916.16865 true trade 5 2026-09-21 09:31:31.092212+00:00 84447.0 0.02370 2001.39390 true trade 6 2026-09-21 09:31:32.643733+00:00 84446.0 0.02855 2410.93330 false trade 7 2026-09-21 09:31:33.083025+00:00 84445.0 0.01640 1384.89800 false trade 8 2026-09-21 09:31:33.084604+00:00 84445.0 0.00060 50.66700 false trade 9 2026-09-21 09:31:33.752072+00:00 84434.0 0.00295 249.08030 false trade 10 2026-09-21 09:31:33.932174+00:00 84446.0 0.03315 2799.38490 false trade 11 2026-09-21 09:31:35.262101+00:00 84453.0 0.05530 4670.25090 true trade 12 2026-09-21 09:31:35.262101+00:00 84453.0 0.20140 17008.83420 true trade 13 2026-09-21 09:31:35.262101+00:00 84453.0 0.00145 122.45685 true trade 14 2026-09-21 09:31:36.423729+00:00 84452.0 0.03180 2685.57360 false trade 15 2026-09-21 09:32:02.998106+00:00 84420.0 0.00200 168.84000 false trade 16 2026-09-21 09:32:03.329132+00:00 84405.0 0.00060 50.64300 false trade 17 2026-09-21 09:32:03.329630+00:00 84405.0 0.00060 50.64300 false trade 18 2026-09-21 09:32:03.330244+00:00 84405.0 0.00060 50.64300 false trade 19 2026-09-21 09:32:03.348035+00:00 84405.0 0.02190 1848.46950 false trade 20 2026-09-21 09:32:03.367098+00:00 84400.0 0.00120 101.28000 false trade 21 2026-09-21 09:32:03.451100+00:00 84390.0 0.00215 181.43850 false trade 22 2026-09-21 09:32:03.836729+00:00 84389.0 0.00060 50.63340 false trade 23 2026-09-21 09:32:04.091081+00:00 84387.0 0.00075 63.29025 false trade 24 2026-09-21 09:32:04.091415+00:00 84387.0 0.00070 59.07090 false trade 25 2026-09-21 09:32:04.750065+00:00 84376.0 0.00490 413.44240 false trade 26 2026-09-21 09:32:04.750065+00:00 84376.0 0.02780 2345.65280 false trade 27 2026-09-21 09:32:04.750065+00:00 84376.0 0.03290 2775.97040 false trade 28 2026-09-21 09:32:04.750065+00:00 84376.0 0.00270 227.81520 false trade 29 2026-09-21 09:32:04.750065+00:00 84376.0 0.02740 2311.90240 false trade 30 2026-09-21 09:32:04.750065+00:00 84376.0 0.00130 109.68880 false trade 31 2026-09-21 09:32:04.959298+00:00 84376.0 0.00065 54.84440 false trade 32 2026-09-21 09:32:05.323348+00:00 84367.0 0.00155 130.76885 false trade 33 2026-09-21 09:32:05.328036+00:00 84367.0 0.00085 71.71195 false trade 34 2026-09-21 09:32:06.086059+00:00 84334.0 0.00510 430.10340 false trade 35 2026-09-21 09:32:06.161094+00:00 84334.0 0.00075 63.25050 false trade 36 2026-09-21 09:32:08.018046+00:00 84329.0 0.02370 1998.59730 true trade 37 2026-09-21 09:32:08.991264+00:00 84348.0 0.00630 531.39240 false trade 38 2026-09-21 09:32:08.991264+00:00 84348.0 0.02370 1999.04760 false trade 39 2026-09-21 09:32:09.697113+00:00 84343.0 0.02370 1998.92910 true trade hyperliquid 2026-09-21 09:31:55 ts price qty notional side kind 0 2026-09-21 09:31:55.169000+00:00 84540.0 0.00012 10.14480 A None 1 2026-09-21 09:31:55.439000+00:00 84570.0 0.00900 761.13000 B None 2 2026-09-21 09:31:55.439000+00:00 84568.0 0.00416 351.80288 B None 3 2026-09-21 09:31:55.439000+00:00 84575.0 0.00700 592.02500 B None 4 2026-09-21 09:31:55.439000+00:00 84549.0 0.00220 186.00780 B None 5 2026-09-21 09:31:55.439000+00:00 84560.0 0.43811 37046.58160 B None 6 2026-09-21 09:31:55.439000+00:00 84563.0 0.11818 9993.65534 B None 7 2026-09-21 09:31:55.439000+00:00 84572.0 0.00900 761.14800 B None 8 2026-09-21 09:31:55.439000+00:00 84570.0 0.03000 2537.10000 B None 9 2026-09-21 09:31:55.439000+00:00 84543.0 0.00044 37.19892 B None 10 2026-09-21 09:31:55.439000+00:00 84568.0 0.00600 507.40800 B None 11 2026-09-21 09:31:55.439000+00:00 84576.0 0.01000 845.76000 B None 12 2026-09-21 09:31:55.439000+00:00 84574.0 0.00700 592.01800 B None 13 2026-09-21 09:31:55.439000+00:00 84566.0 0.00700 591.96200 B None 14 2026-09-21 09:31:55.439000+00:00 84576.0 0.35191 29763.14016 B None 15 2026-09-21 09:31:55.573000+00:00 84565.0 0.50000 42282.50000 A None 16 2026-09-21 09:31:55.573000+00:00 84576.0 0.00019 16.06944 B None 17 2026-09-21 09:31:55.703000+00:00 84570.0 0.00181 153.07170 A None 18 2026-09-21 09:31:55.703000+00:00 84574.0 0.00014 11.84036 B None 19 2026-09-21 09:31:56.041000+00:00 84557.0 0.00015 12.68355 A None 20 2026-09-21 09:31:56.041000+00:00 84557.0 0.00052 43.96964 A None 21 2026-09-21 09:31:56.243000+00:00 84555.0 0.00021 17.75655 A None 22 2026-09-21 09:31:56.444000+00:00 84559.0 0.03550 3001.84450 A None 23 2026-09-21 09:31:56.586000+00:00 84561.0 0.00100 84.56100 A None 24 2026-09-21 09:31:56.586000+00:00 84561.0 0.00100 84.56100 A None 25 2026-09-21 09:31:57.046000+00:00 84565.0 0.00015 12.68475 A None 26 2026-09-21 09:31:57.046000+00:00 84566.0 0.30461 25759.64926 B None 27 2026-09-21 09:31:57.046000+00:00 84566.0 0.69539 58806.35074 B None 28 2026-09-21 09:31:57.121000+00:00 84566.0 0.00568 480.33488 B None 29 2026-09-21 09:31:57.331000+00:00 84565.0 0.00037 31.28905 A None 30 2026-09-21 09:31:57.331000+00:00 84566.0 0.00012 10.14792 B None 31 2026-09-21 09:31:57.852000+00:00 84564.0 0.03400 2875.17600 A None 32 2026-09-21 09:31:57.852000+00:00 84564.0 0.03400 2875.17600 A None 33 2026-09-21 09:31:58.490000+00:00 84563.0 0.00012 10.14756 B None 34 2026-09-21 09:31:58.683000+00:00 84562.0 0.00012 10.14744 A None 35 2026-09-21 09:31:58.883000+00:00 84562.0 0.03500 2959.67000 A None 36 2026-09-21 09:31:58.883000+00:00 84563.0 0.02956 2499.68228 B None 37 2026-09-21 09:31:58.883000+00:00 84562.0 0.03500 2959.67000 A None 38 2026-09-21 09:31:58.883000+00:00 84562.0 0.03550 3001.95100 A None 39 2026-09-21 09:31:59.287000+00:00 84563.0 0.04543 3841.69709 B None ## [agent thinking] ## [tool call 13] Bash { "command": "cd /tmp/peerfeed-a21/work-t3-raw; cat > vol.py <<'EOF'\nimport duckdb,pandas as pd,numpy as np; pd.set_option('display.width',250)\nc=duckdb.connect('btc.duckdb'); c.sql(\"set TimeZone='UTC'\")\nprint(c.sql(\"select max(abs(notional-price*qty)/notional) from t where venue='edgex'\").df())\nprint(c.sql(\"select venue, median(bps) signed_med from dev group by 1\").df())\n# notional\nn=c.sql(\"\"\"select venue, sum(notional) usd, count(*) trades from t\n where not (venue='paradex' and kind='UNWIND_TRANSFER') and not (venue='pacifica' and kind='game_settlement') group by 1\"\"\").df().set_index('venue')\nn['share']=n.usd/n.usd.sum()\nex=n.drop('paradex'); n['share_ex_paradex']=ex.usd/ex.usd.sum()\nprint(n.sort_values('usd',ascending=False)); print('total',n.usd.sum())\nm=c.sql(\"select venue,mi,cl from m\").df()\ngrid=pd.date_range('2026-09-21',periods=10080,freq='1min',tz='UTC')\nA=525600\ndef rv(s,g):\n s=s.reindex(g).ffill().dropna()\n r=np.log(s).diff().dropna()\n return np.sqrt((r**2).sum()*A/len(r)), r.std()*np.sqrt(A), len(r)\nout=[]\npdx_end=pd.Timestamp('2026-09-22 04:27',tz='UTC')\ng2=grid[grid> vol.py <<'EOF'\nprint('--- paradex window 2026-09-21 00:00 to 09-22 04:27')\nfor v,d in m.groupby('venue'):\n s=d.set_index('mi').cl.sort_index().reindex(g2).ffill()\n out2=[]\n for k in (1,5,15):\n r=np.log(s[::k]).diff().dropna(); out2.append(np.sqrt((r**2).sum()*A/k/len(r)))\n r1=np.log(s).diff().dropna(); ac=r1.autocorr(1)\n print(v, [round(x,3) for x in out2], 'lag1 autocorr',round(ac,3), 'minutes traded', d[d.mi&1 | sed -n '/paradex window/,$p'" } ## [tool result] --- paradex window 2026-09-21 00:00 to 09-22 04:27 apex [np.float64(0.525), np.float64(0.503), np.float64(0.487)] lag1 autocorr -0.07 minutes traded 1707 dydx [np.float64(0.561), np.float64(0.529), np.float64(0.495)] lag1 autocorr -0.037 minutes traded 1053 edgex [np.float64(0.52), np.float64(0.507), np.float64(0.485)] lag1 autocorr -0.045 minutes traded 1707 hyperliquid [np.float64(0.519), np.float64(0.511), np.float64(0.492)] lag1 autocorr -0.04 minutes traded 1707 nado [np.float64(0.507), np.float64(0.497), np.float64(0.478)] lag1 autocorr -0.021 minutes traded 1707 pacifica [np.float64(0.522), np.float64(0.507), np.float64(0.489)] lag1 autocorr -0.051 minutes traded 1689 paradex [np.float64(1.165), np.float64(0.785), np.float64(0.578)] lag1 autocorr -0.282 minutes traded 1415 --- full week lag-1 autocorr of 1m returns apex -0.002 dydx 0.002 edgex 0.02 hyperliquid 0.023 nado 0.043 pacifica 0.03 paradex -0.282 ## [agent thinking] ## [agent] Hyperliquid carries about 74% of the seven venues' BTC‑perp notional. Realised vol agrees across six of the seven venues, at 36–40% annualised. Paradex is the exception: the archive has only about 28 of the 168 hours for it, and its 1‑minute vol on those hours is about double the other venues'. ## Traded notional, 2026‑09‑21 00:00 to 2026‑09‑28 00:00 UTC | Venue (market) | Trades | Notional (USD) | Share of 7‑venue total | |---|---|---|---| | Hyperliquid (BTC) | 2,406,078 | $20.872bn | 73.83% | | edgeX (BTCUSDC) | 826,371 | $2.993bn | 10.59% | | ApeX (BTCUSDT) | 165,722 | $2.106bn | 7.45% | | Pacifica (BTC) | 85,799 | $1.384bn | 4.89% | | Nado (product 2, BTC perp) | 261,857 | $0.847bn | 3.00% | | dYdX (BTC‑USD) | 18,509 | $58.5m | 0.21% | | Paradex (BTC‑USD‑PERP) | 14,401 | $10.85m | 0.04% (only ~17% of the week covered) | | **Total** | | **$28.271bn** | 100% | **The Paradex figure is incomplete.** The archive has no Paradex files from 2026‑09‑22 06:00 to 09‑28 14:00, and its last trade in the window is at 09‑22 04:27 UTC. Scaling the covered hours up to a full week gives roughly $64m, or about 0.23% share. That estimate is weak because 21 September was a busier‑than‑average day. Leaving Paradex out changes the other venues' shares by less than 0.03 percentage points. ## Realised vol of 1‑minute log returns, annualised Method: the last trade price in each minute on a 10,080‑minute grid, carried forward through minutes with no trades. Realised vol is √(Σr² × 525,600 / N), using 24/7 annualisation. Computing it as a sample standard deviation gives the same numbers. | Venue | Vol, full week | Vol, 09‑21 00:00 to 09‑22 04:27 (the hours Paradex covers) | Vol from 5‑min returns, full week | Minutes with a trade | |---|---|---|---|---| | Hyperliquid | 36.7% | 51.9% | 37.6% | 10,077 / 10,080 | | edgeX | 36.5% | 52.0% | 37.1% | 10,080 | | ApeX | 37.3% | 52.5% | 37.3% | 10,080 | | Pacifica | 35.9% | 52.2% | 36.8% | 9,897 | | Nado | 35.8% | 50.7% | 37.1% | 9,765 | | dYdX | 39.9% | 56.1% | 39.7% | 4,205 | | Paradex | n/a (see below) | **116.5%** | — | 1,415 in its ~1,707 covered minutes | **Is it consistent?** Yes for the five liquid venues: 35.8–37.3%, within about ±2% of each other, which is what you'd expect when they all price the same asset. There are two outliers: 1. **Paradex is a data artefact, not real volatility.** - **Its week figure can't be used.** Filling six missing days with a flat price would give 48% with this method, which means nothing. I report it only on the hours it covers. - **Even there it is about 2.2× the rest** (116.5% against about 52% on other venues over the same hours). The cause is a very thin book: trades of about $10–$40, some of which walk the book. For example, fills printed at 87,712 while Hyperliquid was around 86,400, and a 0.014 BTC sell went through at 83,548. Last‑trade prices were up to 207 bp away from Hyperliquid. - **The pattern is bid‑ask bounce and noise.** Consecutive 1‑minute returns are strongly negatively correlated (−0.28, against about 0 elsewhere). Paradex's vol falls sharply as the sampling interval lengthens: 116% at 1 minute, 79% at 5 minutes and 58% at 15 minutes. At 15 minutes it is close to the other venues' 48–50%. 2. **dYdX is modestly high, by about 9%** (39.9% against 36.7% on Hyperliquid). It trades in only 42% of minutes, with small tickets on a wider market. Its last trade therefore jumps between bid and ask and catches up to the market in steps. The gap narrows at longer horizons: on the Paradex‑window hours it goes from 56% at 1 minute to 50% at 15 minutes, against 49% for Hyperliquid. Vol on 1‑minute last‑trade prices is not reliable for venues that trade this thinly. Hyperliquid, edgeX or ApeX give the representative figure, about 36–37% annualised for the week. ## Data cleaning - **Timestamps:** all times are converted to UTC. The files are split by recording time, not trade time, so I selected trades by their own timestamp and read the files on each side of the window. - **Duplicates:** consecutive files overlap, so I removed repeated trade IDs: dYdX 19.8k (it had about 3 copies of each trade), ApeX 5.2k, edgeX 65, Hyperliquid 28. Nado has no trade ID, so I matched on time, price, quantity and side (22 repeats, all where two files overlap). ## FINAL ANSWER **Traded notional and share, 2026‑09‑21 00:00 to 09‑28 00:00 UTC:** - Hyperliquid: $20.872bn, 73.83% - edgeX: $2.993bn, 10.59% - ApeX: $2.106bn, 7.45% - Pacifica: $1.384bn, 4.89% - Nado: $0.847bn, 3.00% - dYdX: $58.5m, 0.21% - Paradex: $10.85m, 0.04% (only about 28 of 168 hours in the archive; about $64m and 0.23% if scaled to a full week) - Total: $28.271bn **Realised vol of 1‑minute log returns, annualised (√525,600):** - Hyperliquid: 36.7% - edgeX: 36.5% - ApeX: 37.3% - Pacifica: 35.9% - Nado: 35.8% - dYdX: 39.9% - Paradex: 116.5%, measured only on its covered hours (09‑21 00:00 to 09‑22 04:27). The other venues are about 51–56% over those same hours. **Consistency:** the five liquid venues agree within about ±2% (35.8–37.3%). The outliers are Paradex and dYdX, whose 1‑minute last‑trade prices on thin books are inflated by bid‑ask bounce and noise. Paradex shows a −0.28 correlation between consecutive returns and falls to 58% at 15‑minute sampling. dYdX is about 9% high and trades in only 42% of minutes. Paradex's week total is also incomplete because of the missing archive files. **Judgement calls:** 1. **Markets:** I used Hyperliquid main BTC (not the HIP‑3 BTC markets), edgeX contract 30000001, ApeX BTCUSDT, Pacifica BTC, dYdX BTC‑USD, Paradex BTC‑USD‑PERP and Nado product 2. Nado product 1 is BTC spot, so I left it out. 2. **Currency:** ApeX is quoted in USDT, and I counted it one‑for‑one as USD because the archive has no USDT/USD rate. 3. **Nado units:** prices and quantities are stored scaled up by 10¹⁸, and I divided that out. I used the taker quantity, which always equals the maker quantity. 4. **Paradex:** I counted normal fills, RPI fills, liquidations and block trades as notional. I left out the 3 unwind transfers because they are position transfers, not trades. Block trades are also left out of vol. 5. **Pacifica:** I left out 52 "game_settlement" rows ($0.22m), which are not order‑book trades. Liquidations are included everywhere. 6. **Duplicates** were removed as described in the data‑cleaning section. 7. **Paradex figures:** because of the archive gap, its notional is the observed amount and its vol uses only the covered window, rather than scaling up or filling six days with a flat price. 8. **Vol method:** minutes with no trades carry the last price forward, and the vol is computed with no mean subtracted. My working files, `load.py`, `vol.py` and `btc.duckdb`, are in `/tmp/peerfeed-a21/work-t3-raw`. ## [run ended] subtype=success turns=15 duration_ms=154487