SPB Git

spb/wp47_uqo

Public
1.7 KB · 36 lines python
1"""Export 1-minute continuous Treasury futures (raw, i.e. unadjusted front-contract splice) to data/cache/futures_1m/.23One Parquet file per root × block of years. Also exports the daily ratio-adjusted continuous series (for roll checks).4Run on M3U96a: .venv/bin/python scripts/01_extract_futures.py5"""6from __future__ import annotations7import json, sys, time8from pathlib import Path9sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))10from wp47.findata import export1112ROOTS = ["ZT", "ZF", "ZN", "TN", "US", "UB"]13BLOCKS = [("2008-01-01", "2013-12-31"), ("2014-01-01", "2019-12-31"), ("2020-01-01", "2026-12-31")]14CACHE = Path(__file__).resolve().parents[1] / "data" / "cache"15log = []16for root in ROOTS:17    for a, b in BLOCKS:18        dest = CACHE / "futures_1m" / f"{root}_{a[:4]}_{b[:4]}.parquet"19        if dest.exists():20            continue21        t0 = time.time()22        info = export("market_bars.futures.1m.continuous_raw", [root], a, b, dest)23        info.update(root=root, start=a, end=b, seconds=round(time.time() - t0, 1), file=str(dest.name))24        print(json.dumps(info), flush=True)25        log.append(info)26for ds in ("market_bars.futures.1d.continuous_raw", "market_bars.futures.1d.continuous_ratio"):27    for a, b in (("2008-01-01", "2017-12-31"), ("2018-01-01", "2026-12-31")):28        dest = CACHE / "futures_1d" / f"{ds.split('.')[-1]}_{a[:4]}_{b[:4]}.parquet"29        if not dest.exists():30            info = export(ds, ROOTS, a, b, dest)31            info.update(dataset=ds, file=dest.name)32            print(json.dumps(info), flush=True)33            log.append(info)34(CACHE / "extract_log.jsonl").open("a").write("".join(json.dumps(x) + "\n" for x in log))35print("done")36
Files · main
Menu

Theme