"""形成、可得和首个可执行开盘三时点;一日标签不冒充入场结果。""" import json from datetime import datetime formed = datetime.fromisoformat('2026-01-02T16:00:00-05:00') available = datetime.fromisoformat('2026-01-05T09:35:00-05:00') opens = [('2026-01-05T09:30:00-05:00', 10, True), ('2026-01-06T09:30:00-05:00', 12, True), ('2026-01-07T09:30:00-05:00', 11, True)] def first_entry(rows, expiry): eligible = [r for r in rows if available < datetime.fromisoformat(r[0]) <= expiry and r[2]] return min(eligible, key=lambda row: datetime.fromisoformat(row[0]), default=None) expiry = datetime.fromisoformat('2026-01-06T16:00:00-05:00') entry = first_entry(opens, expiry) assert formed < available < datetime.fromisoformat(entry[0]) assert entry[0].startswith('2026-01-06') exit_price, quantity, initial = 11, 40, 1000 cash = initial - quantity * entry[1] - 1 + quantity * exit_price - 1 assert cash == 958 label_return = 12 / 10 - 1 assert abs(label_return - .2) < 1e-9 blocked = [opens[0], (opens[1][0], opens[1][1], False), opens[2]] assert first_entry(blocked, expiry) is None extended_expiry = datetime.fromisoformat('2026-01-08T16:00:00-05:00') reversed_entry = first_entry(list(reversed(opens)), extended_expiry) assert reversed_entry == opens[1], reversed_entry print(json.dumps({'formed': formed.isoformat(), 'available': available.isoformat(), 'entry': entry, 'statistical_label_return': label_return, 'actual_entry_gross_return': exit_price / entry[1] - 1, 'ending_cash': cash, 'fees': 2, 'blocked_until_expiry': 'no_entry', 'reversed_input_entry': reversed_entry}))