File size: 1,362 Bytes
d699ea7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
"""Analyze the downloaded market-context data: per-day funding + futures move.

Question: does funding rate magnitude or futures-volatility separate the CRASH
days from the NORMAL days at the day level? If yes, a cheap "regime gate" (only
publish alerts when funding|basis is elevated) could suppress calm-day chatter.

Usage:  PYTHONPATH=ml python scripts/analyze_context.py
"""
import glob
import json
from pathlib import Path
import numpy as np

OUT = Path("data/more/context")

print("\nfunding-rate magnitude per day:")
for f in sorted(OUT.glob("*_funding.json")):
    parts = f.stem.split("_")
    sym, day = parts[0], parts[1]
    d = json.load(open(f))
    rates = [abs(float(x.get("fundingRate", 0))) for x in d if x.get("fundingRate")]
    print(f"{sym:10} {day:12} n_fund={len(rates):3d}  mean|fund|={np.mean(rates):.6f}")

print("\n1h futures range (max-close - min-close relative to day low) + peak volume:")
for f in sorted(OUT.glob("*_klines.json")):
    parts = f.name.split("_")
    j, day = parts[0], parts[1]
    d = json.load(open(f))
    lo = min(float(x[3]) for x in d)
    closes = [float(x[4]) for x in d]
    vols = [float(x[5]) for x in d]
    range_pct = (max(closes) - min(closes)) / lo * 100
    peak = max(vols)
    print(f"{j:10} {day:12} n={len(d):3d} fut_range%={range_pct:6.1f}  vol_peak={peak/1e6:.0f}M")