diff --git a/scripts/surfer/crypto_funding_paper.py b/scripts/surfer/crypto_funding_paper.py index b20f18977..87412200a 100644 --- a/scripts/surfer/crypto_funding_paper.py +++ b/scripts/surfer/crypto_funding_paper.py @@ -115,6 +115,10 @@ def cmd_snapshot(): def cmd_run(): st = load_state() + today = datetime.datetime.now(datetime.timezone.utc).date().isoformat() + if st.get("last_run_date") == today: # idempotent: one booking per UTC day + print(f"already booked {today} (day {st['days']}); skipping") + return prev = st["positions"] liq, tf30, last24 = scan(prev) realized = sum(w * last24.get(c, 0.0) for c, w in prev.items()) @@ -123,7 +127,7 @@ def cmd_run(): newpos = {c: 1.0 / n for c in q} if n else {} turnover = sum(abs(newpos.get(c, 0) - prev.get(c, 0)) for c in set(newpos) | set(prev)) net = realized - turnover * (COST_RT / 2) - st.update(positions=newpos, days=st["days"] + 1) + st.update(positions=newpos, days=st["days"] + 1, last_run_date=today) st["cum_gross"] += realized st["cum_net"] += net os.makedirs(os.path.dirname(STATE), exist_ok=True)