From 2f4f2ccbbe606f7ab4767b2d0378f3c6a4fa71cf Mon Sep 17 00:00:00 2001 From: jaxperro Date: Mon, 20 Jul 2026 17:34:21 -0400 Subject: [PATCH] =?UTF-8?q?research=20silo:=20edge=20factory=20=E2=80=94?= =?UTF-8?q?=20calibrated=20sim,=20Study=20A/B,=20forward=20ledger=20(#2,?= =?UTF-8?q?=20#16,=20#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit research/ is a hard silo (README rules): read-only tape, no bot imports, own launchd (com.jaxperro.research-nightly 09:15, after daily ingest). - tape.py: proxy-resolution (the 742/742-validated method), niche + crypto strike/expiry/sprint parsers, tick loaders - sim.py: FAK execution replayer; hold_s=3 fitted on 29 real labeled live attempts (79% fill/miss classification), price noise 2-4c, measured OPTIMISM BIAS -2c/fill carried into every verdict threshold - requote.py: crater refill timing per niche (crypto 94% <4s, esports 83% <10s, sports needs ~25s, geo/politics minutes) -> params/requote_timing.json - study_flow.py + robustness: in-play surge momentum. Identity NULL result: 10 pooled controls +23.85/fill == informed +23.68 -> hypothesis revised at freeze, surge-EV primary, identity secondary (#16) - study_oracle.py: oracle digital fair value. 86% craters, winner's-curse inversion at big edges, nothing frozen (no cell at 30 fills) (#17) - forward.py + nightly.sh: re-scores frozen studies on last 3 tape days, appends forward_ledger.jsonl; verdicts ONLY from post-freeze rows Co-Authored-By: Claude Fable 5 --- .gitignore | 4 + research/README.md | 31 + research/forward.py | 168 + research/forward_ledger.jsonl | 6 + research/nightly.sh | 24 + research/params/requote_timing.json | 60 + research/params/sim_calibration.json | 41 + research/params/study_flow.json | 7967 ++++++++++++++++++++ research/params/study_flow_robustness.json | 77 + research/params/study_oracle.json | 37 + research/requote.py | 57 + research/robustness_flow.py | 92 + research/sim.py | 167 + research/study_flow.py | 218 + research/study_oracle.py | 250 + research/tape.py | 193 + 16 files changed, 9392 insertions(+) create mode 100644 research/README.md create mode 100644 research/forward.py create mode 100644 research/forward_ledger.jsonl create mode 100755 research/nightly.sh create mode 100644 research/params/requote_timing.json create mode 100644 research/params/sim_calibration.json create mode 100644 research/params/study_flow.json create mode 100644 research/params/study_flow_robustness.json create mode 100644 research/params/study_oracle.json create mode 100644 research/requote.py create mode 100644 research/robustness_flow.py create mode 100644 research/sim.py create mode 100644 research/study_flow.py create mode 100644 research/study_oracle.py create mode 100644 research/tape.py diff --git a/.gitignore b/.gitignore index e31b6f16..5307322c 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,7 @@ live/slug_cache.json archive/local/ live/edge_verdict.txt live/rtds.duckdb +research/forward.log +research/launchd.log +research/.nightly.lock.d +research/__pycache__/ diff --git a/research/README.md b/research/README.md new file mode 100644 index 00000000..8caf8003 --- /dev/null +++ b/research/README.md @@ -0,0 +1,31 @@ +# research/ — the edge factory (SILO) + +Standing rules (user directive 2026-07-20: "built in a silo to not affect +anything on the live bot"): + +- **Nothing here is imported by, or imports, the bot** (`copybot.py`, + `copytrade.py`, their configs). The Fly workers run pinned entrypoints; + this directory is inert to them. +- **Tape access is read-only** (`duckdb.connect(..., read_only=True)`). +- The ONE shared write: `live/cache.duckdb::resolutions` via `live/payouts.py` + — append-only immutable chain facts, the same store the daily pipeline + already feeds. Nothing else in `live/` is touched. +- The existing paper bot is the live test's CONTROL — graduated edges get + their own paper harness here, never that one. +- Studies are pre-registered (GitHub issue per study: hypothesis, params, + verdict + kill criteria) BEFORE their forward window opens. Exploration + happens on already-collected tape; **verdicts only come from + `forward_ledger.jsonl` rows dated after the params freeze commit.** + +Layout: + tape.py read-only loaders · tape proxy-resolution (terminal-VWAP + + sibling veto, the 742/742 chain-validated method) · title + parsers (niche, crypto strike/expiry/sprint) + sim.py execution replayer calibrated on OUR live fills ledger + (lag, FAK no-match, protected band, 3% taker fee) + study_flow.py Study A — informed-flow state signal + study_oracle.py Study B — crypto oracle fair value vs the book + requote.py crater→requote timing measurement (retry tuning) + forward.py scores frozen studies on new tape days → forward_ledger.jsonl + params/ frozen study parameters (committed = frozen) + nightly.sh manual/launchd runner (separate from daily.sh) diff --git a/research/forward.py b/research/forward.py new file mode 100644 index 00000000..dc671713 --- /dev/null +++ b/research/forward.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +"""Forward verdict ledger — the only place belief comes from. + +Each run re-scores the FROZEN studies on the last RESCORE_DAYS UTC days of +tape and appends one row per (study, day) to forward_ledger.jsonl. Days are +recomputed on later runs so pending (unresolved-at-the-time) triggers +resolve into their day's row; readers keep the newest computed_at per key. + +Studies: + flow frozen params from params/study_flow.json — informed set as-of + each day's 00:00 UTC, scored at p50 lag, first- AND worst-print + fills; plus 3 FIXED control seeds (identity-lift tracking). + oracle params/study_oracle.json grid — ALL edge levels tracked until + one accumulates >= 30 forward fills (then the selection rule in + the pre-registration applies). Skips days without tick coverage. + +Verdicts are pre-registered in the study issues; this script only reports. +""" +import json +import os +import time + +import tape +import sim as simmod +import study_flow as sf +import study_oracle as so + +HERE = os.path.dirname(os.path.abspath(__file__)) +LEDGER = os.path.join(HERE, "forward_ledger.jsonl") +RESCORE_DAYS = 3 +CONTROL_SEEDS = (1, 2, 3) + + +def day_bounds(d): + lo = time.mktime(time.strptime(d, "%Y-%m-%d")) - time.timezone + return lo, lo + 86400 + + +def score_flow(db, fz, d, hold_s): + lo, hi = day_bounds(d) + t_max = db.execute("SELECT max(ts) FROM trades").fetchone()[0] + hi = min(hi, t_max) + S = sf.informed_set(db, lo, fz["top_n"]) + tape.build_resolved(db) + trig = sf.signals(db, S, lo, hi, fz["window_s"], fz["flow_usd"]) + row = {"triggers": len(trig), "set_size": len(S)} + for mode in ("first", "worst"): + s = simmod.Sim(db, lag_s=simmod.LAG_P50, hold_s=hold_s, fill=mode) + agg = dict(fills=0, misses=0, pending=0, pnl=0.0, wins=0) + for t in trig: + pay = db.execute("SELECT payout::DOUBLE FROM res_tok WHERE asset=?", + [t["asset"]]).fetchone() + r = s.try_buy(t["asset"], t["ts"], t["p_ref"], stake_usd=sf.STAKE) + if not r["filled"]: + agg["misses"] += 1 + elif pay is None: + agg["pending"] += 1 + else: + agg["fills"] += 1 + agg["pnl"] += r["shares"] * (pay[0] - r["price"]) - r["fee"] + agg["wins"] += pay[0] == 1.0 + agg["pnl"] = round(agg["pnl"], 2) + if agg["fills"]: + agg["ev_per_fill"] = round(agg["pnl"] / agg["fills"], 2) + agg["hit"] = round(agg["wins"] / agg["fills"], 3) + row[mode] = agg + ctl = [] + for seed in CONTROL_SEEDS: + C = sf.matched_random_set(db, lo, fz["top_n"], seed) + ctrig = sf.signals(db, C, lo, hi, fz["window_s"], fz["flow_usd"]) + s = simmod.Sim(db, lag_s=simmod.LAG_P50, hold_s=hold_s, fill="worst") + fills = 0 + pnl = 0.0 + for t in ctrig: + pay = db.execute("SELECT payout::DOUBLE FROM res_tok WHERE asset=?", + [t["asset"]]).fetchone() + r = s.try_buy(t["asset"], t["ts"], t["p_ref"], stake_usd=sf.STAKE) + if r["filled"] and pay is not None: + fills += 1 + pnl += r["shares"] * (pay[0] - r["price"]) - r["fee"] + ctl.append({"seed": seed, "fills": fills, "pnl": round(pnl, 2)}) + row["controls_worst"] = ctl + return row + + +def score_oracle(db, P, d, hold_s): + lo, hi = day_bounds(d) + series = {s: so.TickSeries(tape.load_ticks(db, s)) + for s in ("btcusdt", "ethusdt", "solusdt", "xrpusdt", + "bnbusdt", "dogeusdt")} + have = [s for s in series.values() if s.ts and s.ts[0] < hi and s.ts[-1] > lo] + if not have: + return {"skipped": "no tick coverage"} + outcomes = so.outcome_map(db) + tape.build_resolved(db) + uni = so.crypto_universe(db, outcomes, series) + payout = {a: p for a, p in db.execute( + "SELECT asset, payout::DOUBLE FROM res_tok").fetchall()} + sim = simmod.Sim(db, hold_s=hold_s) + row = {} + for u in uni: + prints = db.execute("""SELECT ts, price FROM trades WHERE asset=? + AND ts > ? AND ts <= ? ORDER BY ts""", [u["asset"], lo, hi]).fetchall() + s = series[u["mkt"]["sym"]] + last_ev = 0.0 + for ts, px in prints: + if ts - last_ev < so.COOLDOWN_S: + continue + f = so.fair_value(u["mkt"], u["up"], s.at(ts), s.vol_1s(ts), ts) + if f is None: + continue + edge = f - float(px) + if edge < min(so.EDGE_GRID): + continue + last_ev = ts + r = sim.try_buy(u["asset"], ts, float(px), stake_usd=so.STAKE) + for E in so.EDGE_GRID: + if edge < E: + continue + g = row.setdefault(str(E), {"events": 0, "fills": 0, + "pending": 0, "pnl": 0.0, "wins": 0}) + g["events"] += 1 + if not r["filled"]: + continue + pay = payout.get(u["asset"]) + if pay is None: + g["pending"] += 1 + continue + g["fills"] += 1 + g["pnl"] += r["shares"] * (pay - r["price"]) - r["fee"] + g["wins"] += pay == 1.0 + for g in row.values(): + g["pnl"] = round(g["pnl"], 2) + if g["fills"]: + g["ev_per_fill"] = round(g["pnl"] / g["fills"], 2) + g["hit"] = round(g["wins"] / g["fills"], 3) + return row + + +def main(): + db = tape.connect() + cal = json.load(open(os.path.join(HERE, "params", "sim_calibration.json"))) + flow_p = json.load(open(os.path.join(HERE, "params", "study_flow.json"))) + fz = flow_p["frozen"] + frozen_at = flow_p["frozen_at"] + t_max = db.execute("SELECT max(ts) FROM trades").fetchone()[0] + days = [time.strftime("%Y-%m-%d", time.gmtime(t_max - i * 86400)) + for i in range(RESCORE_DAYS)] + now = time.strftime("%Y-%m-%d %H:%M UTC", time.gmtime()) + with open(LEDGER, "a") as fh: + for d in days: + r1 = score_flow(db, fz, d, cal["hold_s"]) + fh.write(json.dumps({"study": "flow", "day": d, "computed_at": now, + "frozen_at": frozen_at, **r1}, + default=float) + "\n") + print(f"flow {d}: trig {r1['triggers']} " + f"worst {r1['worst'].get('ev_per_fill')} " + f"({r1['worst']['fills']} fills, {r1['worst']['pending']} pend)") + r2 = score_oracle(db, None, d, cal["hold_s"]) + fh.write(json.dumps({"study": "oracle", "day": d, "computed_at": now, + **r2}, default=float) + "\n") + print(f"oracle {d}: " + (r2.get("skipped") or + " ".join(f"E{E}:{g.get('ev_per_fill')}({g['fills']}f)" + for E, g in sorted(r2.items())))) + + +if __name__ == "__main__": + main() diff --git a/research/forward_ledger.jsonl b/research/forward_ledger.jsonl new file mode 100644 index 00000000..88044a18 --- /dev/null +++ b/research/forward_ledger.jsonl @@ -0,0 +1,6 @@ +{"study": "flow", "day": "2026-07-20", "computed_at": "2026-07-20 21:23 UTC", "frozen_at": "2026-07-20 21:14 UTC", "triggers": 1083, "set_size": 150, "first": {"fills": 122, "misses": 776, "pending": 185, "pnl": 4876.4, "wins": 95, "ev_per_fill": 39.97, "hit": 0.779}, "worst": {"fills": 122, "misses": 776, "pending": 185, "pnl": 4820.99, "wins": 95, "ev_per_fill": 39.52, "hit": 0.779}, "controls_worst": [{"seed": 1, "fills": 0, "pnl": 0.0}, {"seed": 2, "fills": 6, "pnl": 13.45}, {"seed": 3, "fills": 5, "pnl": 331.95}]} +{"study": "oracle", "day": "2026-07-20", "computed_at": "2026-07-20 21:23 UTC", "0.04": {"events": 6739, "fills": 23, "pending": 1123, "pnl": 167.89, "wins": 12, "ev_per_fill": 7.3, "hit": 0.522}, "0.07": {"events": 3991, "fills": 15, "pending": 397, "pnl": -57.86, "wins": 7, "ev_per_fill": -3.86, "hit": 0.467}, "0.1": {"events": 2828, "fills": 10, "pending": 213, "pnl": -434.48, "wins": 4, "ev_per_fill": -43.45, "hit": 0.4}} +{"study": "flow", "day": "2026-07-19", "computed_at": "2026-07-20 21:23 UTC", "frozen_at": "2026-07-20 21:14 UTC", "triggers": 2588, "set_size": 150, "first": {"fills": 482, "misses": 1879, "pending": 227, "pnl": 11963.33, "wins": 348, "ev_per_fill": 24.82, "hit": 0.722}, "worst": {"fills": 482, "misses": 1879, "pending": 227, "pnl": 11738.61, "wins": 348, "ev_per_fill": 24.35, "hit": 0.722}, "controls_worst": [{"seed": 1, "fills": 29, "pnl": 1142.87}, {"seed": 2, "fills": 20, "pnl": -191.23}, {"seed": 3, "fills": 38, "pnl": 978.03}]} +{"study": "oracle", "day": "2026-07-19", "computed_at": "2026-07-20 21:23 UTC", "0.04": {"events": 1316, "fills": 9, "pending": 232, "pnl": -27.62, "wins": 7, "ev_per_fill": -3.07, "hit": 0.778}, "0.07": {"events": 767, "fills": 2, "pending": 105, "pnl": -8.42, "wins": 1, "ev_per_fill": -4.21, "hit": 0.5}, "0.1": {"events": 524, "fills": 1, "pending": 64, "pnl": 93.2, "wins": 1, "ev_per_fill": 93.2, "hit": 1.0}} +{"study": "flow", "day": "2026-07-18", "computed_at": "2026-07-20 21:23 UTC", "frozen_at": "2026-07-20 21:14 UTC", "triggers": 1924, "set_size": 30, "first": {"fills": 292, "misses": 1374, "pending": 258, "pnl": 13471.87, "wins": 229, "ev_per_fill": 46.14, "hit": 0.784}, "worst": {"fills": 292, "misses": 1374, "pending": 258, "pnl": 13061.87, "wins": 229, "ev_per_fill": 44.73, "hit": 0.784}, "controls_worst": [{"seed": 1, "fills": 6, "pnl": 842.01}, {"seed": 2, "fills": 37, "pnl": 2348.85}, {"seed": 3, "fills": 25, "pnl": 1725.52}]} +{"study": "oracle", "day": "2026-07-18", "computed_at": "2026-07-20 21:23 UTC", "skipped": "no tick coverage"} diff --git a/research/nightly.sh b/research/nightly.sh new file mode 100755 index 00000000..dee6d750 --- /dev/null +++ b/research/nightly.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# research nightly — scores the frozen studies on fresh tape and versions +# the forward ledger. SILO: touches only research/ (+ the append-only +# resolutions cache via payouts.py). Runs at 09:15 local via +# com.jaxperro.research-nightly (after the 08:00 daily pipeline's ingest); +# safe to run by hand any time: python3 research/forward.py +set -e +cd "$(dirname "$0")" + +if ! mkdir .nightly.lock.d 2>/dev/null; then + echo "$(date -u +%FT%TZ) already running — skip" >> forward.log + exit 0 +fi +trap 'rmdir .nightly.lock.d' EXIT + +echo "== $(date -u +%FT%TZ) nightly ==" >> forward.log +python3 forward.py >> forward.log 2>&1 + +cd .. +git add research/forward_ledger.jsonl +if ! git diff --cached --quiet; then + git commit -q -m "research: forward ledger $(date -u +%F) [skip ci]" + git pull --rebase --autostash -q && git push -q +fi diff --git a/research/params/requote_timing.json b/research/params/requote_timing.json new file mode 100644 index 00000000..ad0f7e4e --- /dev/null +++ b/research/params/requote_timing.json @@ -0,0 +1,60 @@ +{ + "crypto": { + "n": 625819, + "p50": 0.0, + "p75": 0.0, + "p90": 2.0, + "within_4s": 0.941, + "within_10s": 0.966, + "within_25s": 0.983 + }, + "other": { + "n": 69962, + "p50": 1.0, + "p75": 102.0, + "p90": 1085.0, + "within_4s": 0.565, + "within_10s": 0.607, + "within_25s": 0.659 + }, + "sports": { + "n": 52515, + "p50": 1.0, + "p75": 21.0, + "p90": 225.0, + "within_4s": 0.639, + "within_10s": 0.697, + "within_25s": 0.763 + }, + "esports": { + "n": 24370, + "p50": 0.0, + "p75": 3.0, + "p90": 32.0, + "within_4s": 0.772, + "within_10s": 0.829, + "within_25s": 0.887 + }, + "geo": { + "n": 2129, + "p50": 0.0, + "p75": 98.0, + "p90": 2110.0, + "within_4s": 0.643, + "within_10s": 0.669, + "within_25s": 0.7 + }, + "politics": { + "n": 571, + "p50": 1.0, + "p75": 879.0, + "p90": 13761.0, + "within_4s": 0.562, + "within_10s": 0.578, + "within_25s": 0.606 + }, + "_meta": { + "jump": 0.03, + "generated": "2026-07-20 17:11" + } +} \ No newline at end of file diff --git a/research/params/sim_calibration.json b/research/params/sim_calibration.json new file mode 100644 index 00000000..daa73363 --- /dev/null +++ b/research/params/sim_calibration.json @@ -0,0 +1,41 @@ +{ + "n_fills": 16, + "n_misses": 13, + "grid": { + "3": { + "fill_recall": 0.75, + "miss_recall": 0.8461538461538461, + "acc": 0.793 + }, + "5": { + "fill_recall": 0.75, + "miss_recall": 0.7692307692307693, + "acc": 0.759 + }, + "10": { + "fill_recall": 0.8125, + "miss_recall": 0.7692307692307693, + "acc": 0.793 + }, + "20": { + "fill_recall": 0.8125, + "miss_recall": 0.6153846153846154, + "acc": 0.724 + }, + "45": { + "fill_recall": 0.875, + "miss_recall": 0.46153846153846156, + "acc": 0.69 + }, + "90": { + "fill_recall": 0.875, + "miss_recall": 0.3076923076923077, + "acc": 0.621 + } + }, + "hold_s": 3, + "px_err_p50": 0.02, + "px_err_p90": 0.04, + "px_within_1c": 0.083, + "px_bias_mean": -0.0197 +} \ No newline at end of file diff --git a/research/params/study_flow.json b/research/params/study_flow.json new file mode 100644 index 00000000..9f5c1d2d --- /dev/null +++ b/research/params/study_flow.json @@ -0,0 +1,7967 @@ +{ + "frozen": { + "top_n": 150, + "window_s": 60, + "flow_usd": 300, + "hold_s": 3, + "price_band": [ + 0.1, + 0.9 + ], + "niches": [ + "esports", + "sports" + ], + "cooldown_s": 900, + "stake": 100.0, + "set_min_z": 2.5, + "set_min_bets": 6 + }, + "fit": { + "triggers": 2587, + "set_size": 150, + "p50": { + "fills": 477, + "misses": 1886, + "pending": 224, + "pnl": 11831.12, + "wins": 345, + "staked": 47700.0, + "ev_per_fill": 24.8, + "hit": 0.723 + }, + "p90": { + "fills": 307, + "misses": 2165, + "pending": 115, + "pnl": 2546.38, + "wins": 199, + "staked": 30700.0, + "ev_per_fill": 8.29, + "hit": 0.648 + } + }, + "fit_grid": [ + { + "params": [ + 50, + 60, + 300 + ], + "triggers": 2179, + "set_size": 50, + "p50": { + "fills": 438, + "misses": 1539, + "pending": 202, + "pnl": 10246.09, + "wins": 312, + "staked": 43800.0, + "ev_per_fill": 23.39, + "hit": 0.712 + }, + "p90": { + "fills": 259, + "misses": 1818, + "pending": 102, + "pnl": 3654.9, + "wins": 175, + "staked": 25900.0, + "ev_per_fill": 14.11, + "hit": 0.676 + } + }, + { + "params": [ + 50, + 60, + 1000 + ], + "triggers": 1087, + "set_size": 50, + "p50": { + "fills": 324, + "misses": 635, + "pending": 128, + "pnl": 6871.75, + "wins": 230, + "staked": 32400.0, + "ev_per_fill": 21.21, + "hit": 0.71 + }, + "p90": { + "fills": 190, + "misses": 845, + "pending": 52, + "pnl": 3187.45, + "wins": 127, + "staked": 19000.0, + "ev_per_fill": 16.78, + "hit": 0.668 + } + }, + { + "params": [ + 50, + 300, + 300 + ], + "triggers": 2479, + "set_size": 50, + "p50": { + "fills": 459, + "misses": 1803, + "pending": 217, + "pnl": 10170.88, + "wins": 322, + "staked": 45900.0, + "ev_per_fill": 22.16, + "hit": 0.702 + }, + "p90": { + "fills": 268, + "misses": 2100, + "pending": 111, + "pnl": 5764.38, + "wins": 182, + "staked": 26800.0, + "ev_per_fill": 21.51, + "hit": 0.679 + } + }, + { + "params": [ + 50, + 300, + 1000 + ], + "triggers": 1276, + "set_size": 50, + "p50": { + "fills": 346, + "misses": 783, + "pending": 147, + "pnl": 7158.11, + "wins": 244, + "staked": 34600.0, + "ev_per_fill": 20.69, + "hit": 0.705 + }, + "p90": { + "fills": 215, + "misses": 992, + "pending": 69, + "pnl": 4583.1, + "wins": 146, + "staked": 21500.0, + "ev_per_fill": 21.32, + "hit": 0.679 + } + }, + { + "params": [ + 150, + 60, + 300 + ], + "triggers": 2587, + "set_size": 150, + "p50": { + "fills": 477, + "misses": 1886, + "pending": 224, + "pnl": 11831.12, + "wins": 345, + "staked": 47700.0, + "ev_per_fill": 24.8, + "hit": 0.723 + }, + "p90": { + "fills": 307, + "misses": 2165, + "pending": 115, + "pnl": 2546.38, + "wins": 199, + "staked": 30700.0, + "ev_per_fill": 8.29, + "hit": 0.648 + } + }, + { + "params": [ + 150, + 60, + 1000 + ], + "triggers": 1282, + "set_size": 150, + "p50": { + "fills": 362, + "misses": 758, + "pending": 162, + "pnl": 8483.91, + "wins": 263, + "staked": 36200.0, + "ev_per_fill": 23.44, + "hit": 0.727 + }, + "p90": { + "fills": 210, + "misses": 1011, + "pending": 61, + "pnl": 4320.88, + "wins": 147, + "staked": 21000.0, + "ev_per_fill": 20.58, + "hit": 0.7 + } + }, + { + "params": [ + 150, + 300, + 300 + ], + "triggers": 2963, + "set_size": 150, + "p50": { + "fills": 504, + "misses": 2215, + "pending": 244, + "pnl": 11033.25, + "wins": 354, + "staked": 50400.0, + "ev_per_fill": 21.89, + "hit": 0.702 + }, + "p90": { + "fills": 313, + "misses": 2511, + "pending": 139, + "pnl": 6644.89, + "wins": 214, + "staked": 31300.0, + "ev_per_fill": 21.23, + "hit": 0.684 + } + }, + { + "params": [ + 150, + 300, + 1000 + ], + "triggers": 1544, + "set_size": 150, + "p50": { + "fills": 380, + "misses": 995, + "pending": 169, + "pnl": 8404.17, + "wins": 270, + "staked": 38000.0, + "ev_per_fill": 22.12, + "hit": 0.711 + }, + "p90": { + "fills": 233, + "misses": 1233, + "pending": 78, + "pnl": 3811.92, + "wins": 152, + "staked": 23300.0, + "ev_per_fill": 16.36, + "hit": 0.652 + } + } + ], + "controls": [ + { + "triggers": 88, + "set_size": 150, + "p50": { + "fills": 29, + "misses": 53, + "pending": 6, + "pnl": 1148.73, + "wins": 22, + "staked": 2900.0, + "ev_per_fill": 39.61, + "hit": 0.759 + }, + "p90": { + "fills": 22, + "misses": 65, + "pending": 1, + "pnl": 685.42, + "wins": 15, + "staked": 2200.0, + "ev_per_fill": 31.16, + "hit": 0.682 + } + }, + { + "triggers": 53, + "set_size": 150, + "p50": { + "fills": 20, + "misses": 28, + "pending": 5, + "pnl": -185.67, + "wins": 12, + "staked": 2000.0, + "ev_per_fill": -9.28, + "hit": 0.6 + }, + "p90": { + "fills": 13, + "misses": 38, + "pending": 2, + "pnl": -161.52, + "wins": 7, + "staked": 1300.0, + "ev_per_fill": -12.42, + "hit": 0.538 + } + }, + { + "triggers": 138, + "set_size": 150, + "p50": { + "fills": 37, + "misses": 89, + "pending": 12, + "pnl": 979.41, + "wins": 29, + "staked": 3700.0, + "ev_per_fill": 26.47, + "hit": 0.784 + }, + "p90": { + "fills": 32, + "misses": 99, + "pending": 7, + "pnl": 248.93, + "wins": 22, + "staked": 3200.0, + "ev_per_fill": 7.78, + "hit": 0.688 + } + } + ], + "holdout": { + "triggers": 1084, + "set_size": 150, + "p50": { + "fills": 123, + "misses": 774, + "pending": 187, + "pnl": 5059.11, + "wins": 96, + "staked": 12300.0, + "ev_per_fill": 41.13, + "hit": 0.78 + }, + "p90": { + "fills": 49, + "misses": 925, + "pending": 110, + "pnl": 2006.36, + "wins": 36, + "staked": 4900.0, + "ev_per_fill": 40.95, + "hit": 0.735 + } + }, + "frozen_at": "2026-07-20 21:14 UTC", + "pending_triggers": [ + { + "asset": "100114378467750534107462268354961359520291412981915160413374927199274306490388", + "ts": 1784561984.0, + "p_ref": 0.23, + "flow": 453, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "100114378467750534107462268354961359520291412981915160413374927199274306490388", + "ts": 1784563470.0, + "p_ref": 0.31, + "flow": 915, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "100114378467750534107462268354961359520291412981915160413374927199274306490388", + "ts": 1784564701.0, + "p_ref": 0.5, + "flow": 2511, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "100114378467750534107462268354961359520291412981915160413374927199274306490388", + "ts": 1784565914.0, + "p_ref": 0.68, + "flow": 475, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "100255402291590366337637129821378412563950814256513527361851411403132230588092", + "ts": 1784531464.0, + "p_ref": 0.17, + "flow": 1613, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "100255402291590366337637129821378412563950814256513527361851411403132230588092", + "ts": 1784536027.0, + "p_ref": 0.16, + "flow": 377, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "100255402291590366337637129821378412563950814256513527361851411403132230588092", + "ts": 1784539295.0, + "p_ref": 0.3, + "flow": 2396, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "100255402291590366337637129821378412563950814256513527361851411403132230588092", + "ts": 1784540230.0, + "p_ref": 0.35, + "flow": 541, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "100255402291590366337637129821378412563950814256513527361851411403132230588092", + "ts": 1784541575.0, + "p_ref": 0.1, + "flow": 630, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "100470126391606637545216772469859031081280928647501910170937182321516416058251", + "ts": 1784560175.0, + "p_ref": 0.63, + "flow": 1558, + "title": "Estoril Open: Daniel Merida Aguilar vs Taro Daniel" + }, + { + "asset": "100470126391606637545216772469859031081280928647501910170937182321516416058251", + "ts": 1784563325.0, + "p_ref": 0.51, + "flow": 651, + "title": "Estoril Open: Daniel Merida Aguilar vs Taro Daniel" + }, + { + "asset": "100470126391606637545216772469859031081280928647501910170937182321516416058251", + "ts": 1784565048.0, + "p_ref": 0.5, + "flow": 300, + "title": "Estoril Open: Daniel Merida Aguilar vs Taro Daniel" + }, + { + "asset": "101182515524719951568485829484170882500599847920385143976424324641422174578461", + "ts": 1784544216.0, + "p_ref": 0.68, + "flow": 301, + "title": "Estoril Open: Stan Wawrinka vs Roman Andres Burruchaga" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784547443.0, + "p_ref": 0.54, + "flow": 312, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784549844.0, + "p_ref": 0.28, + "flow": 306, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784550794.0, + "p_ref": 0.3127751279160524, + "flow": 338, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784552275.0, + "p_ref": 0.25, + "flow": 378, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784553491.0, + "p_ref": 0.59, + "flow": 504, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784554861.0, + "p_ref": 0.62, + "flow": 380, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101411347645330191826935473884317246344438495130760138991627403621652571379666", + "ts": 1784555828.0, + "p_ref": 0.89, + "flow": 1176, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "101662658193460604987401639285828207218524604587281764548992190095366340204922", + "ts": 1784507489.0, + "p_ref": 0.32, + "flow": 307, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "101662658193460604987401639285828207218524604587281764548992190095366340204922", + "ts": 1784509904.0, + "p_ref": 0.27, + "flow": 326, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "101662658193460604987401639285828207218524604587281764548992190095366340204922", + "ts": 1784511287.0, + "p_ref": 0.38, + "flow": 332, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "101662658193460604987401639285828207218524604587281764548992190095366340204922", + "ts": 1784512727.0, + "p_ref": 0.38, + "flow": 335, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "101662658193460604987401639285828207218524604587281764548992190095366340204922", + "ts": 1784514909.0, + "p_ref": 0.7, + "flow": 1233, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784534993.0, + "p_ref": 0.4, + "flow": 356, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784535941.0, + "p_ref": 0.31, + "flow": 486, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784537111.0, + "p_ref": 0.19, + "flow": 455, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784539294.0, + "p_ref": 0.2, + "flow": 596, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784541088.0, + "p_ref": 0.3399999999231803, + "flow": 1035, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784542756.0, + "p_ref": 0.37, + "flow": 506, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "101817048274818854161956836451424531499516401376022390544903481438548319303509", + "ts": 1784543777.0, + "p_ref": 0.3900000001284919, + "flow": 641, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "102242851837858953253940395702243626825684494251508992041584617723075966121520", + "ts": 1784555242.0, + "p_ref": 0.44, + "flow": 1600, + "title": "San Diego Padres vs. Atlanta Braves" + }, + { + "asset": "102252010155212194531796518984231617394240774859992335857512482604727673003753", + "ts": 1784557731.0, + "p_ref": 0.65, + "flow": 592, + "title": "Ayla Aksu vs. Sofia Costoulas: Total Sets O/U 2.5" + }, + { + "asset": "102341415366706515154962009571791948082207952835634311473824251407341852899185", + "ts": 1784506874.0, + "p_ref": 0.3163270813655377, + "flow": 427, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK (BO3) - CCT South" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784530961.0, + "p_ref": 0.63, + "flow": 311, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784533665.0, + "p_ref": 0.63, + "flow": 1453, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784534809.0, + "p_ref": 0.6200000005393828, + "flow": 414, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784535729.0, + "p_ref": 0.57, + "flow": 1608, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784536650.0, + "p_ref": 0.49, + "flow": 319, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102626200231182533797065834988548685209981839554630278391306999484558560239424", + "ts": 1784537609.0, + "p_ref": 0.3400000000331105, + "flow": 2254, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "102655047807109660349248746400313166157834845865820859697880754494857142884930", + "ts": 1784552628.0, + "p_ref": 0.89, + "flow": 1095, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "102655047807109660349248746400313166157834845865820859697880754494857142884930", + "ts": 1784558755.0, + "p_ref": 0.89, + "flow": 308, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "103125590645117229730972935567848149165071280510957405688652344429751345069431", + "ts": 1784565754.0, + "p_ref": 0.59, + "flow": 344, + "title": "Baltimore Orioles vs. Boston Red Sox" + }, + { + "asset": "10312944327466029224753198283660454456518533832674262105410627032406579598539", + "ts": 1784507864.0, + "p_ref": 0.64, + "flow": 350, + "title": "LoL: Kits Esports vs SDM Tigres - Game 2 Winner" + }, + { + "asset": "10312944327466029224753198283660454456518533832674262105410627032406579598539", + "ts": 1784509766.0, + "p_ref": 0.54, + "flow": 312, + "title": "LoL: Kits Esports vs SDM Tigres - Game 2 Winner" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784528195.0, + "p_ref": 0.5600000428318637, + "flow": 302, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784546273.0, + "p_ref": 0.5299999999653607, + "flow": 6886, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784558591.0, + "p_ref": 0.53, + "flow": 558, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784559909.0, + "p_ref": 0.34, + "flow": 808, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784560810.0, + "p_ref": 0.66, + "flow": 11059, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784562173.0, + "p_ref": 0.3300000000616756, + "flow": 345, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "103757263152466728004487424818312367816427701082383083769000591578308391170010", + "ts": 1784563790.0, + "p_ref": 0.14, + "flow": 1098, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "104269736293457998220797502321163017898817640512565439328798511942915351018360", + "ts": 1784557880.0, + "p_ref": 0.6, + "flow": 600, + "title": "Aksu vs. Costoulas: Match O/U 21.5" + }, + { + "asset": "104485955968096244293968151784450358226533094922926421067953059320168237135148", + "ts": 1784547587.0, + "p_ref": 0.87, + "flow": 861, + "title": "Set 1 Winner: Neumayer vs Hanfmann" + }, + { + "asset": "104527354686300750373597300485780140582768559115806206930416119561975298515502", + "ts": 1784531822.0, + "p_ref": 0.28, + "flow": 316, + "title": "Will FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea" + }, + { + "asset": "104527354686300750373597300485780140582768559115806206930416119561975298515502", + "ts": 1784562137.0, + "p_ref": 0.3, + "flow": 324, + "title": "Will FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea" + }, + { + "asset": "10456386987428063821666959244332080197954256600353917651220946335906814696881", + "ts": 1784560221.0, + "p_ref": 0.50999999847, + "flow": 323, + "title": "Daniel Merida Aguilar vs. Taro Daniel: Total Sets O/U 2.5" + }, + { + "asset": "104570478296827757630477163174458435846421637016076548458712002856218197195530", + "ts": 1784521777.0, + "p_ref": 0.47, + "flow": 383, + "title": "Tampa Bay Rays vs. Toronto Blue Jays: O/U 7.5" + }, + { + "asset": "104727450140476982475575084138782985709566606907217810740175287114501123102797", + "ts": 1784534503.0, + "p_ref": 0.44, + "flow": 1760, + "title": "Los Angeles Dodgers vs. Philadelphia Phillies" + }, + { + "asset": "104849944252013213224037356294764936303595420386335761357775410895645382376512", + "ts": 1784550407.0, + "p_ref": 0.28, + "flow": 311, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "104849944252013213224037356294764936303595420386335761357775410895645382376512", + "ts": 1784553744.0, + "p_ref": 0.2800000000258387, + "flow": 433, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "104849944252013213224037356294764936303595420386335761357775410895645382376512", + "ts": 1784564935.0, + "p_ref": 0.64, + "flow": 505, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "105018242971784917160271371824719633279402830345245199762933599204503233861086", + "ts": 1784557543.0, + "p_ref": 0.6, + "flow": 600, + "title": "Cincinnati Reds vs. Seattle Mariners: 1st 5 Innings O/U 3.5" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784533467.0, + "p_ref": 0.7, + "flow": 307, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784534957.0, + "p_ref": 0.65, + "flow": 324, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784551473.0, + "p_ref": 0.6, + "flow": 356, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784553793.0, + "p_ref": 0.66, + "flow": 318, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784554693.0, + "p_ref": 0.72, + "flow": 345, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105146826336151557150223703653539107560439117161885585335039088198383215170939", + "ts": 1784555754.0, + "p_ref": 0.31, + "flow": 306, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "105421414326206608732991019891620392779219078095530715218682648147138991838037", + "ts": 1784554688.0, + "p_ref": 0.52, + "flow": 457, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "105421414326206608732991019891620392779219078095530715218682648147138991838037", + "ts": 1784555718.0, + "p_ref": 0.48, + "flow": 305, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "105421414326206608732991019891620392779219078095530715218682648147138991838037", + "ts": 1784557595.0, + "p_ref": 0.75, + "flow": 488, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "105421414326206608732991019891620392779219078095530715218682648147138991838037", + "ts": 1784559851.0, + "p_ref": 0.82, + "flow": 477, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "105421414326206608732991019891620392779219078095530715218682648147138991838037", + "ts": 1784560831.0, + "p_ref": 0.9, + "flow": 328, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "106565811907774596098094207712789505056292885443938851290895858449497836413038", + "ts": 1784505827.0, + "p_ref": 0.6, + "flow": 7889, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 8.5" + }, + { + "asset": "106841981413763482563460197097951905669872526805712485417694980361162563323579", + "ts": 1784505693.0, + "p_ref": 0.72, + "flow": 336, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 1 Winner" + }, + { + "asset": "106841981413763482563460197097951905669872526805712485417694980361162563323579", + "ts": 1784506641.0, + "p_ref": 0.35, + "flow": 313, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 1 Winner" + }, + { + "asset": "106845736967504542356849735892558390192084773941702246912813531388051005712901", + "ts": 1784556576.0, + "p_ref": 0.5299999995708502, + "flow": 531, + "title": "Hamburg European Open: Simona Waltert vs Mayar Sherif" + }, + { + "asset": "107451857425819192858874518435685696943932544816929442901532700153323802254427", + "ts": 1784531274.0, + "p_ref": 0.49, + "flow": 378, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "107451857425819192858874518435685696943932544816929442901532700153323802254427", + "ts": 1784532187.0, + "p_ref": 0.36, + "flow": 587, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "107451857425819192858874518435685696943932544816929442901532700153323802254427", + "ts": 1784551242.0, + "p_ref": 0.15, + "flow": 342, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "107451857425819192858874518435685696943932544816929442901532700153323802254427", + "ts": 1784552289.0, + "p_ref": 0.2899999995699737, + "flow": 441, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "107816129130059231400428638711677231811226571328907019154178791841545655108229", + "ts": 1784562370.0, + "p_ref": 0.28, + "flow": 302, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "107816129130059231400428638711677231811226571328907019154178791841545655108229", + "ts": 1784564236.0, + "p_ref": 0.18, + "flow": 536, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "108519157657951243903412566459413039481537148961857400608505078599829048830178", + "ts": 1784549974.0, + "p_ref": 0.6500000994318464, + "flow": 303, + "title": "Palermo: Alessandra Mazzola vs Dalila Spiteri" + }, + { + "asset": "108540947280483882309338714730741821444951906397528651878595665371897899201110", + "ts": 1784545130.0, + "p_ref": 0.6, + "flow": 2207, + "title": "Generali Open: Daniel Altmaier vs Raphael Collignon" + }, + { + "asset": "108877769818878910065842943222545165162848218306254119133866597590718468257128", + "ts": 1784510517.0, + "p_ref": 0.47, + "flow": 383, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "108877769818878910065842943222545165162848218306254119133866597590718468257128", + "ts": 1784511533.0, + "p_ref": 0.6, + "flow": 456, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "108877769818878910065842943222545165162848218306254119133866597590718468257128", + "ts": 1784512753.0, + "p_ref": 0.73, + "flow": 304, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "109163936161169803429033220084239461750506429429683786147203915083881253052607", + "ts": 1784505838.0, + "p_ref": 0.4061832061068702, + "flow": 309, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 1 Winner" + }, + { + "asset": "109210555508497054971886365354896702790587482305587208827576426381854530309888", + "ts": 1784534804.0, + "p_ref": 0.57, + "flow": 2408, + "title": "San Diego Padres vs. Atlanta Braves" + }, + { + "asset": "109210555508497054971886365354896702790587482305587208827576426381854530309888", + "ts": 1784554619.0, + "p_ref": 0.56, + "flow": 972, + "title": "San Diego Padres vs. Atlanta Braves" + }, + { + "asset": "109210555508497054971886365354896702790587482305587208827576426381854530309888", + "ts": 1784557918.0, + "p_ref": 0.55, + "flow": 6253, + "title": "San Diego Padres vs. Atlanta Braves" + }, + { + "asset": "10927304221239817556811010720060883465755491546504442202344153944970520254387", + "ts": 1784507025.0, + "p_ref": 0.85, + "flow": 309, + "title": "Call of Duty: FaZe Vegas vs OpTic Texas (BO9) - Call of Duty" + }, + { + "asset": "10927304221239817556811010720060883465755491546504442202344153944970520254387", + "ts": 1784508595.0, + "p_ref": 0.83, + "flow": 409, + "title": "Call of Duty: FaZe Vegas vs OpTic Texas (BO9) - Call of Duty" + }, + { + "asset": "109321744541248863829073554031517706612320146988562638902139913979009332894524", + "ts": 1784555803.0, + "p_ref": 0.59, + "flow": 442, + "title": "Athletics vs. Arizona Diamondbacks" + }, + { + "asset": "109321744541248863829073554031517706612320146988562638902139913979009332894524", + "ts": 1784562203.0, + "p_ref": 0.58, + "flow": 311, + "title": "Athletics vs. Arizona Diamondbacks" + }, + { + "asset": "109446625930168460521295872296591613452104764693101210736165142032048325961122", + "ts": 1784555682.0, + "p_ref": 0.4, + "flow": 468, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "109446625930168460521295872296591613452104764693101210736165142032048325961122", + "ts": 1784559105.0, + "p_ref": 0.4, + "flow": 433, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "109446625930168460521295872296591613452104764693101210736165142032048325961122", + "ts": 1784561546.0, + "p_ref": 0.4000000001958551, + "flow": 416, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "109446625930168460521295872296591613452104764693101210736165142032048325961122", + "ts": 1784563486.0, + "p_ref": 0.4099999998147993, + "flow": 605, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "109556340557174663891703935925545889367700508607780460527689472315274282687901", + "ts": 1784552736.0, + "p_ref": 0.79, + "flow": 312, + "title": "Orgryte IS vs. Djurgardens IF: 1st Half O/U 2.5" + }, + { + "asset": "109589158782164822479699243190877938714779401867412647868762858266571687146255", + "ts": 1784543959.0, + "p_ref": 0.35, + "flow": 547, + "title": "Set 1 Winner: Bouzkova vs Maneiro" + }, + { + "asset": "110087492273684024582358062961537515147943945260561401694175514844787877111860", + "ts": 1784506262.0, + "p_ref": 0.6600000007418182, + "flow": 427, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "110087492273684024582358062961537515147943945260561401694175514844787877111860", + "ts": 1784509895.0, + "p_ref": 0.64, + "flow": 470, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "110087492273684024582358062961537515147943945260561401694175514844787877111860", + "ts": 1784511536.0, + "p_ref": 0.63, + "flow": 378, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "110087492273684024582358062961537515147943945260561401694175514844787877111860", + "ts": 1784513715.0, + "p_ref": 0.71, + "flow": 379, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "110087492273684024582358062961537515147943945260561401694175514844787877111860", + "ts": 1784515118.0, + "p_ref": 0.36, + "flow": 309, + "title": "NBA Summer League: Memphis Grizzlies vs. Golden State Warrio" + }, + { + "asset": "110111106111623359408416035106206005442353106049895257930445545396157501056651", + "ts": 1784554014.0, + "p_ref": 0.38, + "flow": 306, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "110111106111623359408416035106206005442353106049895257930445545396157501056651", + "ts": 1784557848.0, + "p_ref": 0.38, + "flow": 978, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "110111106111623359408416035106206005442353106049895257930445545396157501056651", + "ts": 1784558846.0, + "p_ref": 0.39, + "flow": 780, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "110111106111623359408416035106206005442353106049895257930445545396157501056651", + "ts": 1784559806.0, + "p_ref": 0.38, + "flow": 304, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "110223518975886075746823197582856854694953299547272139399439396733043560734458", + "ts": 1784535038.0, + "p_ref": 0.53, + "flow": 530, + "title": "Set Handicap: Tararudee (-1.5) vs Kovackova (+1.5)" + }, + { + "asset": "11053806192439845130570908746920105264576785599482914982288328631814179674997", + "ts": 1784554189.0, + "p_ref": 0.6099999994683414, + "flow": 390, + "title": "Set Handicap: Buse (-1.5) vs Kopriva (+1.5)" + }, + { + "asset": "11053806192439845130570908746920105264576785599482914982288328631814179674997", + "ts": 1784563039.0, + "p_ref": 0.6816429610611896, + "flow": 398, + "title": "Set Handicap: Buse (-1.5) vs Kopriva (+1.5)" + }, + { + "asset": "110894917851110420509197755855872163483044287132651887624294709771150975039085", + "ts": 1784551246.0, + "p_ref": 0.83, + "flow": 326, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "110894917851110420509197755855872163483044287132651887624294709771150975039085", + "ts": 1784552146.0, + "p_ref": 0.831, + "flow": 1175, + "title": "LoL: Nongshim Red Force vs BNK FEARX (BO1) - KeSPA Cup Group" + }, + { + "asset": "111142829084754050612924775709729212358095223065155452387706042745603380656889", + "ts": 1784552763.0, + "p_ref": 0.85, + "flow": 736, + "title": "Orgryte IS vs. Djurgardens IF: O/U 5.5" + }, + { + "asset": "111441295415796627028111511771599052597306520177745542077687340932006921787230", + "ts": 1784546056.0, + "p_ref": 0.1, + "flow": 347, + "title": "Hamburg European Open, Qualification: Elena Pridankina vs Vi" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784545537.0, + "p_ref": 0.47, + "flow": 606, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784547904.0, + "p_ref": 0.47, + "flow": 509, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784548975.0, + "p_ref": 0.47, + "flow": 350, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784557532.0, + "p_ref": 0.45, + "flow": 550, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784558576.0, + "p_ref": 0.460000000061987, + "flow": 1569, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784559495.0, + "p_ref": 0.75, + "flow": 506, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784560400.0, + "p_ref": 0.41, + "flow": 716, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784561359.0, + "p_ref": 0.59, + "flow": 4902, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784562269.0, + "p_ref": 0.57, + "flow": 1992, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784563174.0, + "p_ref": 0.81, + "flow": 381, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111757872918154699344390237849436024698409942278347553989319266157615691964939", + "ts": 1784564236.0, + "p_ref": 0.9, + "flow": 6154, + "title": "Livesport Prague Open: Antonia Ruzic vs Dominika Salkova" + }, + { + "asset": "111984548913166590650069149328330855248017231166688912303401121564854583482559", + "ts": 1784533442.0, + "p_ref": 0.54, + "flow": 536, + "title": "Set Handicap: Chiesa (-1.5) vs Kabbaj (+1.5)" + }, + { + "asset": "112489406401856381022005466815386968215604908663223602028344532688835474874877", + "ts": 1784511977.0, + "p_ref": 0.5099999999605268, + "flow": 775, + "title": "Set Handicap: Basilashvili (-1.5) vs Torres (+1.5)" + }, + { + "asset": "112489406401856381022005466815386968215604908663223602028344532688835474874877", + "ts": 1784531475.0, + "p_ref": 0.5, + "flow": 500, + "title": "Set Handicap: Basilashvili (-1.5) vs Torres (+1.5)" + }, + { + "asset": "112684777217752443642106821523969326963066438926062538766988488735899974330896", + "ts": 1784544522.0, + "p_ref": 0.5499999996071429, + "flow": 350, + "title": "Map 3 Total Rounds: Over/Under 22.5" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784539119.0, + "p_ref": 0.59, + "flow": 1801, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784547611.0, + "p_ref": 0.6, + "flow": 300, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784548528.0, + "p_ref": 0.59, + "flow": 565, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784552337.0, + "p_ref": 0.62, + "flow": 379, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784553320.0, + "p_ref": 0.6299507389162562, + "flow": 639, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784554278.0, + "p_ref": 0.51, + "flow": 337, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784555233.0, + "p_ref": 0.41, + "flow": 303, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784556520.0, + "p_ref": 0.4000000002211498, + "flow": 658, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784557850.0, + "p_ref": 0.49, + "flow": 378, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784558759.0, + "p_ref": 0.69, + "flow": 705, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113042402691469858499258789704182042080698409611837892979458896109792459390825", + "ts": 1784559711.0, + "p_ref": 0.89, + "flow": 1271, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "113227631657251353993392801003374618506813889620582517409974091245169431330896", + "ts": 1784547906.0, + "p_ref": 0.66, + "flow": 2771, + "title": "New York Mets vs. Milwaukee Brewers" + }, + { + "asset": "113227631657251353993392801003374618506813889620582517409974091245169431330896", + "ts": 1784549053.0, + "p_ref": 0.66, + "flow": 513, + "title": "New York Mets vs. Milwaukee Brewers" + }, + { + "asset": "113227631657251353993392801003374618506813889620582517409974091245169431330896", + "ts": 1784550191.0, + "p_ref": 0.66, + "flow": 304, + "title": "New York Mets vs. Milwaukee Brewers" + }, + { + "asset": "113445122626034851137651453725486615340288722475855627629841220257715503282380", + "ts": 1784559756.0, + "p_ref": 0.61, + "flow": 500, + "title": "FC Sheriff Tiraspol vs. MH Maccabi Tel Aviv: O/U 2.5" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784556505.0, + "p_ref": 0.46, + "flow": 324, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784558154.0, + "p_ref": 0.71, + "flow": 374, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784559092.0, + "p_ref": 0.71, + "flow": 368, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784559995.0, + "p_ref": 0.75, + "flow": 324, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784561100.0, + "p_ref": 0.79, + "flow": 305, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113577492799825215927329239457796399601905807745846283820229822527888421843111", + "ts": 1784562003.0, + "p_ref": 0.8, + "flow": 377, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "113594765558003359488879212592319915515820108731888853395642205714579318296599", + "ts": 1784506141.0, + "p_ref": 0.8, + "flow": 1254, + "title": "Will Club Alianza Lima vs. CS Huancayo end in a draw?" + }, + { + "asset": "113594765558003359488879212592319915515820108731888853395642205714579318296599", + "ts": 1784507598.0, + "p_ref": 0.72, + "flow": 403, + "title": "Will Club Alianza Lima vs. CS Huancayo end in a draw?" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784540522.0, + "p_ref": 0.7782887102488204, + "flow": 439, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784559087.0, + "p_ref": 0.77, + "flow": 338, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784560001.0, + "p_ref": 0.63000000037, + "flow": 995, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784561012.0, + "p_ref": 0.69, + "flow": 677, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784561918.0, + "p_ref": 0.72, + "flow": 302, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784562873.0, + "p_ref": 0.88, + "flow": 879, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784564622.0, + "p_ref": 0.85, + "flow": 430, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784565691.0, + "p_ref": 0.6, + "flow": 664, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114095668846699060644654664216491315413716263539435717524493868643343899311884", + "ts": 1784566598.0, + "p_ref": 0.34, + "flow": 416, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784531154.0, + "p_ref": 0.5399999997999103, + "flow": 1026, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784533467.0, + "p_ref": 0.53, + "flow": 385, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784550994.0, + "p_ref": 0.54, + "flow": 1084, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784562089.0, + "p_ref": 0.53, + "flow": 546, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784563457.0, + "p_ref": 0.53, + "flow": 314, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784564385.0, + "p_ref": 0.5399999675999938, + "flow": 2133, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114105681736902803949342787091789710436412816922634293834551848268869151276996", + "ts": 1784565372.0, + "p_ref": 0.54, + "flow": 449, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "114119170018943555129367402707851201616901921451806712822134272639705797828269", + "ts": 1784555691.0, + "p_ref": 0.5100000001383529, + "flow": 885, + "title": "Las Vegas Aces vs. Toronto Tempo: O/U 183.5" + }, + { + "asset": "114692280631324549361092811971596480515926209975801772420940382417974476304289", + "ts": 1784549155.0, + "p_ref": 0.3899999999526996, + "flow": 1979, + "title": "Chicago White Sox vs. Texas Rangers" + }, + { + "asset": "114692280631324549361092811971596480515926209975801772420940382417974476304289", + "ts": 1784557345.0, + "p_ref": 0.39, + "flow": 2843, + "title": "Chicago White Sox vs. Texas Rangers" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784539119.0, + "p_ref": 0.41, + "flow": 1600, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784546164.0, + "p_ref": 0.4, + "flow": 2101, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784547607.0, + "p_ref": 0.38, + "flow": 343, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784553320.0, + "p_ref": 0.37, + "flow": 351, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784554225.0, + "p_ref": 0.4299999791789462, + "flow": 8581, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784555184.0, + "p_ref": 0.53, + "flow": 372, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784556145.0, + "p_ref": 0.7200000121550392, + "flow": 321, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784557127.0, + "p_ref": 0.4900000001891915, + "flow": 678, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784558097.0, + "p_ref": 0.57, + "flow": 405, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784559132.0, + "p_ref": 0.1, + "flow": 461, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114974641352614683795244519115215840094202605711947510793337749395138382875195", + "ts": 1784560036.0, + "p_ref": 0.1, + "flow": 308, + "title": "Generali Open: Facundo Acosta vs Federico Cina" + }, + { + "asset": "114993419886075470629792584555619465209998530181281891256121169935765933418481", + "ts": 1784560355.0, + "p_ref": 0.46, + "flow": 526, + "title": "Set 1 Winner: Podoroska vs Stusek" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784520296.0, + "p_ref": 0.5430000003193293, + "flow": 674, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784547696.0, + "p_ref": 0.616, + "flow": 300, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784549873.0, + "p_ref": 0.851, + "flow": 2036, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784550773.0, + "p_ref": 0.6979999920426266, + "flow": 9888, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784551718.0, + "p_ref": 0.74, + "flow": 2459, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784552776.0, + "p_ref": 0.774, + "flow": 301, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115275046615169453978963421593353423798436224869299420091035932982910024054473", + "ts": 1784553766.0, + "p_ref": 0.7230000047534741, + "flow": 351, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "115287503874683144821239592391057338329475246352843233930944035600914647304780", + "ts": 1784564351.0, + "p_ref": 0.86, + "flow": 430, + "title": "Kalmar FF vs. Malmo FF: Malmo FF 1st Half O/U 1.5" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784559828.0, + "p_ref": 0.81, + "flow": 859, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784561789.0, + "p_ref": 0.8, + "flow": 1460, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784562690.0, + "p_ref": 0.87, + "flow": 1866, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784564359.0, + "p_ref": 0.9, + "flow": 1693, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784565260.0, + "p_ref": 0.84, + "flow": 1547, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "115680764241751924272438580035343982316678089466055791670726234038254390523651", + "ts": 1784566253.0, + "p_ref": 0.86, + "flow": 564, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "12321861167119203498860265376313227135592003395120072433361608752369507498662", + "ts": 1784557230.0, + "p_ref": 0.4, + "flow": 456, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 1 Winner" + }, + { + "asset": "12321861167119203498860265376313227135592003395120072433361608752369507498662", + "ts": 1784558328.0, + "p_ref": 0.43, + "flow": 353, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 1 Winner" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784514001.0, + "p_ref": 0.67, + "flow": 333, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784522888.0, + "p_ref": 0.6700000007723405, + "flow": 382, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784533651.0, + "p_ref": 0.689999999812137, + "flow": 331, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784538776.0, + "p_ref": 0.73, + "flow": 478, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784540153.0, + "p_ref": 0.61, + "flow": 389, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13126280422809185128202988798735790152786639837420219664273421325776761418860", + "ts": 1784541137.0, + "p_ref": 0.19, + "flow": 308, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "13452292003946873793050780276965875955412032442585173870259833616184570324655", + "ts": 1784535252.0, + "p_ref": 0.79, + "flow": 2035, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "13452292003946873793050780276965875955412032442585173870259833616184570324655", + "ts": 1784536287.0, + "p_ref": 0.44, + "flow": 837, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "13452292003946873793050780276965875955412032442585173870259833616184570324655", + "ts": 1784537690.0, + "p_ref": 0.3100000000169537, + "flow": 751, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "13452292003946873793050780276965875955412032442585173870259833616184570324655", + "ts": 1784539259.0, + "p_ref": 0.71, + "flow": 1470, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "13452292003946873793050780276965875955412032442585173870259833616184570324655", + "ts": 1784540416.0, + "p_ref": 0.84, + "flow": 416, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "13642597762253898789989173213414379702126820479792105498418664377478382070002", + "ts": 1784539432.0, + "p_ref": 0.57, + "flow": 551, + "title": "Vit Kopriva vs. Ignacio Buse: Total Sets O/U 2.5" + }, + { + "asset": "13654783132576610512569032837674314214607989221400949388063245798681935327771", + "ts": 1784506668.0, + "p_ref": 0.68, + "flow": 452, + "title": "Club Alianza Lima vs. CS Huancayo: 1st Half O/U 0.5" + }, + { + "asset": "14020736258156424721685450127830315261405393374942915020527399140112254069079", + "ts": 1784536790.0, + "p_ref": 0.61, + "flow": 300, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "14020736258156424721685450127830315261405393374942915020527399140112254069079", + "ts": 1784537751.0, + "p_ref": 0.6448809523809524, + "flow": 324, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "14425106726655164947109603006755575458925851564396049298755855204793208160881", + "ts": 1784535962.0, + "p_ref": 0.54, + "flow": 617, + "title": "Chiba Lotte Marines vs. Fukuoka SoftBank Hawks" + }, + { + "asset": "14973222358866021236973132131961458837641181909426355519881603801457927032759", + "ts": 1784556766.0, + "p_ref": 0.527, + "flow": 332, + "title": "Tampere: Gauthier Onclin vs Duje Ajdukovic" + }, + { + "asset": "15084069273490857168494866305626421890312671355159017486677878519188444909105", + "ts": 1784512417.0, + "p_ref": 0.63, + "flow": 355, + "title": "Palermo: Tamara Zidansek vs Alevtina Ibragimova" + }, + { + "asset": "15349473165536391154387568076003156610421051323693093540273589498101724161212", + "ts": 1784561138.0, + "p_ref": 0.57, + "flow": 570, + "title": "Dota 2: Spirit Academy vs Team Jenz (BO3) - EPL Masters Play" + }, + { + "asset": "15349473165536391154387568076003156610421051323693093540273589498101724161212", + "ts": 1784565806.0, + "p_ref": 0.46, + "flow": 343, + "title": "Dota 2: Spirit Academy vs Team Jenz (BO3) - EPL Masters Play" + }, + { + "asset": "15834620687959181607953538214258045943194854364059546316874199833526834234261", + "ts": 1784531024.0, + "p_ref": 0.4600000001996314, + "flow": 323, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "15834620687959181607953538214258045943194854364059546316874199833526834234261", + "ts": 1784532209.0, + "p_ref": 0.477, + "flow": 374, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "15834620687959181607953538214258045943194854364059546316874199833526834234261", + "ts": 1784560738.0, + "p_ref": 0.48850622406639, + "flow": 360, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "15934428817788456911170937378163980963773398567711126443235789595555637126565", + "ts": 1784520723.0, + "p_ref": 0.43, + "flow": 304, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 4 Winner" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784526720.0, + "p_ref": 0.394, + "flow": 581, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784533848.0, + "p_ref": 0.3899999996255667, + "flow": 562, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784549484.0, + "p_ref": 0.338, + "flow": 542, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784550432.0, + "p_ref": 0.410000000248978, + "flow": 581, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784551501.0, + "p_ref": 0.53, + "flow": 319, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784552687.0, + "p_ref": 0.491, + "flow": 403, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784553956.0, + "p_ref": 0.867, + "flow": 377, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16035861182193063907824649608439476576571549786183597650844811199433010724663", + "ts": 1784554861.0, + "p_ref": 0.8730000130748853, + "flow": 5741, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "16222352726955040514864209342190050863913636272479583528722027107609156934089", + "ts": 1784505857.0, + "p_ref": 0.77, + "flow": 350, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK - Map 2 Winner" + }, + { + "asset": "16222352726955040514864209342190050863913636272479583528722027107609156934089", + "ts": 1784506820.0, + "p_ref": 0.53, + "flow": 333, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK - Map 2 Winner" + }, + { + "asset": "16525299413609011162406728414883410625578846922900573123173857755264689517448", + "ts": 1784563177.0, + "p_ref": 0.48, + "flow": 613, + "title": "Orgryte IS vs. Djurgardens IF: O/U 3.5" + }, + { + "asset": "16761121150219276707697670763142895290285873556617550626735909960996863135330", + "ts": 1784559246.0, + "p_ref": 0.41, + "flow": 376, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "16761121150219276707697670763142895290285873556617550626735909960996863135330", + "ts": 1784560298.0, + "p_ref": 0.46, + "flow": 305, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "16761121150219276707697670763142895290285873556617550626735909960996863135330", + "ts": 1784561366.0, + "p_ref": 0.39, + "flow": 353, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "16761121150219276707697670763142895290285873556617550626735909960996863135330", + "ts": 1784562760.0, + "p_ref": 0.3700000049304349, + "flow": 326, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "17355116596771900561046746042786984666892569214048145448075766375690032040985", + "ts": 1784539196.0, + "p_ref": 0.73, + "flow": 1150, + "title": "Will Kalmar FF vs. Malmo FF end in a draw?" + }, + { + "asset": "17568992653693930244378133238620931146571587308360648099596033298965066178468", + "ts": 1784541925.0, + "p_ref": 0.48, + "flow": 4276, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "17943604029185473208319076434870760044080259514519718418418868031249799941110", + "ts": 1784554407.0, + "p_ref": 0.43, + "flow": 584, + "title": "St. Louis Cardinals vs. Los Angeles Angels: O/U 9.5" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784512937.0, + "p_ref": 0.6, + "flow": 300, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784533403.0, + "p_ref": 0.59, + "flow": 472, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784537175.0, + "p_ref": 0.59, + "flow": 408, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784539045.0, + "p_ref": 0.58, + "flow": 2708, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784542015.0, + "p_ref": 0.609999998475, + "flow": 338, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784560477.0, + "p_ref": 0.59, + "flow": 590, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18116915018304209127222775214646157966864161657369213186630217642429842713225", + "ts": 1784561930.0, + "p_ref": 0.57, + "flow": 812, + "title": "Hamburg European Open: Katarzyna Kawa vs Paula Badosa" + }, + { + "asset": "18131210291149904247830692839833530548769536024553806909241678304462257681624", + "ts": 1784521257.0, + "p_ref": 0.38, + "flow": 464, + "title": "Livesport Prague Open: Anna Blinkova vs Sara Bejlek" + }, + { + "asset": "19261810052064756286302195427628427438597227773294690024671782686283145434323", + "ts": 1784549399.0, + "p_ref": 0.75, + "flow": 507, + "title": "Generali Open (Doubles): Etcheverry/Kestelboim vs Balaji/Gor" + }, + { + "asset": "20186870294824565154598397906815690416681794808912914345064233837487860077897", + "ts": 1784557434.0, + "p_ref": 0.47, + "flow": 322, + "title": "Set 2 Winner: Quevedo vs Kalinina" + }, + { + "asset": "20314872157861840248043654144439888590561141518949036122976155012150472671953", + "ts": 1784563322.0, + "p_ref": 0.47000000053, + "flow": 355, + "title": "Silva vs. Assche: Match O/U 23.5" + }, + { + "asset": "20701415953240553297805485186126897964873193894000779972820717187065720252908", + "ts": 1784544394.0, + "p_ref": 0.55, + "flow": 502, + "title": "Neumayer vs. Hanfmann: Match O/U 21.5" + }, + { + "asset": "20701415953240553297805485186126897964873193894000779972820717187065720252908", + "ts": 1784550101.0, + "p_ref": 0.7392412765822584, + "flow": 458, + "title": "Neumayer vs. Hanfmann: Match O/U 21.5" + }, + { + "asset": "20744414362161416464898717708384193119716370122378943792807928799446825842802", + "ts": 1784550691.0, + "p_ref": 0.7685982678214524, + "flow": 301, + "title": "Estoril Open (Doubles): Hidalgo/Tabilo vs Nam/Yuzuki" + }, + { + "asset": "21144672333722479512124221007900186474838442983355804862789059596447325024320", + "ts": 1784506727.0, + "p_ref": 0.7, + "flow": 409, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK (BO3) - CCT South" + }, + { + "asset": "21304104801996520923782794330232320580960189962459200035300046423137788076294", + "ts": 1784557210.0, + "p_ref": 0.18, + "flow": 475, + "title": "Kalmar FF vs. Malmo FF: Malmo FF O/U 0.5" + }, + { + "asset": "21304104801996520923782794330232320580960189962459200035300046423137788076294", + "ts": 1784561559.0, + "p_ref": 0.19, + "flow": 393, + "title": "Kalmar FF vs. Malmo FF: Malmo FF O/U 0.5" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784517888.0, + "p_ref": 0.3, + "flow": 1188, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784532401.0, + "p_ref": 0.270000000211879, + "flow": 306, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784541519.0, + "p_ref": 0.26, + "flow": 480, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784543239.0, + "p_ref": 0.25, + "flow": 719, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784545772.0, + "p_ref": 0.25, + "flow": 512, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784546841.0, + "p_ref": 0.2399999883428569, + "flow": 346, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "21977300945189369115778783994563849138532148067933480729528865713685277107578", + "ts": 1784547761.0, + "p_ref": 0.49, + "flow": 379, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "22579798850196929673623871709128355788760992349555938308299044087957497061349", + "ts": 1784552756.0, + "p_ref": 0.7200000008873504, + "flow": 566, + "title": "Orgryte IS vs. Djurgardens IF: O/U 4.5" + }, + { + "asset": "22579798850196929673623871709128355788760992349555938308299044087957497061349", + "ts": 1784563192.0, + "p_ref": 0.72, + "flow": 473, + "title": "Orgryte IS vs. Djurgardens IF: O/U 4.5" + }, + { + "asset": "22590001224829162615688297929455107934615004887910700130908817619174874858083", + "ts": 1784547629.0, + "p_ref": 0.55, + "flow": 353, + "title": "Counter-Strike: ARCRED vs 1WIN - Map 2 Winner" + }, + { + "asset": "22590001224829162615688297929455107934615004887910700130908817619174874858083", + "ts": 1784548531.0, + "p_ref": 0.6293152, + "flow": 360, + "title": "Counter-Strike: ARCRED vs 1WIN - Map 2 Winner" + }, + { + "asset": "22857466825815212651756832771822137758657360752490887634215287889761199649282", + "ts": 1784563517.0, + "p_ref": 0.8199999999829474, + "flow": 1189, + "title": "Kalmar FF vs. Malmo FF: Kalmar FF O/U 2.5" + }, + { + "asset": "23220436772693109875045254760239807690938597269361834557245327709182478054886", + "ts": 1784553502.0, + "p_ref": 0.4500000003948637, + "flow": 399, + "title": "Set 1 Winner: Schwaerzler vs Rodionov" + }, + { + "asset": "23223298172597134497291010280641361739800681909026403850764755297932236646989", + "ts": 1784531822.0, + "p_ref": 0.8300000007458065, + "flow": 757, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "23223298172597134497291010280641361739800681909026403850764755297932236646989", + "ts": 1784538552.0, + "p_ref": 0.82, + "flow": 844, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "23223298172597134497291010280641361739800681909026403850764755297932236646989", + "ts": 1784539595.0, + "p_ref": 0.6, + "flow": 456, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "23223298172597134497291010280641361739800681909026403850764755297932236646989", + "ts": 1784540983.0, + "p_ref": 0.77, + "flow": 318, + "title": "Generali Open: Alexandre Muller vs Mariano Navone" + }, + { + "asset": "23406379595150714010651467753738007375370432560743544804752860123632199695233", + "ts": 1784506158.0, + "p_ref": 0.32, + "flow": 893, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "23406379595150714010651467753738007375370432560743544804752860123632199695233", + "ts": 1784538661.0, + "p_ref": 0.26, + "flow": 696, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "23406379595150714010651467753738007375370432560743544804752860123632199695233", + "ts": 1784540156.0, + "p_ref": 0.39, + "flow": 313, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "23406379595150714010651467753738007375370432560743544804752860123632199695233", + "ts": 1784541115.0, + "p_ref": 0.799055944055944, + "flow": 422, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "23406379595150714010651467753738007375370432560743544804752860123632199695233", + "ts": 1784542175.0, + "p_ref": 0.64, + "flow": 324, + "title": "Livesport Prague Open: Alisa Oktiabreva vs Oceane Dodin" + }, + { + "asset": "24394626451699110780456251091015147064338106225570972483178098858086284613860", + "ts": 1784536273.0, + "p_ref": 0.4800000002288, + "flow": 923, + "title": "Niemeier vs. Malygina: Match O/U 21.5" + }, + { + "asset": "24433098137205673436970466078514381211158045798739147927145053648687044475111", + "ts": 1784538804.0, + "p_ref": 0.53999999976611, + "flow": 831, + "title": "Estoril Open: Jan Choinski vs Jesper de Jong" + }, + { + "asset": "24487055931297533759924683185352783064710961894004523449547991874317917988875", + "ts": 1784555597.0, + "p_ref": 0.3810000000878561, + "flow": 883, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "24487055931297533759924683185352783064710961894004523449547991874317917988875", + "ts": 1784557445.0, + "p_ref": 0.3600000003572162, + "flow": 479, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "24487055931297533759924683185352783064710961894004523449547991874317917988875", + "ts": 1784561427.0, + "p_ref": 0.469063829787234, + "flow": 345, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "24487055931297533759924683185352783064710961894004523449547991874317917988875", + "ts": 1784562769.0, + "p_ref": 0.5400000014627374, + "flow": 303, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "24487055931297533759924683185352783064710961894004523449547991874317917988875", + "ts": 1784563731.0, + "p_ref": 0.373, + "flow": 306, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "24718284778020203142392468511664471003874414292803227447928214721150383155850", + "ts": 1784546015.0, + "p_ref": 0.46, + "flow": 460, + "title": "Set 1 Winner: Vedder vs Barthel" + }, + { + "asset": "25531936784138191229730125043156264286083614969834741298237867045029628073814", + "ts": 1784556973.0, + "p_ref": 0.5, + "flow": 1014, + "title": "New York Liberty vs. Dallas Wings: O/U 176.5" + }, + { + "asset": "25548299380888304892246088754340542501927874445080074506065701612340869340419", + "ts": 1784549454.0, + "p_ref": 0.8, + "flow": 800, + "title": "Jeju SK FC vs. Gangwon FC: O/U 3.5" + }, + { + "asset": "25657703748441431897494491290327738899223397378355724674840038357088727645887", + "ts": 1784535588.0, + "p_ref": 0.8200000007698888, + "flow": 852, + "title": "Bloomfield Hills: Blaise Bicknell vs Adam Walton" + }, + { + "asset": "26384307293278920451724341213781812089082103148057639979398609320892977483547", + "ts": 1784514731.0, + "p_ref": 0.51, + "flow": 474, + "title": "Washington Nationals vs. Colorado Rockies: O/U 11.5" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784543535.0, + "p_ref": 0.4498672204003452, + "flow": 2204, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784544715.0, + "p_ref": 0.530045045045045, + "flow": 367, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784547216.0, + "p_ref": 0.6699999997750671, + "flow": 434, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784548959.0, + "p_ref": 0.51, + "flow": 329, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784551839.0, + "p_ref": 0.5, + "flow": 505, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2656321684999827065396048678201101709581447050580115452089311301373449959081", + "ts": 1784552749.0, + "p_ref": 0.41, + "flow": 437, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "2667219707135129561987979229202098486440282014039358445918714099833285910833", + "ts": 1784544876.0, + "p_ref": 0.6500000059597524, + "flow": 302, + "title": "Hamburg European Open: Tessa Brockmann vs Elsa Jacquemot" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784516228.0, + "p_ref": 0.46, + "flow": 836, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784517320.0, + "p_ref": 0.46, + "flow": 1292, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784546473.0, + "p_ref": 0.46, + "flow": 1093, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784547639.0, + "p_ref": 0.46, + "flow": 4025, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784548971.0, + "p_ref": 0.45, + "flow": 1185, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784550166.0, + "p_ref": 0.45, + "flow": 360, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784551402.0, + "p_ref": 0.45, + "flow": 414, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784552492.0, + "p_ref": 0.74, + "flow": 382, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784553407.0, + "p_ref": 0.68, + "flow": 4449, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784554359.0, + "p_ref": 0.6, + "flow": 539, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784555263.0, + "p_ref": 0.47, + "flow": 2417, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784556167.0, + "p_ref": 0.56, + "flow": 456, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784557117.0, + "p_ref": 0.75, + "flow": 4896, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "26991140052047518540840463075421801383681329492727659806462587228069545805423", + "ts": 1784558027.0, + "p_ref": 0.5, + "flow": 309, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "27375504533407994461168343676763789259036556531198718737277591103222729202476", + "ts": 1784550232.0, + "p_ref": 0.4, + "flow": 589, + "title": "Baltimore Orioles vs. Boston Red Sox: O/U 9.5" + }, + { + "asset": "2765066811915574491293256085803306970530246120025836537017506233694192123117", + "ts": 1784548594.0, + "p_ref": 0.7299999999411401, + "flow": 1860, + "title": "Hamburg European Open: Anna Bondar vs Moyuka Uchijima" + }, + { + "asset": "28387779491029930265525976370131078862272618076437750189458357418579288673338", + "ts": 1784542568.0, + "p_ref": 0.63, + "flow": 588, + "title": "Set 1 Winner: Lys vs Valentova" + }, + { + "asset": "28397060604258756541347964246280808306013553161530536816187595730739314962014", + "ts": 1784552744.0, + "p_ref": 0.58, + "flow": 571, + "title": "Orgryte IS vs. Djurgardens IF: Both Teams to Score" + }, + { + "asset": "28397060604258756541347964246280808306013553161530536816187595730739314962014", + "ts": 1784564804.0, + "p_ref": 0.59, + "flow": 360, + "title": "Orgryte IS vs. Djurgardens IF: Both Teams to Score" + }, + { + "asset": "28958165430668727813526532670745642809698231680142755012579685894126709470114", + "ts": 1784559756.0, + "p_ref": 0.39, + "flow": 319, + "title": "FC Sheriff Tiraspol vs. MH Maccabi Tel Aviv: O/U 2.5" + }, + { + "asset": "29033659329397738605494628954149408912769188360219018846645720622230169613862", + "ts": 1784511200.0, + "p_ref": 0.42, + "flow": 363, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 3.5" + }, + { + "asset": "29033659329397738605494628954149408912769188360219018846645720622230169613862", + "ts": 1784512128.0, + "p_ref": 0.6700002178000741, + "flow": 671, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 3.5" + }, + { + "asset": "29042615217651480036082556242910115534408149417175810146514048491159287532399", + "ts": 1784517600.0, + "p_ref": 0.9, + "flow": 465, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "29042615217651480036082556242910115534408149417175810146514048491159287532399", + "ts": 1784563778.0, + "p_ref": 0.7600000009, + "flow": 507, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "29067366822734929159634406193888039913022776831759228576032030202417024353718", + "ts": 1784554369.0, + "p_ref": 0.56, + "flow": 344, + "title": "Los Angeles Dodgers vs. Philadelphia Phillies" + }, + { + "asset": "30113732854895999293928943781260308460500449324595111828225833879524832023153", + "ts": 1784509740.0, + "p_ref": 0.59, + "flow": 405, + "title": "Palermo: Alice Rame vs Anastasia Tikhonova" + }, + { + "asset": "30445253551174550623153212241451639815802548672767881136236197952221917796564", + "ts": 1784508841.0, + "p_ref": 0.4000000000616209, + "flow": 1298, + "title": "Livesport Prague Open: Laura Samson vs Maya Joint" + }, + { + "asset": "30589633879554970393072109970022332978433084759063625330482309746402050606846", + "ts": 1784515259.0, + "p_ref": 0.7332977149912928, + "flow": 1957, + "title": "Dota 2: Team Lynx vs PuckChamp (BO3) - EPL Masters Play-In G" + }, + { + "asset": "30589633879554970393072109970022332978433084759063625330482309746402050606846", + "ts": 1784544117.0, + "p_ref": 0.53, + "flow": 302, + "title": "Dota 2: Team Lynx vs PuckChamp (BO3) - EPL Masters Play-In G" + }, + { + "asset": "30589633879554970393072109970022332978433084759063625330482309746402050606846", + "ts": 1784545669.0, + "p_ref": 0.4, + "flow": 301, + "title": "Dota 2: Team Lynx vs PuckChamp (BO3) - EPL Masters Play-In G" + }, + { + "asset": "30706996966871954492581506454643824734682268379604453400681643919651652087993", + "ts": 1784558884.0, + "p_ref": 0.540000000184, + "flow": 587, + "title": "Set 1 Winner: Ruzic vs Salkova" + }, + { + "asset": "30706996966871954492581506454643824734682268379604453400681643919651652087993", + "ts": 1784560189.0, + "p_ref": 0.6, + "flow": 747, + "title": "Set 1 Winner: Ruzic vs Salkova" + }, + { + "asset": "30706996966871954492581506454643824734682268379604453400681643919651652087993", + "ts": 1784561666.0, + "p_ref": 0.58, + "flow": 626, + "title": "Set 1 Winner: Ruzic vs Salkova" + }, + { + "asset": "30804883294465919586424786018264327329800414840182933271519247231450137606422", + "ts": 1784543819.0, + "p_ref": 0.383, + "flow": 307, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "30804883294465919586424786018264327329800414840182933271519247231450137606422", + "ts": 1784545068.0, + "p_ref": 0.41, + "flow": 1080, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "30804883294465919586424786018264327329800414840182933271519247231450137606422", + "ts": 1784546147.0, + "p_ref": 0.5, + "flow": 489, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "30804883294465919586424786018264327329800414840182933271519247231450137606422", + "ts": 1784547473.0, + "p_ref": 0.197, + "flow": 449, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "30804883294465919586424786018264327329800414840182933271519247231450137606422", + "ts": 1784549051.0, + "p_ref": 0.406000000098547, + "flow": 1368, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "31223530986599334752000765505525242674375598743249969163993876524991211976693", + "ts": 1784509722.0, + "p_ref": 0.34, + "flow": 365, + "title": "Palermo: Federica Urgesi vs Elizara Yaneva" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784513677.0, + "p_ref": 0.56, + "flow": 312, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784516716.0, + "p_ref": 0.51, + "flow": 311, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784519270.0, + "p_ref": 0.51, + "flow": 327, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784526703.0, + "p_ref": 0.51, + "flow": 336, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784527941.0, + "p_ref": 0.51, + "flow": 352, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784530201.0, + "p_ref": 0.51, + "flow": 315, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31382685991098616034797182530587649970248274270149190558703959055613864598586", + "ts": 1784540074.0, + "p_ref": 0.51, + "flow": 306, + "title": "LoL: 3v Team vs NCG Esports (BO3) - LRN Regular season" + }, + { + "asset": "31871796057840131343988693038845974513394216428521994904895989217671670326385", + "ts": 1784505926.0, + "p_ref": 0.44, + "flow": 397, + "title": "Estoril Open: Botic van de Zandschulp vs Jaime Faria" + }, + { + "asset": "32550021978079579385906743073206184350879774978190521461180810268134075897970", + "ts": 1784506643.0, + "p_ref": 0.25, + "flow": 635, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "32550021978079579385906743073206184350879774978190521461180810268134075897970", + "ts": 1784507761.0, + "p_ref": 0.21, + "flow": 721, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "32550021978079579385906743073206184350879774978190521461180810268134075897970", + "ts": 1784508789.0, + "p_ref": 0.15, + "flow": 373, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "32821537298990463874676430013701287200827986705402380333078497408431186183200", + "ts": 1784548594.0, + "p_ref": 0.2700000000621073, + "flow": 652, + "title": "Hamburg European Open: Anna Bondar vs Moyuka Uchijima" + }, + { + "asset": "32821537298990463874676430013701287200827986705402380333078497408431186183200", + "ts": 1784565374.0, + "p_ref": 0.26, + "flow": 565, + "title": "Hamburg European Open: Anna Bondar vs Moyuka Uchijima" + }, + { + "asset": "32852989155567521462107278237968161717785635067675701892208416866751789744635", + "ts": 1784554371.0, + "p_ref": 0.37, + "flow": 303, + "title": "Counter-Strike: Misa Esports vs Lilmix (BO3) - NODWIN Clutch" + }, + { + "asset": "32852989155567521462107278237968161717785635067675701892208416866751789744635", + "ts": 1784563184.0, + "p_ref": 0.36, + "flow": 378, + "title": "Counter-Strike: Misa Esports vs Lilmix (BO3) - NODWIN Clutch" + }, + { + "asset": "33050034688710822677383394188105882498084963965620685519865956661313972875182", + "ts": 1784551268.0, + "p_ref": 0.38, + "flow": 308, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "33050034688710822677383394188105882498084963965620685519865956661313972875182", + "ts": 1784562895.0, + "p_ref": 0.68, + "flow": 359, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "33050034688710822677383394188105882498084963965620685519865956661313972875182", + "ts": 1784564106.0, + "p_ref": 0.3588895, + "flow": 370, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "33060030984621146342544637032703740695242177850291678208434680246171113833773", + "ts": 1784535302.0, + "p_ref": 0.4, + "flow": 400, + "title": "Set 1 Winner: Sherif vs Badosa" + }, + { + "asset": "33060030984621146342544637032703740695242177850291678208434680246171113833773", + "ts": 1784537099.0, + "p_ref": 0.81, + "flow": 626, + "title": "Set 1 Winner: Sherif vs Badosa" + }, + { + "asset": "33101959189121670181404584707587331022417198295151759470003810043974360338336", + "ts": 1784563592.0, + "p_ref": 0.66, + "flow": 367, + "title": "Counter-Strike: paiN Academy vs Guara Esports - Map 1 Winner" + }, + { + "asset": "33348946682743693583880024946878628429051619023790583555290427677032585881292", + "ts": 1784538598.0, + "p_ref": 0.72, + "flow": 459, + "title": "Valorant: TEC Esports vs All Gamers (BO3) - VCT China Stage " + }, + { + "asset": "33348946682743693583880024946878628429051619023790583555290427677032585881292", + "ts": 1784541166.0, + "p_ref": 0.79, + "flow": 634, + "title": "Valorant: TEC Esports vs All Gamers (BO3) - VCT China Stage " + }, + { + "asset": "33348946682743693583880024946878628429051619023790583555290427677032585881292", + "ts": 1784542891.0, + "p_ref": 0.8128, + "flow": 337, + "title": "Valorant: TEC Esports vs All Gamers (BO3) - VCT China Stage " + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784542783.0, + "p_ref": 0.7100000002980329, + "flow": 1577, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784543790.0, + "p_ref": 0.75, + "flow": 413, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784544984.0, + "p_ref": 0.72, + "flow": 1956, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784546895.0, + "p_ref": 0.84, + "flow": 556, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784547960.0, + "p_ref": 0.9, + "flow": 1123, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784549389.0, + "p_ref": 0.9, + "flow": 376, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "3407848541920227762738987551752676667853853392986552539141713033767488263189", + "ts": 1784550829.0, + "p_ref": 0.890000003784, + "flow": 354, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "34331571132086921332941222246408456585930194107125320088489784073196389896429", + "ts": 1784505789.0, + "p_ref": 0.9, + "flow": 625, + "title": "NBA Summer League: Toronto Raptors vs. Denver Nuggets" + }, + { + "asset": "34414949809581772283433187277923831526502273449360585145251409338215291104491", + "ts": 1784553818.0, + "p_ref": 0.55, + "flow": 384, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "34414949809581772283433187277923831526502273449360585145251409338215291104491", + "ts": 1784556356.0, + "p_ref": 0.6, + "flow": 307, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "34414949809581772283433187277923831526502273449360585145251409338215291104491", + "ts": 1784561360.0, + "p_ref": 0.18, + "flow": 386, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports (BO3) - CCT E" + }, + { + "asset": "34505370851071616380546637306065219112554238544606122358194544667487274912530", + "ts": 1784566643.0, + "p_ref": 0.46, + "flow": 483, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "34875340809313245277458592033016442580274492204560566792663390674316296203111", + "ts": 1784552669.0, + "p_ref": 0.61, + "flow": 305, + "title": "Kalmar FF vs. Malmo FF: 1st Half O/U 1.5" + }, + { + "asset": "34875340809313245277458592033016442580274492204560566792663390674316296203111", + "ts": 1784563490.0, + "p_ref": 0.6099999998761673, + "flow": 354, + "title": "Kalmar FF vs. Malmo FF: 1st Half O/U 1.5" + }, + { + "asset": "34875340809313245277458592033016442580274492204560566792663390674316296203111", + "ts": 1784564510.0, + "p_ref": 0.63, + "flow": 632, + "title": "Kalmar FF vs. Malmo FF: 1st Half O/U 1.5" + }, + { + "asset": "35674298742916882468201245384469989807908815406740575330084491601702913112865", + "ts": 1784564466.0, + "p_ref": 0.48, + "flow": 699, + "title": "New York Liberty vs. Dallas Wings: O/U 175.5" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784505691.0, + "p_ref": 0.46, + "flow": 580, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784506592.0, + "p_ref": 0.5, + "flow": 1360, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784508163.0, + "p_ref": 0.47, + "flow": 361, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784509530.0, + "p_ref": 0.37, + "flow": 408, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784510443.0, + "p_ref": 0.24, + "flow": 624, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784511455.0, + "p_ref": 0.58, + "flow": 346, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784512355.0, + "p_ref": 0.11, + "flow": 4823, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "3587670970497739504020538440137063666354003758460407926851276777236940779401", + "ts": 1784513383.0, + "p_ref": 0.2, + "flow": 387, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "35941177313114802241656844903755746327970467535837465430852761551639322402786", + "ts": 1784544715.0, + "p_ref": 0.6687962962962963, + "flow": 321, + "title": "Counter-Strike: ARCRED vs 1WIN - Map 1 Winner" + }, + { + "asset": "35979098333564516807632219871622639036025846836032916966458431541996123093744", + "ts": 1784505829.0, + "p_ref": 0.48, + "flow": 1777, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 7.5" + }, + { + "asset": "35979098333564516807632219871622639036025846836032916966458431541996123093744", + "ts": 1784507868.0, + "p_ref": 0.31, + "flow": 315, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 7.5" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784527776.0, + "p_ref": 0.6300000006438651, + "flow": 538, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784555158.0, + "p_ref": 0.62, + "flow": 572, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784556133.0, + "p_ref": 0.63, + "flow": 648, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784557840.0, + "p_ref": 0.63, + "flow": 359, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784558764.0, + "p_ref": 0.7, + "flow": 3501, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784559940.0, + "p_ref": 0.67, + "flow": 339, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784560939.0, + "p_ref": 0.63, + "flow": 643, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784562000.0, + "p_ref": 0.8900000968000116, + "flow": 8446, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784562938.0, + "p_ref": 0.8, + "flow": 374, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784563975.0, + "p_ref": 0.82, + "flow": 302, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784564937.0, + "p_ref": 0.6, + "flow": 1094, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36134855319954907732404195833091632830022107006746626473158627621776070068391", + "ts": 1784565956.0, + "p_ref": 0.79, + "flow": 331, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "36333864303591223241239964471251202154089697885497755738383632576987885998141", + "ts": 1784561446.0, + "p_ref": 0.6199999999065517, + "flow": 1065, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 2 Winner" + }, + { + "asset": "36333864303591223241239964471251202154089697885497755738383632576987885998141", + "ts": 1784563133.0, + "p_ref": 0.78, + "flow": 319, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 2 Winner" + }, + { + "asset": "36491513042264076474307913729879702560097428933188670962518021994452840734971", + "ts": 1784544425.0, + "p_ref": 0.53, + "flow": 468, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784548077.0, + "p_ref": 0.58, + "flow": 317, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784549838.0, + "p_ref": 0.69, + "flow": 338, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784550898.0, + "p_ref": 0.6495547073791349, + "flow": 552, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784551913.0, + "p_ref": 0.69, + "flow": 308, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784552973.0, + "p_ref": 0.43, + "flow": 964, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784553928.0, + "p_ref": 0.55, + "flow": 310, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784554838.0, + "p_ref": 0.39, + "flow": 313, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36508999838386344995204664080955195517737024475419935308020294470919166364047", + "ts": 1784556275.0, + "p_ref": 0.56, + "flow": 352, + "title": "Valorant: Bilibili Gaming vs XLG Gaming (BO3) - VCT China St" + }, + { + "asset": "36641867084442931531420157271206700257561284814486999271110515308466371174719", + "ts": 1784552731.0, + "p_ref": 0.53, + "flow": 312, + "title": "Orgryte IS vs. Djurgardens IF: 1st Half O/U 1.5" + }, + { + "asset": "36641867084442931531420157271206700257561284814486999271110515308466371174719", + "ts": 1784566517.0, + "p_ref": 0.52, + "flow": 314, + "title": "Orgryte IS vs. Djurgardens IF: 1st Half O/U 1.5" + }, + { + "asset": "36756373366168648454007533437162704460561803521701488738771285242316395067648", + "ts": 1784546015.0, + "p_ref": 0.54, + "flow": 540, + "title": "Set 1 Winner: Vedder vs Barthel" + }, + { + "asset": "37197591417254155529953459329833437229040317016371161761502568762223571884759", + "ts": 1784535054.0, + "p_ref": 0.451, + "flow": 361, + "title": "Bloomfield Hills: Alexis Galarneau vs Pablo Llamas Ruiz" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784508798.0, + "p_ref": 0.78, + "flow": 339, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784510765.0, + "p_ref": 0.77, + "flow": 701, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784512949.0, + "p_ref": 0.8, + "flow": 343, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784515604.0, + "p_ref": 0.51, + "flow": 381, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784516527.0, + "p_ref": 0.5196758104738155, + "flow": 493, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784517568.0, + "p_ref": 0.29, + "flow": 300, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784518639.0, + "p_ref": 0.59, + "flow": 306, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784519547.0, + "p_ref": 0.55, + "flow": 310, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784521155.0, + "p_ref": 0.41, + "flow": 331, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784522068.0, + "p_ref": 0.55, + "flow": 407, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784523022.0, + "p_ref": 0.64, + "flow": 315, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784523925.0, + "p_ref": 0.660000002628578, + "flow": 1247, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784525133.0, + "p_ref": 0.49, + "flow": 313, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37466384260797909059670252074331953387698169870831582913485927234666208598138", + "ts": 1784526514.0, + "p_ref": 0.24, + "flow": 302, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784528384.0, + "p_ref": 0.709999999791287, + "flow": 680, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784544614.0, + "p_ref": 0.76, + "flow": 368, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784546005.0, + "p_ref": 0.6500000000634438, + "flow": 3819, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784547039.0, + "p_ref": 0.7900000005390289, + "flow": 1138, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784547971.0, + "p_ref": 0.87, + "flow": 302, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "37727366364849228584801617579803031120210828630091810248642565634239295279379", + "ts": 1784549136.0, + "p_ref": 0.89, + "flow": 1501, + "title": "Generali Open: Lukas Neumayer vs Yannick Hanfmann" + }, + { + "asset": "3774349674919085243930996964867708640198793574464440195441808185275563521031", + "ts": 1784558759.0, + "p_ref": 0.47, + "flow": 2350, + "title": "Hamburg European Open: Simona Waltert vs Mayar Sherif" + }, + { + "asset": "37749780397419739823017612241990199776154118211467023142222080345537275754835", + "ts": 1784554405.0, + "p_ref": 0.48, + "flow": 384, + "title": "St. Louis Cardinals vs. Los Angeles Angels: 1st 5 Innings O/" + }, + { + "asset": "3778418202219996873693163805862508699821754140746805246497129753112025840693", + "ts": 1784508610.0, + "p_ref": 0.83, + "flow": 593, + "title": "Las Vegas Aces vs. Toronto Tempo" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784532192.0, + "p_ref": 0.74, + "flow": 310, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784533102.0, + "p_ref": 0.7, + "flow": 343, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784535432.0, + "p_ref": 0.57, + "flow": 306, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784538256.0, + "p_ref": 0.5499999998767314, + "flow": 446, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784543398.0, + "p_ref": 0.68, + "flow": 362, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784544300.0, + "p_ref": 0.71, + "flow": 3169, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784545406.0, + "p_ref": 0.72, + "flow": 314, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "37797565056578166182905392200193617842459436201862748231036946877540104567728", + "ts": 1784546347.0, + "p_ref": 0.8, + "flow": 303, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "38724571156432497899163991386415397338954307658611594437639444497162200738756", + "ts": 1784540898.0, + "p_ref": 0.57, + "flow": 681, + "title": "Cezar Cretu vs. Kimmer Coppejans: Total Sets O/U 2.5" + }, + { + "asset": "38951087858072232583464447611717434500373872099939372316994412470530994708911", + "ts": 1784558501.0, + "p_ref": 0.674, + "flow": 315, + "title": "Set 2 Winner: Aksu vs Costoulas" + }, + { + "asset": "39014074791273823567438943070016212293913411217448527951302684549994142385396", + "ts": 1784556473.0, + "p_ref": 0.32, + "flow": 317, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 1 Winne" + }, + { + "asset": "39014074791273823567438943070016212293913411217448527951302684549994142385396", + "ts": 1784557431.0, + "p_ref": 0.85, + "flow": 396, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 1 Winne" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784506462.0, + "p_ref": 0.42, + "flow": 314, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784514337.0, + "p_ref": 0.36, + "flow": 332, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784515254.0, + "p_ref": 0.41, + "flow": 587, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784516531.0, + "p_ref": 0.4700000032486866, + "flow": 311, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784517448.0, + "p_ref": 0.6, + "flow": 387, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784519051.0, + "p_ref": 0.57, + "flow": 441, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784520078.0, + "p_ref": 0.65, + "flow": 313, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784521156.0, + "p_ref": 0.5799999985844068, + "flow": 345, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784524442.0, + "p_ref": 0.31, + "flow": 376, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784525345.0, + "p_ref": 0.62, + "flow": 1311, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784526426.0, + "p_ref": 0.69, + "flow": 313, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "3925845776571906637832177821932492572360997820087858525876073276574836325983", + "ts": 1784527598.0, + "p_ref": 0.75, + "flow": 310, + "title": "Counter-Strike: Fluxo W7M vs Imperial (BO5) - BetBoom RUSH B" + }, + { + "asset": "39423626153327053136661067093071506799226648394713446472145731493179396205717", + "ts": 1784529023.0, + "p_ref": 0.49, + "flow": 680, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "39423626153327053136661067093071506799226648394713446472145731493179396205717", + "ts": 1784536567.0, + "p_ref": 0.48, + "flow": 669, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "39423626153327053136661067093071506799226648394713446472145731493179396205717", + "ts": 1784545416.0, + "p_ref": 0.46, + "flow": 606, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "39423626153327053136661067093071506799226648394713446472145731493179396205717", + "ts": 1784555830.0, + "p_ref": 0.48, + "flow": 1378, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "39423626153327053136661067093071506799226648394713446472145731493179396205717", + "ts": 1784565385.0, + "p_ref": 0.47, + "flow": 691, + "title": "Washington Mystics vs. Golden State Valkyries: O/U 145.5" + }, + { + "asset": "39461958403911490598645607366950780797411041311990824258518639636844632049060", + "ts": 1784552689.0, + "p_ref": 0.5300000005975842, + "flow": 564, + "title": "Kalmar FF vs. Malmo FF: Malmo FF O/U 1.5" + }, + { + "asset": "39698473329789457878140881456743840035239090080664296283746414371835869842659", + "ts": 1784530609.0, + "p_ref": 0.6, + "flow": 315, + "title": "Dota 2: Team Syntax vs Team Lynx (BO3) - EPL Masters Play-In" + }, + { + "asset": "39698473329789457878140881456743840035239090080664296283746414371835869842659", + "ts": 1784534970.0, + "p_ref": 0.7700000186802038, + "flow": 303, + "title": "Dota 2: Team Syntax vs Team Lynx (BO3) - EPL Masters Play-In" + }, + { + "asset": "39698473329789457878140881456743840035239090080664296283746414371835869842659", + "ts": 1784536991.0, + "p_ref": 0.79, + "flow": 352, + "title": "Dota 2: Team Syntax vs Team Lynx (BO3) - EPL Masters Play-In" + }, + { + "asset": "39698473329789457878140881456743840035239090080664296283746414371835869842659", + "ts": 1784538365.0, + "p_ref": 0.88, + "flow": 335, + "title": "Dota 2: Team Syntax vs Team Lynx (BO3) - EPL Masters Play-In" + }, + { + "asset": "40849687892544825755594039292702688295739085563176569657489695352644774354745", + "ts": 1784551449.0, + "p_ref": 0.3666623845973694, + "flow": 469, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "40849687892544825755594039292702688295739085563176569657489695352644774354745", + "ts": 1784555154.0, + "p_ref": 0.51, + "flow": 339, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "40849687892544825755594039292702688295739085563176569657489695352644774354745", + "ts": 1784556239.0, + "p_ref": 0.49, + "flow": 304, + "title": "LoL: Kiwoom DRX vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "4110846984179208118110347606102659114167069474374420012120491031482645956700", + "ts": 1784539961.0, + "p_ref": 0.57, + "flow": 573, + "title": "Henrique Rocha vs. Pedro Martinez: Total Sets O/U 2.5" + }, + { + "asset": "4110846984179208118110347606102659114167069474374420012120491031482645956700", + "ts": 1784541854.0, + "p_ref": 0.56, + "flow": 573, + "title": "Henrique Rocha vs. Pedro Martinez: Total Sets O/U 2.5" + }, + { + "asset": "41139608227508959972581045712426360265767669740393940264698299112602912420168", + "ts": 1784532158.0, + "p_ref": 0.45, + "flow": 333, + "title": "Tohoku Rakuten Golden Eagles vs. Saitama Seibu Lions" + }, + { + "asset": "41624526980412991859264830643697256340759360484869188521643048806094531401246", + "ts": 1784506769.0, + "p_ref": 0.6700000004620043, + "flow": 624, + "title": "Winnipeg Blue Bombers vs. Ottawa Redblacks" + }, + { + "asset": "41624526980412991859264830643697256340759360484869188521643048806094531401246", + "ts": 1784510639.0, + "p_ref": 0.8928155339805826, + "flow": 518, + "title": "Winnipeg Blue Bombers vs. Ottawa Redblacks" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784538466.0, + "p_ref": 0.78, + "flow": 716, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784550404.0, + "p_ref": 0.77, + "flow": 665, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784561984.0, + "p_ref": 0.77, + "flow": 304, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784563339.0, + "p_ref": 0.7100000009065431, + "flow": 500, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784564701.0, + "p_ref": 0.5, + "flow": 8594, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42173696182315318956654838794529717041309231933240088983146716100143273324942", + "ts": 1784565873.0, + "p_ref": 0.32, + "flow": 3661, + "title": "Palermo: Yasmine Kabbaj vs Deborah Chiesa" + }, + { + "asset": "42619177992046077374477497800709075898222402142974086394481525883484578673683", + "ts": 1784545316.0, + "p_ref": 0.63, + "flow": 300, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "42619177992046077374477497800709075898222402142974086394481525883484578673683", + "ts": 1784553518.0, + "p_ref": 0.63, + "flow": 315, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "42619177992046077374477497800709075898222402142974086394481525883484578673683", + "ts": 1784562391.0, + "p_ref": 0.71, + "flow": 406, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "42619177992046077374477497800709075898222402142974086394481525883484578673683", + "ts": 1784563824.0, + "p_ref": 0.82, + "flow": 328, + "title": "Palermo: Lina Gjorcheska vs Erika Andreeva" + }, + { + "asset": "42674021146161952317225765274719338026798729828507305380804128809225051312944", + "ts": 1784542500.0, + "p_ref": 0.5, + "flow": 358, + "title": "Valorant: TEC Esports vs All Gamers - Map 2 Winner" + }, + { + "asset": "42674021146161952317225765274719338026798729828507305380804128809225051312944", + "ts": 1784543492.0, + "p_ref": 0.59, + "flow": 353, + "title": "Valorant: TEC Esports vs All Gamers - Map 2 Winner" + }, + { + "asset": "43373400203602245140375504210906122178062404697380679639516241296349599425110", + "ts": 1784544629.0, + "p_ref": 0.604, + "flow": 304, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "43373400203602245140375504210906122178062404697380679639516241296349599425110", + "ts": 1784545768.0, + "p_ref": 0.613, + "flow": 1515, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "43373400203602245140375504210906122178062404697380679639516241296349599425110", + "ts": 1784547473.0, + "p_ref": 0.803, + "flow": 1488, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "43373400203602245140375504210906122178062404697380679639516241296349599425110", + "ts": 1784548605.0, + "p_ref": 0.758, + "flow": 1217, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "43373400203602245140375504210906122178062404697380679639516241296349599425110", + "ts": 1784549597.0, + "p_ref": 0.3010000001356393, + "flow": 365, + "title": "Hamburg European Open, Qualification: Eva Vedder vs Mona Bar" + }, + { + "asset": "43477570003812421763197003293373214989004257188995410038411978051427547243295", + "ts": 1784557550.0, + "p_ref": 0.46, + "flow": 368, + "title": "Cincinnati Reds vs. Seattle Mariners: 1st 5 Innings O/U 4.5" + }, + { + "asset": "43677854802547167446459662087245946671725692450267709125248552515404907994344", + "ts": 1784547446.0, + "p_ref": 0.63, + "flow": 326, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "43677854802547167446459662087245946671725692450267709125248552515404907994344", + "ts": 1784548365.0, + "p_ref": 0.65, + "flow": 377, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "43677854802547167446459662087245946671725692450267709125248552515404907994344", + "ts": 1784549265.0, + "p_ref": 0.39, + "flow": 302, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "43831105231372952992947093413918941661521753614402939792503237711361389525631", + "ts": 1784555924.0, + "p_ref": 0.42, + "flow": 1600, + "title": "Athletics vs. Arizona Diamondbacks" + }, + { + "asset": "43831105231372952992947093413918941661521753614402939792503237711361389525631", + "ts": 1784562203.0, + "p_ref": 0.42, + "flow": 840, + "title": "Athletics vs. Arizona Diamondbacks" + }, + { + "asset": "44276444350145254031229999879055904673724850910690661030004319009683023987439", + "ts": 1784556709.0, + "p_ref": 0.69, + "flow": 394, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming (BO3) - EPL Masters P" + }, + { + "asset": "44276444350145254031229999879055904673724850910690661030004319009683023987439", + "ts": 1784558830.0, + "p_ref": 0.79, + "flow": 356, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming (BO3) - EPL Masters P" + }, + { + "asset": "44276444350145254031229999879055904673724850910690661030004319009683023987439", + "ts": 1784563504.0, + "p_ref": 0.8893357142857143, + "flow": 303, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming (BO3) - EPL Masters P" + }, + { + "asset": "44548601526623713731893179460479051651978722860235519651839811259913416666464", + "ts": 1784509927.0, + "p_ref": 0.52, + "flow": 1214, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "44548601526623713731893179460479051651978722860235519651839811259913416666464", + "ts": 1784531671.0, + "p_ref": 0.51, + "flow": 740, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "44548601526623713731893179460479051651978722860235519651839811259913416666464", + "ts": 1784547735.0, + "p_ref": 0.52, + "flow": 324, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "44666905294909368722775800406046539570403366578409932271428417407121183405239", + "ts": 1784532268.0, + "p_ref": 0.53, + "flow": 583, + "title": "Set Handicap: Podoroska (-1.5) vs Stusek (+1.5)" + }, + { + "asset": "45776677599934951143599953421166673804209332143123168219870087327352644562574", + "ts": 1784528156.0, + "p_ref": 0.71, + "flow": 931, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "45776677599934951143599953421166673804209332143123168219870087327352644562574", + "ts": 1784529707.0, + "p_ref": 0.68, + "flow": 322, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "45776677599934951143599953421166673804209332143123168219870087327352644562574", + "ts": 1784530627.0, + "p_ref": 0.65, + "flow": 756, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "45776677599934951143599953421166673804209332143123168219870087327352644562574", + "ts": 1784531823.0, + "p_ref": 0.3000000006272722, + "flow": 394, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "45787142937515946591515474474569293447095751934632720483053834934426806149406", + "ts": 1784553615.0, + "p_ref": 0.23, + "flow": 2300, + "title": "Counter-Strike: paiN Academy vs Guara Esports (BO3) - CCT So" + }, + { + "asset": "45963913343980944174105806203765626907410429159333677990497460821584313797006", + "ts": 1784545530.0, + "p_ref": 0.47, + "flow": 352, + "title": "Map Handicap: AST (-1.5) vs FOKUS (+1.5)" + }, + { + "asset": "46496903885933444511212935654223397487365037151719066156631564049613130855353", + "ts": 1784547969.0, + "p_ref": 0.1883333333333333, + "flow": 368, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 1 Winner" + }, + { + "asset": "46584748202983120533511388236105212704005226303062125886617335383387369288086", + "ts": 1784557078.0, + "p_ref": 0.11, + "flow": 363, + "title": "Segovia: Yi Zhou vs Michael Geerts" + }, + { + "asset": "46846053003283862940497749795704537840717760635068619902036302858594048248956", + "ts": 1784566429.0, + "p_ref": 0.4590407673860911, + "flow": 306, + "title": "Valorant: Gentle Mates GC vs G2 Gozen - Map 2 Winner" + }, + { + "asset": "4686747528643466719171723057920376178896205723764151608796234946699186961974", + "ts": 1784553892.0, + "p_ref": 0.48, + "flow": 336, + "title": "Las Vegas Aces vs. Toronto Tempo: O/U 183.5" + }, + { + "asset": "4686747528643466719171723057920376178896205723764151608796234946699186961974", + "ts": 1784554878.0, + "p_ref": 0.48, + "flow": 576, + "title": "Las Vegas Aces vs. Toronto Tempo: O/U 183.5" + }, + { + "asset": "4704729991118491499441438030616947381227014815163792902561126124849185627179", + "ts": 1784529567.0, + "p_ref": 0.38, + "flow": 380, + "title": "Set Handicap: Badosa (-1.5) vs Sherif (+1.5)" + }, + { + "asset": "47189969004041083915841387496863554968916720865865289288589226162345111054736", + "ts": 1784542512.0, + "p_ref": 0.34, + "flow": 377, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "47189969004041083915841387496863554968916720865865289288589226162345111054736", + "ts": 1784544410.0, + "p_ref": 0.32, + "flow": 452, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "47189969004041083915841387496863554968916720865865289288589226162345111054736", + "ts": 1784545418.0, + "p_ref": 0.25, + "flow": 300, + "title": "LoL: DN SOOPers vs KT Rolster (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "47615202842052664236294589471541818810073623863952161926282376471611545514949", + "ts": 1784532947.0, + "p_ref": 0.74, + "flow": 740, + "title": "Set Handicap: Pridankina (-1.5) vs Brand (+1.5)" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784535072.0, + "p_ref": 0.6, + "flow": 604, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784536539.0, + "p_ref": 0.67, + "flow": 637, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784537956.0, + "p_ref": 0.67, + "flow": 2128, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784540046.0, + "p_ref": 0.6468563685636856, + "flow": 452, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784541088.0, + "p_ref": 0.66, + "flow": 2004, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784542756.0, + "p_ref": 0.63, + "flow": 630, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "47693318321493393947051560018812438176812970404355453512086577114837045538749", + "ts": 1784543666.0, + "p_ref": 0.67, + "flow": 511, + "title": "Hamburg European Open, Qualification: Jule Niemeier vs Elena" + }, + { + "asset": "4782570839372421949595890217382220033694971997188814993535610285819273460763", + "ts": 1784558186.0, + "p_ref": 0.7000000014831905, + "flow": 578, + "title": "Set 1 Winner: Kopriva vs Buse" + }, + { + "asset": "48069568610413325076103311148595513217625366203885594523604922149738824837737", + "ts": 1784549888.0, + "p_ref": 0.59, + "flow": 361, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "48069568610413325076103311148595513217625366203885594523604922149738824837737", + "ts": 1784550789.0, + "p_ref": 0.43, + "flow": 445, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "48069568610413325076103311148595513217625366203885594523604922149738824837737", + "ts": 1784551769.0, + "p_ref": 0.27, + "flow": 355, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "48088571006935698505961807746916699944633929490025985824185032217411650282614", + "ts": 1784556674.0, + "p_ref": 0.58, + "flow": 435, + "title": "Cincinnati Reds vs. Seattle Mariners" + }, + { + "asset": "48299853563429923889982888780478674720618023523540996426563138147207055409385", + "ts": 1784557504.0, + "p_ref": 0.57, + "flow": 497, + "title": "Valorant: Gentle Mates GC vs G2 Gozen (BO3) - VCT Game Chang" + }, + { + "asset": "49004291599243325908569830249012566045139476227882507851664701956439932383735", + "ts": 1784509742.0, + "p_ref": 0.54, + "flow": 429, + "title": "Palermo: Ekaterine Gorgodze vs Ane Mintegi Del Olmo" + }, + { + "asset": "49004291599243325908569830249012566045139476227882507851664701956439932383735", + "ts": 1784541567.0, + "p_ref": 0.5400000404800045, + "flow": 305, + "title": "Palermo: Ekaterine Gorgodze vs Ane Mintegi Del Olmo" + }, + { + "asset": "49004291599243325908569830249012566045139476227882507851664701956439932383735", + "ts": 1784565314.0, + "p_ref": 0.5499999996587313, + "flow": 483, + "title": "Palermo: Ekaterine Gorgodze vs Ane Mintegi Del Olmo" + }, + { + "asset": "49425305223272010387927850151929879020802039034910191821604079632194782255313", + "ts": 1784562977.0, + "p_ref": 0.52, + "flow": 432, + "title": "Set 2 Winner: Kopriva vs Buse" + }, + { + "asset": "49425305223272010387927850151929879020802039034910191821604079632194782255313", + "ts": 1784564575.0, + "p_ref": 0.38, + "flow": 319, + "title": "Set 2 Winner: Kopriva vs Buse" + }, + { + "asset": "4956816411077180648487154677641724418643462276834550110834310375029496449095", + "ts": 1784541805.0, + "p_ref": 0.19, + "flow": 1379, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "4956816411077180648487154677641724418643462276834550110834310375029496449095", + "ts": 1784551870.0, + "p_ref": 0.2, + "flow": 1531, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "4956816411077180648487154677641724418643462276834550110834310375029496449095", + "ts": 1784560013.0, + "p_ref": 0.18, + "flow": 342, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "4956816411077180648487154677641724418643462276834550110834310375029496449095", + "ts": 1784565066.0, + "p_ref": 0.16, + "flow": 305, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "49575792723909839906412759392417255567114278544926325701798019191444192357488", + "ts": 1784558082.0, + "p_ref": 0.7599999998182297, + "flow": 889, + "title": "LoL: GIANTX iTero vs \u2060Movistar KOI F\u00e9nix (BO3) - LES Regular" + }, + { + "asset": "49619776466797835162604835476116389649914917125889239422074642139049487147852", + "ts": 1784539100.0, + "p_ref": 0.27, + "flow": 398, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "49619776466797835162604835476116389649914917125889239422074642139049487147852", + "ts": 1784543283.0, + "p_ref": 0.2700000000586721, + "flow": 556, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "49619776466797835162604835476116389649914917125889239422074642139049487147852", + "ts": 1784544356.0, + "p_ref": 0.28, + "flow": 840, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "49619776466797835162604835476116389649914917125889239422074642139049487147852", + "ts": 1784545598.0, + "p_ref": 0.28, + "flow": 1963, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "49619776466797835162604835476116389649914917125889239422074642139049487147852", + "ts": 1784549846.0, + "p_ref": 0.12, + "flow": 403, + "title": "Livesport Prague Open: Marie Bouzkova vs Jessica Bouzas Mane" + }, + { + "asset": "49866073595059657001575694281641950161751323460224889745262226261440190767240", + "ts": 1784545543.0, + "p_ref": 0.620000000568764, + "flow": 324, + "title": "Hanshin Tigers vs. Yokohama BayStars" + }, + { + "asset": "50580108932189154712369364561563180128639604556560774781000635505561736346745", + "ts": 1784543564.0, + "p_ref": 0.6300000006906668, + "flow": 327, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "50580108932189154712369364561563180128639604556560774781000635505561736346745", + "ts": 1784561225.0, + "p_ref": 0.75, + "flow": 832, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "50580108932189154712369364561563180128639604556560774781000635505561736346745", + "ts": 1784563354.0, + "p_ref": 0.409999999398319, + "flow": 480, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "50580108932189154712369364561563180128639604556560774781000635505561736346745", + "ts": 1784565772.0, + "p_ref": 0.64, + "flow": 303, + "title": "Segovia: Mario Gonzalez Fernandez vs Miguel Tobon" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784515934.0, + "p_ref": 0.36, + "flow": 742, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784549311.0, + "p_ref": 0.3300000000525852, + "flow": 377, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784552310.0, + "p_ref": 0.52, + "flow": 304, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784553234.0, + "p_ref": 0.64, + "flow": 1594, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784554138.0, + "p_ref": 0.57, + "flow": 5459, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784555047.0, + "p_ref": 0.5700000000570069, + "flow": 3946, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784556162.0, + "p_ref": 0.51, + "flow": 483, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "50604754809939692918593004606882779528205106739898949710079454000644253395025", + "ts": 1784557183.0, + "p_ref": 0.9, + "flow": 556, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784528089.0, + "p_ref": 0.438, + "flow": 355, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784538287.0, + "p_ref": 0.433, + "flow": 1082, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784548544.0, + "p_ref": 0.169, + "flow": 1209, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784549873.0, + "p_ref": 0.149, + "flow": 491, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784550995.0, + "p_ref": 0.2110000001566493, + "flow": 359, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784552018.0, + "p_ref": 0.131, + "flow": 536, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51021653311120225493176945298521826133363451478378449913331470290258510573297", + "ts": 1784553055.0, + "p_ref": 0.3179759919992769, + "flow": 841, + "title": "Livesport Prague Open: Veronika Podrez vs Carol Young Suh Le" + }, + { + "asset": "51123752312773523768809233189993185493863242581257112984510576270701384058445", + "ts": 1784565709.0, + "p_ref": 0.5, + "flow": 312, + "title": "Dota 2: Spirit Academy vs Team Jenz (BO3) - EPL Masters Play" + }, + { + "asset": "51222586550281721826284829876334832538216012740733243034562416233314959160463", + "ts": 1784559296.0, + "p_ref": 0.350000000325, + "flow": 386, + "title": "Set 1 Winner: Kopriva vs Buse" + }, + { + "asset": "5125324149301317608103386466485668811619887764014020776295233102060045582107", + "ts": 1784535497.0, + "p_ref": 0.75, + "flow": 581, + "title": "Set Handicap: Burel (-1.5) vs Abbagnato (+1.5)" + }, + { + "asset": "51274384106159046476844950563872054961934790425109656845264935339172844256078", + "ts": 1784552313.0, + "p_ref": 0.56, + "flow": 326, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "51274384106159046476844950563872054961934790425109656845264935339172844256078", + "ts": 1784553421.0, + "p_ref": 0.56, + "flow": 348, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "51274384106159046476844950563872054961934790425109656845264935339172844256078", + "ts": 1784554639.0, + "p_ref": 0.7900000122171948, + "flow": 320, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "51476011560513081072332394447010350273059928798383118406811254330428404631389", + "ts": 1784547809.0, + "p_ref": 0.52, + "flow": 764, + "title": "Las Vegas Aces vs. Toronto Tempo: O/U 182.5" + }, + { + "asset": "51476011560513081072332394447010350273059928798383118406811254330428404631389", + "ts": 1784552873.0, + "p_ref": 0.51, + "flow": 510, + "title": "Las Vegas Aces vs. Toronto Tempo: O/U 182.5" + }, + { + "asset": "5152812094296300541568447476907093243971939233659642318748315852176271414380", + "ts": 1784561789.0, + "p_ref": 0.2, + "flow": 366, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "5152812094296300541568447476907093243971939233659642318748315852176271414380", + "ts": 1784565094.0, + "p_ref": 0.12, + "flow": 325, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "5152812094296300541568447476907093243971939233659642318748315852176271414380", + "ts": 1784566610.0, + "p_ref": 0.3, + "flow": 374, + "title": "Palermo: Sofya Lansere vs Lola Radivojevic" + }, + { + "asset": "51577514325699338439146591254037134752543726320330662527615218170464122935825", + "ts": 1784550680.0, + "p_ref": 0.54, + "flow": 755, + "title": "Droguet vs. Carabelli: Match O/U 23.5" + }, + { + "asset": "51611458194638189695599954281397930565370287612907401799145874747037714553166", + "ts": 1784539152.0, + "p_ref": 0.59, + "flow": 2065, + "title": "Set 2 Winner: Sherif vs Badosa" + }, + { + "asset": "52488070939472706896399827550893935133197856587128315069173015299173799108798", + "ts": 1784525931.0, + "p_ref": 0.2189982397603972, + "flow": 834, + "title": "Zug: Zsombor Piros vs Stefano Napolitano" + }, + { + "asset": "52772602290521343803683777177719841858465198377233430979810180995057664547487", + "ts": 1784552677.0, + "p_ref": 0.610000001291588, + "flow": 360, + "title": "Kalmar FF vs. Malmo FF: Both Teams to Score" + }, + { + "asset": "52772602290521343803683777177719841858465198377233430979810180995057664547487", + "ts": 1784563486.0, + "p_ref": 0.63, + "flow": 388, + "title": "Kalmar FF vs. Malmo FF: Both Teams to Score" + }, + { + "asset": "52859709084400699769032361514298379632679359249184172476736263948255538215713", + "ts": 1784562221.0, + "p_ref": 0.6087132352941176, + "flow": 414, + "title": "Generali Open (Doubles): Frantzen/Haase vs Nouza/Oberleitner" + }, + { + "asset": "53165051836934752876279465478389003173099266716699917428777741709766756431044", + "ts": 1784561901.0, + "p_ref": 0.790000001575, + "flow": 376, + "title": "Set 1 Winner: Lansere vs Radivojevic" + }, + { + "asset": "53173755771857770229157343789263443638877342863079298295691847577938388493876", + "ts": 1784551054.0, + "p_ref": 0.46, + "flow": 692, + "title": "Miami Marlins vs. Houston Astros: O/U 8.5" + }, + { + "asset": "53173755771857770229157343789263443638877342863079298295691847577938388493876", + "ts": 1784553452.0, + "p_ref": 0.45, + "flow": 1440, + "title": "Miami Marlins vs. Houston Astros: O/U 8.5" + }, + { + "asset": "5368200798022956369766747290453957467208046793154314349812845098703987273201", + "ts": 1784563614.0, + "p_ref": 0.59, + "flow": 329, + "title": "Counter-Strike: paiN Academy vs Guara Esports - Map 2 Winner" + }, + { + "asset": "54567994785724776230125095850143188363576874401827364517874342976194683458638", + "ts": 1784550374.0, + "p_ref": 0.34, + "flow": 437, + "title": "New York Mets vs. Milwaukee Brewers" + }, + { + "asset": "54569388023730283863669209008694594119511369875616664343882628068381540386346", + "ts": 1784533871.0, + "p_ref": 0.77, + "flow": 302, + "title": "Dota 2: Team Syntax vs Team Lynx - Game 1 Winner" + }, + { + "asset": "54603157504388236730411784699014055413667174197979195973425791311671453085942", + "ts": 1784552770.0, + "p_ref": 0.73, + "flow": 350, + "title": "Orgryte IS vs. Djurgardens IF: Orgryte IS O/U 1.5" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784505948.0, + "p_ref": 0.839999999888, + "flow": 390, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784506868.0, + "p_ref": 0.8, + "flow": 7047, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784507986.0, + "p_ref": 0.82, + "flow": 1120, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784509028.0, + "p_ref": 0.6, + "flow": 301, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784509957.0, + "p_ref": 0.460000001944, + "flow": 379, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784510941.0, + "p_ref": 0.56, + "flow": 423, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55134690462508708908640861246360238756213326968267019013270715366551143152122", + "ts": 1784511878.0, + "p_ref": 0.53, + "flow": 351, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "55600912435463930026134211124721844924590564574327637775209334785437038364016", + "ts": 1784561546.0, + "p_ref": 0.5999999998076893, + "flow": 624, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "55600912435463930026134211124721844924590564574327637775209334785437038364016", + "ts": 1784563491.0, + "p_ref": 0.58, + "flow": 324, + "title": "Kalmar FF vs. Malmo FF: O/U 2.5" + }, + { + "asset": "55989796486435004340601955705831490462765580924578446723962619614400979755858", + "ts": 1784559044.0, + "p_ref": 0.55, + "flow": 435, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "55989796486435004340601955705831490462765580924578446723962619614400979755858", + "ts": 1784559961.0, + "p_ref": 0.47, + "flow": 392, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "55989796486435004340601955705831490462765580924578446723962619614400979755858", + "ts": 1784561093.0, + "p_ref": 0.6199999942191139, + "flow": 309, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "55989796486435004340601955705831490462765580924578446723962619614400979755858", + "ts": 1784561996.0, + "p_ref": 0.6, + "flow": 405, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 2 Winne" + }, + { + "asset": "56475338815252348534402890266771954201396143797847055959791985365220794560971", + "ts": 1784554821.0, + "p_ref": 0.5, + "flow": 328, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "56475338815252348534402890266771954201396143797847055959791985365220794560971", + "ts": 1784556525.0, + "p_ref": 0.51, + "flow": 329, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "56475338815252348534402890266771954201396143797847055959791985365220794560971", + "ts": 1784559891.0, + "p_ref": 0.1, + "flow": 400, + "title": "Segovia: Mert Alkaya vs Juan Pablo Ficovich" + }, + { + "asset": "56577568284998513347843637466630374514857942725944618796780391782594482301259", + "ts": 1784550251.0, + "p_ref": 0.34, + "flow": 385, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming (BO3) - EPL Masters P" + }, + { + "asset": "56577568284998513347843637466630374514857942725944618796780391782594482301259", + "ts": 1784560060.0, + "p_ref": 0.14, + "flow": 331, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming (BO3) - EPL Masters P" + }, + { + "asset": "5682639379945252119774549394030961946734648755140082217494147884827919504566", + "ts": 1784539280.0, + "p_ref": 0.56, + "flow": 560, + "title": "Titouan Droguet vs. Camilo Ugo Carabelli: Total Sets O/U 2.5" + }, + { + "asset": "5682639379945252119774549394030961946734648755140082217494147884827919504566", + "ts": 1784540241.0, + "p_ref": 0.57, + "flow": 305, + "title": "Titouan Droguet vs. Camilo Ugo Carabelli: Total Sets O/U 2.5" + }, + { + "asset": "5682639379945252119774549394030961946734648755140082217494147884827919504566", + "ts": 1784542115.0, + "p_ref": 0.56, + "flow": 1681, + "title": "Titouan Droguet vs. Camilo Ugo Carabelli: Total Sets O/U 2.5" + }, + { + "asset": "56882195105760092324315196801134950327618542336819489007662288927320242780305", + "ts": 1784563436.0, + "p_ref": 0.68, + "flow": 362, + "title": "Counter-Strike: paiN Academy vs Guara Esports (BO3) - CCT So" + }, + { + "asset": "56956987074315053598457265845786945864645841931494174592617956254543206193006", + "ts": 1784559434.0, + "p_ref": 0.56, + "flow": 4023, + "title": "St. Louis Cardinals vs. Los Angeles Angels: O/U 9.5" + }, + { + "asset": "57122063461492663614165855981801170068177347151900630134653374078871836008611", + "ts": 1784556871.0, + "p_ref": 0.68, + "flow": 690, + "title": "Set 1 Winner: Aksu vs Costoulas" + }, + { + "asset": "57342218935315648091620134852461918895320175459494131534573483301549023710451", + "ts": 1784551325.0, + "p_ref": 0.3800000001612, + "flow": 613, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "57342218935315648091620134852461918895320175459494131534573483301549023710451", + "ts": 1784552313.0, + "p_ref": 0.44, + "flow": 851, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "57342218935315648091620134852461918895320175459494131534573483301549023710451", + "ts": 1784554466.0, + "p_ref": 0.18, + "flow": 965, + "title": "Generali Open: Joel Schwaerzler vs Jurij Rodionov" + }, + { + "asset": "57828251067506469965022252692883014904816226253618128308076977173858640877215", + "ts": 1784505749.0, + "p_ref": 0.32, + "flow": 337, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 9.5" + }, + { + "asset": "58332261317815932102671621035543246410728729720255679893061595402401824743212", + "ts": 1784549265.0, + "p_ref": 0.419999999809818, + "flow": 1237, + "title": "Cincinnati Reds vs. Seattle Mariners" + }, + { + "asset": "58332261317815932102671621035543246410728729720255679893061595402401824743212", + "ts": 1784556593.0, + "p_ref": 0.42, + "flow": 1600, + "title": "Cincinnati Reds vs. Seattle Mariners" + }, + { + "asset": "58382241359601821363531636764319228713123687035477233120228295716853709941963", + "ts": 1784552750.0, + "p_ref": 0.5200000002161032, + "flow": 524, + "title": "Orgryte IS vs. Djurgardens IF: O/U 3.5" + }, + { + "asset": "58382241359601821363531636764319228713123687035477233120228295716853709941963", + "ts": 1784563177.0, + "p_ref": 0.52, + "flow": 577, + "title": "Orgryte IS vs. Djurgardens IF: O/U 3.5" + }, + { + "asset": "58459813764183831411807516824919000297251443806149784847735093609387420102783", + "ts": 1784527895.0, + "p_ref": 0.42, + "flow": 362, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "58459813764183831411807516824919000297251443806149784847735093609387420102783", + "ts": 1784528833.0, + "p_ref": 0.4, + "flow": 322, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "58459813764183831411807516824919000297251443806149784847735093609387420102783", + "ts": 1784529840.0, + "p_ref": 0.35, + "flow": 305, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "58933605502176492614769395180781655849181280392219507216869234577007846547282", + "ts": 1784541557.0, + "p_ref": 0.44, + "flow": 384, + "title": "Set Handicap: Kalinina (-1.5) vs Quevedo (+1.5)" + }, + { + "asset": "59449774096723761793884225903781513919358996968695223296115471975355980539081", + "ts": 1784538885.0, + "p_ref": 0.24, + "flow": 306, + "title": "Valorant: TEC Esports vs All Gamers (BO3) - VCT China Stage " + }, + { + "asset": "59615899021234303817446353195756683752597042067757867094601846909714636794188", + "ts": 1784542184.0, + "p_ref": 0.7020000009741717, + "flow": 480, + "title": "Bloomfield Hills: Moez Echargui vs Lloyd Harris" + }, + { + "asset": "59806050464370820072051712895279058664556886850556735297257596672847362933923", + "ts": 1784547028.0, + "p_ref": 0.3399999997418533, + "flow": 818, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "59806050464370820072051712895279058664556886850556735297257596672847362933923", + "ts": 1784550962.0, + "p_ref": 0.6482384823848238, + "flow": 358, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "59806050464370820072051712895279058664556886850556735297257596672847362933923", + "ts": 1784552123.0, + "p_ref": 0.5, + "flow": 337, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "59806050464370820072051712895279058664556886850556735297257596672847362933923", + "ts": 1784553023.0, + "p_ref": 0.8, + "flow": 316, + "title": "Counter-Strike: ARCRED vs 1WIN (BO3) - European Pro League S" + }, + { + "asset": "59876734929209334087587881616275790088973171768914852407763622299442644462278", + "ts": 1784539640.0, + "p_ref": 0.5400000003167281, + "flow": 341, + "title": "Orgryte IS vs. Djurgardens IF: Djurgardens IF O/U 2.5" + }, + { + "asset": "60004827052981810543411631616054408779350169114136145631629614494038899985480", + "ts": 1784536542.0, + "p_ref": 0.61, + "flow": 633, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "60004827052981810543411631616054408779350169114136145631629614494038899985480", + "ts": 1784553876.0, + "p_ref": 0.62, + "flow": 1240, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "60004827052981810543411631616054408779350169114136145631629614494038899985480", + "ts": 1784555876.0, + "p_ref": 0.63, + "flow": 1600, + "title": "New York Liberty vs. Dallas Wings" + }, + { + "asset": "60062398093078147114902137066589380367469747115091252792567826928437380886000", + "ts": 1784552880.0, + "p_ref": 0.5100000001830179, + "flow": 462, + "title": "Set Handicap: Bartunkova (-1.5) vs Yuan (+1.5)" + }, + { + "asset": "60077713949723836626736976810960748313231109073335073003197267215021270949416", + "ts": 1784506587.0, + "p_ref": 0.3499999817708324, + "flow": 304, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK - Map 2 Winner" + }, + { + "asset": "60077713949723836626736976810960748313231109073335073003197267215021270949416", + "ts": 1784507525.0, + "p_ref": 0.7835625, + "flow": 420, + "title": "Counter-Strike: Patins da Ferrari vs ODDIK - Map 2 Winner" + }, + { + "asset": "60090875227422163768551909460151430888825169965946229103078694685506502497835", + "ts": 1784552683.0, + "p_ref": 0.77, + "flow": 385, + "title": "Kalmar FF vs. Malmo FF: Kalmar FF O/U 0.5" + }, + { + "asset": "60481723317419927693623928503231472160599502879049147892203128725201127228120", + "ts": 1784552724.0, + "p_ref": 0.9, + "flow": 676, + "title": "Kalmar FF vs. Malmo FF: O/U 5.5" + }, + { + "asset": "60662999250677933536921116140092446635782050029354477393972096306513017857204", + "ts": 1784561882.0, + "p_ref": 0.6500000007238135, + "flow": 539, + "title": "Set 1 Winner: Silva vs Assche" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784539779.0, + "p_ref": 0.8300000020350828, + "flow": 479, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784540712.0, + "p_ref": 0.78, + "flow": 2288, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784542053.0, + "p_ref": 0.88, + "flow": 16981, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784543324.0, + "p_ref": 0.84, + "flow": 979, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784544233.0, + "p_ref": 0.71, + "flow": 648, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784545137.0, + "p_ref": 0.76, + "flow": 1125, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60693646375554372145608283849840280631868357837485459015673398274249667896650", + "ts": 1784546050.0, + "p_ref": 0.69, + "flow": 4561, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "60985318992985149587111859442492702774600648744563812883788116931107121825969", + "ts": 1784505898.0, + "p_ref": 0.43, + "flow": 789, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 2.5" + }, + { + "asset": "61746080452924023760806594862219919679333138364184803746771043313859158838707", + "ts": 1784536343.0, + "p_ref": 0.22, + "flow": 474, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "61746080452924023760806594862219919679333138364184803746771043313859158838707", + "ts": 1784538970.0, + "p_ref": 0.49, + "flow": 311, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "61746080452924023760806594862219919679333138364184803746771043313859158838707", + "ts": 1784540137.0, + "p_ref": 0.4499999999236986, + "flow": 909, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "61746080452924023760806594862219919679333138364184803746771043313859158838707", + "ts": 1784541746.0, + "p_ref": 0.6725581395348837, + "flow": 328, + "title": "Counter-Strike: Just Players vs Walczaki (BO3) - European Pr" + }, + { + "asset": "61798299837004583890390193588212976097330520787849866246660821864323037705983", + "ts": 1784563497.0, + "p_ref": 0.18, + "flow": 367, + "title": "Kalmar FF vs. Malmo FF: O/U 4.5" + }, + { + "asset": "62079960924603202370357562546832965970465065256981498922703070327008132670694", + "ts": 1784509717.0, + "p_ref": 0.66, + "flow": 373, + "title": "Palermo: Federica Urgesi vs Elizara Yaneva" + }, + { + "asset": "62138558569520314214192701892774386091665270037759105004670237189274783545653", + "ts": 1784545991.0, + "p_ref": 0.85, + "flow": 340, + "title": "Set 1 Winner: Bouzkova vs Maneiro" + }, + { + "asset": "6214888468327009136344965162213978054365236241706017740787094603795705338658", + "ts": 1784563495.0, + "p_ref": 0.1899999995875359, + "flow": 481, + "title": "Kalmar FF vs. Malmo FF: O/U 1.5" + }, + { + "asset": "62365238627022213754659255526154499002092525233962760378924281590163374890757", + "ts": 1784509709.0, + "p_ref": 0.57, + "flow": 302, + "title": "LoL: Kits Esports vs SDM Tigres (BO3) - LRN Regular season" + }, + { + "asset": "62623981595973762194768788012915046453596081442421236532903020349499073680006", + "ts": 1784507733.0, + "p_ref": 0.36, + "flow": 394, + "title": "Club Alianza Lima vs. CS Huancayo: 1st Half O/U 2.5" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784511409.0, + "p_ref": 0.53, + "flow": 1474, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784514092.0, + "p_ref": 0.53, + "flow": 506, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784516228.0, + "p_ref": 0.5300000000864368, + "flow": 981, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784517534.0, + "p_ref": 0.53, + "flow": 541, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784551430.0, + "p_ref": 0.53, + "flow": 437, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784553317.0, + "p_ref": 0.2600000001004805, + "flow": 314, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784554389.0, + "p_ref": 0.4, + "flow": 2044, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784555410.0, + "p_ref": 0.510000005583721, + "flow": 301, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784556358.0, + "p_ref": 0.34, + "flow": 903, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784557259.0, + "p_ref": 0.24, + "flow": 611, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62659139656549751245495227854320354281833681748573079343157504056177781601562", + "ts": 1784558168.0, + "p_ref": 0.1400000093818223, + "flow": 658, + "title": "Estoril Open: Titouan Droguet vs Camilo Ugo Carabelli" + }, + { + "asset": "62810320574116914589774688144475746517944700506412330157355460300447482225970", + "ts": 1784549822.0, + "p_ref": 0.51, + "flow": 451, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "62810320574116914589774688144475746517944700506412330157355460300447482225970", + "ts": 1784550897.0, + "p_ref": 0.55, + "flow": 313, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "62810320574116914589774688144475746517944700506412330157355460300447482225970", + "ts": 1784551810.0, + "p_ref": 0.6599995994479665, + "flow": 612, + "title": "Valorant: Bilibili Gaming vs XLG Gaming - Map 2 Winner" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784552157.0, + "p_ref": 0.63, + "flow": 310, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784553326.0, + "p_ref": 0.3500000004887218, + "flow": 378, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784554352.0, + "p_ref": 0.44, + "flow": 1575, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784555284.0, + "p_ref": 0.46, + "flow": 1118, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784556257.0, + "p_ref": 0.43, + "flow": 436, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "62929582092175035251588960036727561839024206428516069565986622697179234776329", + "ts": 1784557493.0, + "p_ref": 0.12, + "flow": 501, + "title": "Livesport Prague Open: Alycia Parks vs Lucie Havlickova" + }, + { + "asset": "63150807680976964725715115807753802783447042086445159506339197674536716902707", + "ts": 1784509951.0, + "p_ref": 0.761, + "flow": 721, + "title": "Zug: Jerome Kym vs Jay Clarke" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784535101.0, + "p_ref": 0.3500970873786408, + "flow": 1841, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784536009.0, + "p_ref": 0.319, + "flow": 697, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784537279.0, + "p_ref": 0.5680000006970484, + "flow": 435, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784538315.0, + "p_ref": 0.8380000004165714, + "flow": 1394, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784539405.0, + "p_ref": 0.7270000008588958, + "flow": 614, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784540746.0, + "p_ref": 0.681, + "flow": 348, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784542051.0, + "p_ref": 0.5330000006114013, + "flow": 320, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "6317697432498108675535203513014357222339429209331990117978257996349125811722", + "ts": 1784543181.0, + "p_ref": 0.1, + "flow": 493, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784549870.0, + "p_ref": 0.68, + "flow": 638, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784551017.0, + "p_ref": 0.68, + "flow": 792, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784552283.0, + "p_ref": 0.85, + "flow": 399, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784553495.0, + "p_ref": 0.82, + "flow": 305, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784554481.0, + "p_ref": 0.61, + "flow": 663, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784555786.0, + "p_ref": 0.77, + "flow": 3111, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784556692.0, + "p_ref": 0.9, + "flow": 793, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63282555243786169767520410540906623265137355632958693346554800865569972546666", + "ts": 1784557773.0, + "p_ref": 0.87, + "flow": 1783, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "63317975863860459375466254606552902182620524759223814921027785268127320904791", + "ts": 1784550340.0, + "p_ref": 0.28, + "flow": 536, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784540640.0, + "p_ref": 0.511, + "flow": 639, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784541541.0, + "p_ref": 0.5099999880468706, + "flow": 309, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784542615.0, + "p_ref": 0.508, + "flow": 406, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784544389.0, + "p_ref": 0.507999999954335, + "flow": 445, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784545840.0, + "p_ref": 0.507, + "flow": 315, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784547872.0, + "p_ref": 0.505, + "flow": 522, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63462427387098332255320057728814151947458992249597777403082899532306896284680", + "ts": 1784554985.0, + "p_ref": 0.5039999998234606, + "flow": 1256, + "title": "Zug: Cezar Cretu vs Kimmer Coppejans" + }, + { + "asset": "63771470122363558370250258714090989681832455347389756424025710880506980266852", + "ts": 1784559113.0, + "p_ref": 0.48, + "flow": 1312, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 175.5" + }, + { + "asset": "64019818511422133908141831144661243572687772293696723827024992237952169394275", + "ts": 1784561208.0, + "p_ref": 0.4099999994689432, + "flow": 409, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 2 Winner" + }, + { + "asset": "64019818511422133908141831144661243572687772293696723827024992237952169394275", + "ts": 1784563137.0, + "p_ref": 0.16, + "flow": 302, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 2 Winner" + }, + { + "asset": "64053384722810258041210943063377208829802031439407952760935573155162486363650", + "ts": 1784506835.0, + "p_ref": 0.63, + "flow": 452, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "64053384722810258041210943063377208829802031439407952760935573155162486363650", + "ts": 1784509598.0, + "p_ref": 0.7, + "flow": 440, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "64053384722810258041210943063377208829802031439407952760935573155162486363650", + "ts": 1784510729.0, + "p_ref": 0.49, + "flow": 344, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "64053384722810258041210943063377208829802031439407952760935573155162486363650", + "ts": 1784512446.0, + "p_ref": 0.44, + "flow": 353, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "64053384722810258041210943063377208829802031439407952760935573155162486363650", + "ts": 1784513352.0, + "p_ref": 0.6, + "flow": 303, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 2 Winner" + }, + { + "asset": "64272917973571078305837787547448945916851806358799941972097419025668728819548", + "ts": 1784557742.0, + "p_ref": 0.47, + "flow": 861, + "title": "San Francisco Giants vs. Kansas City Royals: O/U 10.5" + }, + { + "asset": "6492414626002885607283229307454846093557548830314714981436496861256461066212", + "ts": 1784533570.0, + "p_ref": 0.57, + "flow": 388, + "title": "Set Handicap: Radivojevic (-1.5) vs Lansere (+1.5)" + }, + { + "asset": "65525229478482657921483318730488888477779813472126025379497498168758953546219", + "ts": 1784505829.0, + "p_ref": 0.52, + "flow": 6990, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 7.5" + }, + { + "asset": "65661681368892217161951606360062864542311258083516931553976667447990278239676", + "ts": 1784540216.0, + "p_ref": 0.63, + "flow": 871, + "title": "Set 1 Winner: Muller vs Navone" + }, + { + "asset": "65683096658298859606615147960578045793549098941946558347974505694034380006348", + "ts": 1784515308.0, + "p_ref": 0.3713614227999496, + "flow": 326, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "65683096658298859606615147960578045793549098941946558347974505694034380006348", + "ts": 1784519887.0, + "p_ref": 0.36, + "flow": 483, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "65683096658298859606615147960578045793549098941946558347974505694034380006348", + "ts": 1784523139.0, + "p_ref": 0.35, + "flow": 307, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "65683096658298859606615147960578045793549098941946558347974505694034380006348", + "ts": 1784534727.0, + "p_ref": 0.57, + "flow": 360, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "65683096658298859606615147960578045793549098941946558347974505694034380006348", + "ts": 1784535633.0, + "p_ref": 0.5299998780999061, + "flow": 330, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "65980394393050288393879230815188884870610560306426999177243172320059921258574", + "ts": 1784551319.0, + "p_ref": 0.47, + "flow": 329, + "title": "Set 1 Winner: Droguet vs Carabelli" + }, + { + "asset": "66039931446111026472034439496794366586471934010775962667980115062693265856790", + "ts": 1784557102.0, + "p_ref": 0.77, + "flow": 301, + "title": "Set 2 Winner: Quevedo vs Kalinina" + }, + { + "asset": "66090235212461220557188251467585496514393929931823021505462955560563959101922", + "ts": 1784531024.0, + "p_ref": 0.5396624327606494, + "flow": 412, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "66090235212461220557188251467585496514393929931823021505462955560563959101922", + "ts": 1784560739.0, + "p_ref": 0.492, + "flow": 357, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "66090235212461220557188251467585496514393929931823021505462955560563959101922", + "ts": 1784561945.0, + "p_ref": 0.787, + "flow": 639, + "title": "Zug: Buvaysar Gadamauri vs Alvaro Guillen Meza" + }, + { + "asset": "66658223663396309870630543288326361800368474031469024023292964264392735497899", + "ts": 1784527564.0, + "p_ref": 0.46, + "flow": 368, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "66658223663396309870630543288326361800368474031469024023292964264392735497899", + "ts": 1784550994.0, + "p_ref": 0.46, + "flow": 923, + "title": "Estoril Open: Henrique Rocha vs Pedro Martinez" + }, + { + "asset": "66688117672498426416772232242290787815275546758550329530525769700646651362875", + "ts": 1784556741.0, + "p_ref": 0.63, + "flow": 306, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 1 Winner" + }, + { + "asset": "66688117672498426416772232242290787815275546758550329530525769700646651362875", + "ts": 1784557769.0, + "p_ref": 0.62, + "flow": 307, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 1 Winner" + }, + { + "asset": "66688117672498426416772232242290787815275546758550329530525769700646651362875", + "ts": 1784559038.0, + "p_ref": 0.67, + "flow": 301, + "title": "Dota 2: Zero Tenacity vs Nemiga Gaming - Game 1 Winner" + }, + { + "asset": "66730885095687586533607954865733866866787931093691172397149501628254926316867", + "ts": 1784535623.0, + "p_ref": 0.78, + "flow": 1765, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "66730885095687586533607954865733866866787931093691172397149501628254926316867", + "ts": 1784536539.0, + "p_ref": 0.79, + "flow": 596, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "66730885095687586533607954865733866866787931093691172397149501628254926316867", + "ts": 1784540240.0, + "p_ref": 0.79, + "flow": 569, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "66730885095687586533607954865733866866787931093691172397149501628254926316867", + "ts": 1784541263.0, + "p_ref": 0.42, + "flow": 352, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "66871065271732130238363438209618016625358971031359081501766635284532824491758", + "ts": 1784560360.0, + "p_ref": 0.51, + "flow": 581, + "title": "Set 1 Winner: Ruzic vs Salkova" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784551471.0, + "p_ref": 0.659, + "flow": 427, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784554500.0, + "p_ref": 0.621, + "flow": 609, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784557019.0, + "p_ref": 0.605, + "flow": 421, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784561427.0, + "p_ref": 0.531, + "flow": 302, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784562775.0, + "p_ref": 0.5698873464478226, + "flow": 1335, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784563675.0, + "p_ref": 0.671, + "flow": 3106, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "67769867125827493004015638785884408718171347975932069639911046417399450999222", + "ts": 1784564615.0, + "p_ref": 0.565000000601311, + "flow": 393, + "title": "Zug: Thomas Faurel vs Daniel Rincon" + }, + { + "asset": "68196617741640620255862546831690232436257108032595675255480259055237687435694", + "ts": 1784525931.0, + "p_ref": 0.78, + "flow": 780, + "title": "Zug: Zsombor Piros vs Stefano Napolitano" + }, + { + "asset": "68196617741640620255862546831690232436257108032595675255480259055237687435694", + "ts": 1784555706.0, + "p_ref": 0.7480000010444539, + "flow": 392, + "title": "Zug: Zsombor Piros vs Stefano Napolitano" + }, + { + "asset": "68196617741640620255862546831690232436257108032595675255480259055237687435694", + "ts": 1784557505.0, + "p_ref": 0.749, + "flow": 345, + "title": "Zug: Zsombor Piros vs Stefano Napolitano" + }, + { + "asset": "68196617741640620255862546831690232436257108032595675255480259055237687435694", + "ts": 1784560292.0, + "p_ref": 0.8979999999705681, + "flow": 1894, + "title": "Zug: Zsombor Piros vs Stefano Napolitano" + }, + { + "asset": "68222708047287585546269086804329052133361994704067574736485663341862044279637", + "ts": 1784552710.0, + "p_ref": 0.8, + "flow": 409, + "title": "Kalmar FF vs. Malmo FF: O/U 1.5" + }, + { + "asset": "68222708047287585546269086804329052133361994704067574736485663341862044279637", + "ts": 1784563489.0, + "p_ref": 0.8100000016698645, + "flow": 344, + "title": "Kalmar FF vs. Malmo FF: O/U 1.5" + }, + { + "asset": "69322105206059736364530680472906603938298083806975339460555611277792753025708", + "ts": 1784551273.0, + "p_ref": 0.413, + "flow": 321, + "title": "Zug: Thiago Seyboth Wild vs Zdenek Kolar" + }, + { + "asset": "69330918966733942691012382117214809936166370798159504529089472338935639688253", + "ts": 1784550232.0, + "p_ref": 0.6, + "flow": 303, + "title": "Baltimore Orioles vs. Boston Red Sox: O/U 9.5" + }, + { + "asset": "69440299530903517795532887752389690643224612503888614308833541680509524733550", + "ts": 1784549705.0, + "p_ref": 0.65, + "flow": 337, + "title": "Counter-Strike: Misa Esports vs Lilmix (BO3) - NODWIN Clutch" + }, + { + "asset": "69440299530903517795532887752389690643224612503888614308833541680509524733550", + "ts": 1784551489.0, + "p_ref": 0.63, + "flow": 420, + "title": "Counter-Strike: Misa Esports vs Lilmix (BO3) - NODWIN Clutch" + }, + { + "asset": "69440299530903517795532887752389690643224612503888614308833541680509524733550", + "ts": 1784554247.0, + "p_ref": 0.62, + "flow": 322, + "title": "Counter-Strike: Misa Esports vs Lilmix (BO3) - NODWIN Clutch" + }, + { + "asset": "70192057684820144952722256592807177047695681213277322464898137718779406213298", + "ts": 1784542628.0, + "p_ref": 0.5, + "flow": 372, + "title": "Valorant: TEC Esports vs All Gamers - Map 2 Winner" + }, + { + "asset": "70192057684820144952722256592807177047695681213277322464898137718779406213298", + "ts": 1784543704.0, + "p_ref": 0.19, + "flow": 319, + "title": "Valorant: TEC Esports vs All Gamers - Map 2 Winner" + }, + { + "asset": "70838635600121549255067578135608064068860611839111670683488634869213965231633", + "ts": 1784539128.0, + "p_ref": 0.44, + "flow": 502, + "title": "Counter-Strike: Just Players vs Walczaki - Map 2 Winner" + }, + { + "asset": "70838635600121549255067578135608064068860611839111670683488634869213965231633", + "ts": 1784541057.0, + "p_ref": 0.63, + "flow": 1103, + "title": "Counter-Strike: Just Players vs Walczaki - Map 2 Winner" + }, + { + "asset": "71066098282803251849179324763825307239499065713017575689756694807577463361983", + "ts": 1784509928.0, + "p_ref": 0.46, + "flow": 345, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "71066098282803251849179324763825307239499065713017575689756694807577463361983", + "ts": 1784531058.0, + "p_ref": 0.47, + "flow": 940, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "71066098282803251849179324763825307239499065713017575689756694807577463361983", + "ts": 1784559103.0, + "p_ref": 0.47, + "flow": 1818, + "title": "Pittsburgh Pirates vs. New York Yankees" + }, + { + "asset": "71349978835120495267389371392761894998013907296667616051130278335439235447863", + "ts": 1784540913.0, + "p_ref": 0.56, + "flow": 484, + "title": "Set Handicap: Coppejans (-1.5) vs Cretu (+1.5)" + }, + { + "asset": "71452887047933372423302235302418032575662993439616438258893517310622454830563", + "ts": 1784554706.0, + "p_ref": 0.719, + "flow": 360, + "title": "Tampere: Gauthier Onclin vs Duje Ajdukovic" + }, + { + "asset": "71452887047933372423302235302418032575662993439616438258893517310622454830563", + "ts": 1784556816.0, + "p_ref": 0.4825, + "flow": 308, + "title": "Tampere: Gauthier Onclin vs Duje Ajdukovic" + }, + { + "asset": "71568010075885628598583163197908871283414798210510618882836990321663654223617", + "ts": 1784515962.0, + "p_ref": 0.2900000001023024, + "flow": 715, + "title": "Generali Open: Juan Manuel Cerundolo vs Marco Trungelliti" + }, + { + "asset": "71976577503166202938207187934350805508008454897187591779957610080013035059004", + "ts": 1784530789.0, + "p_ref": 0.5532839131094696, + "flow": 544, + "title": "Tampere: Inaki Montes vs Hynek Barton" + }, + { + "asset": "71976577503166202938207187934350805508008454897187591779957610080013035059004", + "ts": 1784557047.0, + "p_ref": 0.61, + "flow": 980, + "title": "Tampere: Inaki Montes vs Hynek Barton" + }, + { + "asset": "71976577503166202938207187934350805508008454897187591779957610080013035059004", + "ts": 1784558104.0, + "p_ref": 0.7800000017666899, + "flow": 412, + "title": "Tampere: Inaki Montes vs Hynek Barton" + }, + { + "asset": "7244046697498946228105157816024996215168901532530222682431932968894109906657", + "ts": 1784505933.0, + "p_ref": 0.47, + "flow": 1081, + "title": "New York Mets vs. Milwaukee Brewers: O/U 7.5" + }, + { + "asset": "72644589070863477884630468952263151000712153410932509845706159560254329804826", + "ts": 1784563039.0, + "p_ref": 0.69, + "flow": 310, + "title": "Vit Kopriva vs. Ignacio Buse: Total Sets O/U 2.5" + }, + { + "asset": "72722971816023832513699911037312715107838120013589948633556756171141327831781", + "ts": 1784556823.0, + "p_ref": 0.53, + "flow": 1120, + "title": "New York Liberty vs. Dallas Wings: O/U 174.5" + }, + { + "asset": "72722971816023832513699911037312715107838120013589948633556756171141327831781", + "ts": 1784561749.0, + "p_ref": 0.53, + "flow": 742, + "title": "New York Liberty vs. Dallas Wings: O/U 174.5" + }, + { + "asset": "72741101516699274036031936429814373419273037625272465878240629205151029890211", + "ts": 1784539381.0, + "p_ref": 0.85, + "flow": 307, + "title": "Counter-Strike: BIG Academy vs Entropy (BO3) - CCT Europe Cl" + }, + { + "asset": "72741101516699274036031936429814373419273037625272465878240629205151029890211", + "ts": 1784541518.0, + "p_ref": 0.67, + "flow": 305, + "title": "Counter-Strike: BIG Academy vs Entropy (BO3) - CCT Europe Cl" + }, + { + "asset": "72741101516699274036031936429814373419273037625272465878240629205151029890211", + "ts": 1784544705.0, + "p_ref": 0.8493283582089552, + "flow": 345, + "title": "Counter-Strike: BIG Academy vs Entropy (BO3) - CCT Europe Cl" + }, + { + "asset": "7277574070055419545004380134821469729240618019430285150218164963776504317448", + "ts": 1784559164.0, + "p_ref": 0.51, + "flow": 643, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 175.5" + }, + { + "asset": "72791681643729053621156688456890242256926902624245209389540694589542568277545", + "ts": 1784511574.0, + "p_ref": 0.49, + "flow": 496, + "title": "Minnesota Twins vs. Cleveland Guardians: O/U 7.5" + }, + { + "asset": "72809243812948330928824725944366155911576281416617777216666014415313584786679", + "ts": 1784552109.0, + "p_ref": 0.82, + "flow": 349, + "title": "Dota 2: Team Lynx vs PuckChamp (BO3) - EPL Masters Play-In G" + }, + { + "asset": "73219663012240476047476622841492044038212342901222685101131692763341373731592", + "ts": 1784534915.0, + "p_ref": 0.6098511433466196, + "flow": 5900, + "title": "Set 1 Winner: Sherif vs Badosa" + }, + { + "asset": "73531627041265916913854134686431196366750054078262111398552330451581231246531", + "ts": 1784542681.0, + "p_ref": 0.7200000004215054, + "flow": 1029, + "title": "Segovia: Yi Zhou vs Michael Geerts" + }, + { + "asset": "73531627041265916913854134686431196366750054078262111398552330451581231246531", + "ts": 1784555457.0, + "p_ref": 0.74, + "flow": 1039, + "title": "Segovia: Yi Zhou vs Michael Geerts" + }, + { + "asset": "73531627041265916913854134686431196366750054078262111398552330451581231246531", + "ts": 1784556703.0, + "p_ref": 0.76, + "flow": 300, + "title": "Segovia: Yi Zhou vs Michael Geerts" + }, + { + "asset": "73531627041265916913854134686431196366750054078262111398552330451581231246531", + "ts": 1784557782.0, + "p_ref": 0.89, + "flow": 725, + "title": "Segovia: Yi Zhou vs Michael Geerts" + }, + { + "asset": "73945428165832324284028536842646877273828881026157005973399034333623956012215", + "ts": 1784545178.0, + "p_ref": 0.34, + "flow": 340, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "73945428165832324284028536842646877273828881026157005973399034333623956012215", + "ts": 1784547676.0, + "p_ref": 0.38, + "flow": 330, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "73945428165832324284028536842646877273828881026157005973399034333623956012215", + "ts": 1784548592.0, + "p_ref": 0.6, + "flow": 367, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "73945428165832324284028536842646877273828881026157005973399034333623956012215", + "ts": 1784549497.0, + "p_ref": 0.8100001216000438, + "flow": 2214, + "title": "LoL: Kiwoom DRX vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "74156596134171586673990406971695024517401398510894220676408499113768373057771", + "ts": 1784544085.0, + "p_ref": 0.48, + "flow": 960, + "title": "Estoril Open: Hugo Gaston vs Damir Dzumhur" + }, + { + "asset": "74206475132266839930871051340460272835105182833325618614058796005516141782254", + "ts": 1784531407.0, + "p_ref": 0.38, + "flow": 314, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "74206475132266839930871051340460272835105182833325618614058796005516141782254", + "ts": 1784536306.0, + "p_ref": 0.46, + "flow": 322, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "74206475132266839930871051340460272835105182833325618614058796005516141782254", + "ts": 1784537597.0, + "p_ref": 0.4, + "flow": 474, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "74361845169344594979724330125727246254455381889717665306749325695196797527719", + "ts": 1784506505.0, + "p_ref": 0.77, + "flow": 705, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "74361845169344594979724330125727246254455381889717665306749325695196797527719", + "ts": 1784507923.0, + "p_ref": 0.8099999952166377, + "flow": 428, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "74361845169344594979724330125727246254455381889717665306749325695196797527719", + "ts": 1784508865.0, + "p_ref": 0.83, + "flow": 347, + "title": "Connecticut Sun vs. Phoenix Mercury" + }, + { + "asset": "74788246917175834154875904606520666464305330026135017554737101857550181087076", + "ts": 1784550219.0, + "p_ref": 0.5, + "flow": 1968, + "title": "Baltimore Orioles vs. Boston Red Sox: O/U 8.5" + }, + { + "asset": "74900482660783550970982174757855744204881801151189112780425076909426475976929", + "ts": 1784555641.0, + "p_ref": 0.37, + "flow": 1346, + "title": "Kalmar FF vs. Malmo FF: Both Teams to Score" + }, + { + "asset": "74900482660783550970982174757855744204881801151189112780425076909426475976929", + "ts": 1784556620.0, + "p_ref": 0.37, + "flow": 1142, + "title": "Kalmar FF vs. Malmo FF: Both Teams to Score" + }, + { + "asset": "74900482660783550970982174757855744204881801151189112780425076909426475976929", + "ts": 1784563484.0, + "p_ref": 0.3599999998942662, + "flow": 1139, + "title": "Kalmar FF vs. Malmo FF: Both Teams to Score" + }, + { + "asset": "75407628018494100290122959026860534347684382464279748797227287189605268958408", + "ts": 1784505827.0, + "p_ref": 0.4, + "flow": 533, + "title": "Los Angeles Dodgers vs. New York Yankees: O/U 8.5" + }, + { + "asset": "76196385492422957411249224872644212321226440231379826520873737456556558843197", + "ts": 1784537894.0, + "p_ref": 0.67, + "flow": 308, + "title": "Counter-Strike: BIG Academy vs Entropy - Map 1 Winner" + }, + { + "asset": "76383863842038753043495618205196461496662652070043010357030251426079275031822", + "ts": 1784533464.0, + "p_ref": 0.53, + "flow": 315, + "title": "Set Handicap: Kalinina (-1.5) vs Quevedo (+1.5)" + }, + { + "asset": "76431568590315718062755307044492142263334392565964276245719114270405691549206", + "ts": 1784563962.0, + "p_ref": 0.47, + "flow": 1073, + "title": "San Francisco Giants vs. Kansas City Royals" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784505953.0, + "p_ref": 0.1600000002016, + "flow": 307, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784508107.0, + "p_ref": 0.21, + "flow": 2218, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784509012.0, + "p_ref": 0.42, + "flow": 669, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784509938.0, + "p_ref": 0.54, + "flow": 319, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784510995.0, + "p_ref": 0.38, + "flow": 355, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "76952891609640771628427971953849792019339270665607704430794832217241348481044", + "ts": 1784511971.0, + "p_ref": 0.5500000001741064, + "flow": 1098, + "title": "Lincoln: Bernard Tomic vs Mark Lajal" + }, + { + "asset": "77639296320793724543659214979563960967202501129544994030575928300887751267200", + "ts": 1784509742.0, + "p_ref": 0.46, + "flow": 447, + "title": "Palermo: Ekaterine Gorgodze vs Ane Mintegi Del Olmo" + }, + { + "asset": "77639296320793724543659214979563960967202501129544994030575928300887751267200", + "ts": 1784543728.0, + "p_ref": 0.45, + "flow": 654, + "title": "Palermo: Ekaterine Gorgodze vs Ane Mintegi Del Olmo" + }, + { + "asset": "77728672108074189578264979344412917193610914991421048793182787583039775203690", + "ts": 1784542613.0, + "p_ref": 0.66, + "flow": 300, + "title": "Dota 2: Team Syntax vs Team Lynx (BO3) - EPL Masters Play-In" + }, + { + "asset": "78133662696963755776094990152799717202606764082835275607682698438970447430030", + "ts": 1784551017.0, + "p_ref": 0.63, + "flow": 441, + "title": "Set 1 Winner: Quevedo vs Kalinina" + }, + { + "asset": "78133662696963755776094990152799717202606764082835275607682698438970447430030", + "ts": 1784552893.0, + "p_ref": 0.85, + "flow": 972, + "title": "Set 1 Winner: Quevedo vs Kalinina" + }, + { + "asset": "78133662696963755776094990152799717202606764082835275607682698438970447430030", + "ts": 1784553858.0, + "p_ref": 0.82, + "flow": 357, + "title": "Set 1 Winner: Quevedo vs Kalinina" + }, + { + "asset": "78411067993536066432711946582414105376728275169619080384609234422951635624710", + "ts": 1784550432.0, + "p_ref": 0.7399999997368703, + "flow": 562, + "title": "Livesport Prague Open: Linda Fruhvirtova vs Barbora Krejciko" + }, + { + "asset": "78411067993536066432711946582414105376728275169619080384609234422951635624710", + "ts": 1784554136.0, + "p_ref": 0.7399999998009988, + "flow": 521, + "title": "Livesport Prague Open: Linda Fruhvirtova vs Barbora Krejciko" + }, + { + "asset": "7844819772828914249276259133126919565875245849439749028044482133053391904602", + "ts": 1784535552.0, + "p_ref": 0.598, + "flow": 311, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "7844819772828914249276259133126919565875245849439749028044482133053391904602", + "ts": 1784549492.0, + "p_ref": 0.661, + "flow": 887, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "7844819772828914249276259133126919565875245849439749028044482133053391904602", + "ts": 1784550892.0, + "p_ref": 0.524, + "flow": 1325, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "7844819772828914249276259133126919565875245849439749028044482133053391904602", + "ts": 1784552619.0, + "p_ref": 0.501, + "flow": 437, + "title": "Tampere: Daniel Galan vs Gilles Arnaud Bailly" + }, + { + "asset": "78451303686149004261408789676618308395660645141128598169090734730626057831919", + "ts": 1784558033.0, + "p_ref": 0.8, + "flow": 529, + "title": "Minnesota Lynx vs. Seattle Storm" + }, + { + "asset": "78715464007435958666227186010030362905921513030977607700656380974896503588697", + "ts": 1784520247.0, + "p_ref": 0.56, + "flow": 346, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 4 Winner" + }, + { + "asset": "78715464007435958666227186010030362905921513030977607700656380974896503588697", + "ts": 1784521426.0, + "p_ref": 0.59, + "flow": 304, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 4 Winner" + }, + { + "asset": "78715464007435958666227186010030362905921513030977607700656380974896503588697", + "ts": 1784522859.0, + "p_ref": 0.9, + "flow": 316, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 4 Winner" + }, + { + "asset": "78737404250571580203847210397631404542073725379872987388315893310228928691992", + "ts": 1784540913.0, + "p_ref": 0.54, + "flow": 1663, + "title": "Set 1 Winner: Cretu vs Coppejans" + }, + { + "asset": "78901217263846540290499684628306506855604900977325217571688242766818426918486", + "ts": 1784555642.0, + "p_ref": 0.3599999998161136, + "flow": 1018, + "title": "Kalmar FF vs. Malmo FF: O/U 3.5" + }, + { + "asset": "78901217263846540290499684628306506855604900977325217571688242766818426918486", + "ts": 1784557239.0, + "p_ref": 0.3599999996420681, + "flow": 362, + "title": "Kalmar FF vs. Malmo FF: O/U 3.5" + }, + { + "asset": "78901217263846540290499684628306506855604900977325217571688242766818426918486", + "ts": 1784563488.0, + "p_ref": 0.36, + "flow": 360, + "title": "Kalmar FF vs. Malmo FF: O/U 3.5" + }, + { + "asset": "78975540633640018065582377570365388021962546255430800982179913537135471940903", + "ts": 1784561749.0, + "p_ref": 0.47, + "flow": 658, + "title": "New York Liberty vs. Dallas Wings: O/U 174.5" + }, + { + "asset": "79041816108659557045506109977746657706547306347371590418100531155951336969366", + "ts": 1784551637.0, + "p_ref": 0.6, + "flow": 316, + "title": "Dota 2: Team Lynx vs PuckChamp - Game 2 Winner" + }, + { + "asset": "79041816108659557045506109977746657706547306347371590418100531155951336969366", + "ts": 1784552626.0, + "p_ref": 0.6892250922509225, + "flow": 361, + "title": "Dota 2: Team Lynx vs PuckChamp - Game 2 Winner" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784543657.0, + "p_ref": 0.6620000002514983, + "flow": 1863, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784544743.0, + "p_ref": 0.692, + "flow": 2191, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784546111.0, + "p_ref": 0.4379999797643989, + "flow": 361, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784547073.0, + "p_ref": 0.413000000699335, + "flow": 403, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784547981.0, + "p_ref": 0.499, + "flow": 347, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784548905.0, + "p_ref": 0.356, + "flow": 951, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79505409465426977183001616282779276370942755712221987237609331071002826637396", + "ts": 1784549907.0, + "p_ref": 0.219, + "flow": 673, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "79853004580477085343859368635499537730415308162049867101451584798605276549343", + "ts": 1784560520.0, + "p_ref": 0.58, + "flow": 315, + "title": "Set 1 Winner: Fernandez vs Tobon" + }, + { + "asset": "80100385729695124084424683220846148157502771507840014988546218366057751448536", + "ts": 1784509300.0, + "p_ref": 0.48, + "flow": 442, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 3.5" + }, + { + "asset": "80100385729695124084424683220846148157502771507840014988546218366057751448536", + "ts": 1784511315.0, + "p_ref": 0.65, + "flow": 320, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 3.5" + }, + { + "asset": "80100385729695124084424683220846148157502771507840014988546218366057751448536", + "ts": 1784512286.0, + "p_ref": 0.26, + "flow": 335, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 3.5" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784506167.0, + "p_ref": 0.68, + "flow": 397, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784515250.0, + "p_ref": 0.67, + "flow": 357, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784528129.0, + "p_ref": 0.65, + "flow": 349, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784532242.0, + "p_ref": 0.55, + "flow": 322, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784533277.0, + "p_ref": 0.44, + "flow": 332, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784534289.0, + "p_ref": 0.39, + "flow": 311, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784535190.0, + "p_ref": 0.42, + "flow": 352, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "8010274810019250012280955460652291193565419131104924567554147089231730637108", + "ts": 1784536095.0, + "p_ref": 0.34, + "flow": 304, + "title": "LoL: Nongshim Red Force vs KT Rolster (BO1) - KeSPA Cup Grou" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784535253.0, + "p_ref": 0.21, + "flow": 532, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784536210.0, + "p_ref": 0.5378486032848685, + "flow": 346, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784537286.0, + "p_ref": 0.66, + "flow": 372, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784538341.0, + "p_ref": 0.5, + "flow": 436, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784539259.0, + "p_ref": 0.29, + "flow": 720, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80479205488069915742828207043687384824625386506572497521518422214068699760979", + "ts": 1784540182.0, + "p_ref": 0.1, + "flow": 315, + "title": "Hamburg European Open, Qualification: Jessica Pieri vs Maria" + }, + { + "asset": "80863866218294043271256568113455732660063993408491544508364159957604286004464", + "ts": 1784561968.0, + "p_ref": 0.4509060920532895, + "flow": 318, + "title": "Set 1 Winner: Silva vs Assche" + }, + { + "asset": "81205353541955091539529845802295598616722157630440622883055725582161100852385", + "ts": 1784525813.0, + "p_ref": 0.5599999999731443, + "flow": 2502, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "81205353541955091539529845802295598616722157630440622883055725582161100852385", + "ts": 1784528080.0, + "p_ref": 0.6099999988101013, + "flow": 478, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "81205353541955091539529845802295598616722157630440622883055725582161100852385", + "ts": 1784529006.0, + "p_ref": 0.66, + "flow": 304, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "81205353541955091539529845802295598616722157630440622883055725582161100852385", + "ts": 1784529906.0, + "p_ref": 0.86, + "flow": 805, + "title": "LoL: Nongshim Red Force vs HANJIN BRION (BO1) - KeSPA Cup Gr" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784506083.0, + "p_ref": 0.66, + "flow": 444, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784515631.0, + "p_ref": 0.66, + "flow": 438, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784528429.0, + "p_ref": 0.66, + "flow": 416, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784531118.0, + "p_ref": 0.64, + "flow": 330, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784532547.0, + "p_ref": 0.5900000323041974, + "flow": 305, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81295678531222554355676350669020133248643398923736495954613187409695135831584", + "ts": 1784537666.0, + "p_ref": 0.57, + "flow": 365, + "title": "LoL: DN SOOPers vs HANJIN BRION (BO1) - KeSPA Cup Group Stag" + }, + { + "asset": "81399663148285213831452671089096985403727033545335958281559498598483545135880", + "ts": 1784541524.0, + "p_ref": 0.84, + "flow": 947, + "title": "Set 1 Winner: Muller vs Navone" + }, + { + "asset": "8141238223265987138474389431774558232841062011091649169965585197706531667336", + "ts": 1784546257.0, + "p_ref": 0.44, + "flow": 361, + "title": "Dota 2: Team Lynx vs PuckChamp - Game 1 Winner" + }, + { + "asset": "82224066790168271179957759132755848037834084736912537881328529577525499891871", + "ts": 1784557094.0, + "p_ref": 0.85, + "flow": 348, + "title": "Counter-Strike: MAGICOS vs Blitzkrieg (BO3) - CCT South Amer" + }, + { + "asset": "82224066790168271179957759132755848037834084736912537881328529577525499891871", + "ts": 1784560238.0, + "p_ref": 0.8, + "flow": 885, + "title": "Counter-Strike: MAGICOS vs Blitzkrieg (BO3) - CCT South Amer" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784514986.0, + "p_ref": 0.75, + "flow": 438, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784519939.0, + "p_ref": 0.7600000020895858, + "flow": 335, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784527466.0, + "p_ref": 0.77, + "flow": 2705, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784535884.0, + "p_ref": 0.76, + "flow": 760, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784545429.0, + "p_ref": 0.76, + "flow": 760, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784546710.0, + "p_ref": 0.9, + "flow": 529, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784547615.0, + "p_ref": 0.73, + "flow": 931, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784548519.0, + "p_ref": 0.4, + "flow": 483, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "82718450732765101705427304749198902322177386351932828780414256441581507661681", + "ts": 1784549420.0, + "p_ref": 0.3300000000268, + "flow": 534, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784512545.0, + "p_ref": 0.3500000000325, + "flow": 538, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784518196.0, + "p_ref": 0.36, + "flow": 1163, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784535020.0, + "p_ref": 0.31, + "flow": 1742, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784535939.0, + "p_ref": 0.53, + "flow": 509, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784536869.0, + "p_ref": 0.44, + "flow": 329, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784537846.0, + "p_ref": 0.78, + "flow": 1498, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "8324558822550589420279597612770037873272482670297057944695843684959546272150", + "ts": 1784538852.0, + "p_ref": 0.86, + "flow": 5574, + "title": "Iasi Open: Mayar Sherif vs Paula Badosa" + }, + { + "asset": "83582296492980534778377239484324638978816112111022215938213693756561263897075", + "ts": 1784547206.0, + "p_ref": 0.4863694267515924, + "flow": 321, + "title": "Dota 2: Team Lynx vs PuckChamp - Game 1 Winner" + }, + { + "asset": "83582296492980534778377239484324638978816112111022215938213693756561263897075", + "ts": 1784548328.0, + "p_ref": 0.5, + "flow": 304, + "title": "Dota 2: Team Lynx vs PuckChamp - Game 1 Winner" + }, + { + "asset": "8364655564223124741316119368114595617889821319505528664413779259052600686", + "ts": 1784558373.0, + "p_ref": 0.69, + "flow": 324, + "title": "Valorant: SK Nebula vs GIANTX GC (BO3) - VCT Game Changers E" + }, + { + "asset": "8364655564223124741316119368114595617889821319505528664413779259052600686", + "ts": 1784565464.0, + "p_ref": 0.89, + "flow": 309, + "title": "Valorant: SK Nebula vs GIANTX GC (BO3) - VCT Game Changers E" + }, + { + "asset": "84376320909387649554480782893202349604344054153549990490469629030080463605715", + "ts": 1784551945.0, + "p_ref": 0.75, + "flow": 2242, + "title": "Washington Mystics vs. Golden State Valkyries" + }, + { + "asset": "84376320909387649554480782893202349604344054153549990490469629030080463605715", + "ts": 1784561066.0, + "p_ref": 0.76, + "flow": 1184, + "title": "Washington Mystics vs. Golden State Valkyries" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784546260.0, + "p_ref": 0.7, + "flow": 634, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784555432.0, + "p_ref": 0.7, + "flow": 342, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784556669.0, + "p_ref": 0.701000001859388, + "flow": 393, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784558792.0, + "p_ref": 0.805, + "flow": 2000, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784560225.0, + "p_ref": 0.5820000009620635, + "flow": 382, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784561138.0, + "p_ref": 0.329, + "flow": 389, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784562131.0, + "p_ref": 0.3230000002188967, + "flow": 363, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84574622811026731640352613867178747039681736384454256791526206930433813154607", + "ts": 1784563079.0, + "p_ref": 0.127, + "flow": 568, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84667072627551459825788926484897650698939352860652489252133242887552878725759", + "ts": 1784510450.0, + "p_ref": 0.26, + "flow": 303, + "title": "LoL: LYON Academy vs Zeu5 Esports (BO3) - LRN Regular season" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784546259.0, + "p_ref": 0.3, + "flow": 453, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784555587.0, + "p_ref": 0.306, + "flow": 787, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784556777.0, + "p_ref": 0.2689999997544078, + "flow": 731, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784557920.0, + "p_ref": 0.13, + "flow": 1081, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784558840.0, + "p_ref": 0.1849999837004402, + "flow": 351, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784560687.0, + "p_ref": 0.44, + "flow": 493, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784561816.0, + "p_ref": 0.6, + "flow": 741, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84723930055039078609715716209732319088251461438797609225416248487100308878788", + "ts": 1784562788.0, + "p_ref": 0.714, + "flow": 5546, + "title": "Livesport Prague Open: Ayla Aksu vs Sofia Costoulas" + }, + { + "asset": "84868502756184010158943978944900709124511893134036954370568665565972537041694", + "ts": 1784547739.0, + "p_ref": 0.76000000144, + "flow": 317, + "title": "Set Handicap: Podrez (-1.5) vs Lee (+1.5)" + }, + { + "asset": "85186323267712525545833601135293463226157654708764129498133374114157629426383", + "ts": 1784542569.0, + "p_ref": 0.51, + "flow": 1245, + "title": "Livesport Prague Open: Eva Lys vs Tereza Valentova" + }, + { + "asset": "85186323267712525545833601135293463226157654708764129498133374114157629426383", + "ts": 1784544856.0, + "p_ref": 0.5, + "flow": 307, + "title": "Livesport Prague Open: Eva Lys vs Tereza Valentova" + }, + { + "asset": "85569432436778974309092392613945995580452769237889815396510188881772785237972", + "ts": 1784538595.0, + "p_ref": 0.72, + "flow": 311, + "title": "Valorant: TEC Esports vs All Gamers - Map 1 Winner" + }, + { + "asset": "85569432436778974309092392613945995580452769237889815396510188881772785237972", + "ts": 1784539628.0, + "p_ref": 0.71, + "flow": 456, + "title": "Valorant: TEC Esports vs All Gamers - Map 1 Winner" + }, + { + "asset": "85569432436778974309092392613945995580452769237889815396510188881772785237972", + "ts": 1784541388.0, + "p_ref": 0.78, + "flow": 388, + "title": "Valorant: TEC Esports vs All Gamers - Map 1 Winner" + }, + { + "asset": "85668442906928385395551462798788407464313963503744250124692121587504676752188", + "ts": 1784540931.0, + "p_ref": 0.76, + "flow": 305, + "title": "Set Handicap: Cretu (-1.5) vs Coppejans (+1.5)" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784506190.0, + "p_ref": 0.55, + "flow": 374, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784507098.0, + "p_ref": 0.6200000004691901, + "flow": 458, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784508031.0, + "p_ref": 0.56, + "flow": 518, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784509129.0, + "p_ref": 0.65, + "flow": 325, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784510126.0, + "p_ref": 0.6400000001300682, + "flow": 1725, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784511149.0, + "p_ref": 0.4500000008884916, + "flow": 362, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784512051.0, + "p_ref": 0.55, + "flow": 768, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "85832890701320243351516459349309841264487464505744495909847490527582351445789", + "ts": 1784513068.0, + "p_ref": 0.7800000003723867, + "flow": 1632, + "title": "Los Angeles Dodgers vs. New York Yankees" + }, + { + "asset": "86146534969771919280539410259880409845161844207926568522088204566794289157227", + "ts": 1784566052.0, + "p_ref": 0.82, + "flow": 859, + "title": "Will FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea" + }, + { + "asset": "86334367331667283980648131382054422627239667237630428146983142531151605528470", + "ts": 1784535054.0, + "p_ref": 0.5492307554450252, + "flow": 571, + "title": "Bloomfield Hills: Alexis Galarneau vs Pablo Llamas Ruiz" + }, + { + "asset": "86388845697762088373603476081598079078502227628893571329206994613822935939758", + "ts": 1784552717.0, + "p_ref": 0.81, + "flow": 386, + "title": "Kalmar FF vs. Malmo FF: O/U 4.5" + }, + { + "asset": "86388845697762088373603476081598079078502227628893571329206994613822935939758", + "ts": 1784563486.0, + "p_ref": 0.8099999999145555, + "flow": 1138, + "title": "Kalmar FF vs. Malmo FF: O/U 4.5" + }, + { + "asset": "86388845697762088373603476081598079078502227628893571329206994613822935939758", + "ts": 1784565043.0, + "p_ref": 0.84, + "flow": 327, + "title": "Kalmar FF vs. Malmo FF: O/U 4.5" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784513158.0, + "p_ref": 0.25, + "flow": 946, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784527466.0, + "p_ref": 0.23, + "flow": 391, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784546530.0, + "p_ref": 0.1400000000316097, + "flow": 337, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784547430.0, + "p_ref": 0.17, + "flow": 1476, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784548330.0, + "p_ref": 0.62, + "flow": 503, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86443778351656447853225627300855609799509092542077018604852976901702797905497", + "ts": 1784549324.0, + "p_ref": 0.6, + "flow": 334, + "title": "Estoril Open: Tiago Torres vs Nikoloz Basilashvili" + }, + { + "asset": "86526813532171496682135423085230215319971366312561951752512128289118332701531", + "ts": 1784513958.0, + "p_ref": 0.52, + "flow": 1300, + "title": "Estoril Open: Hugo Gaston vs Damir Dzumhur" + }, + { + "asset": "87046928479686449931524551650341060981822099004976292899114396354891022140914", + "ts": 1784525939.0, + "p_ref": 0.28, + "flow": 346, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "87046928479686449931524551650341060981822099004976292899114396354891022140914", + "ts": 1784526913.0, + "p_ref": 0.28, + "flow": 334, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "87046928479686449931524551650341060981822099004976292899114396354891022140914", + "ts": 1784530202.0, + "p_ref": 0.3100000000662431, + "flow": 302, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "87046928479686449931524551650341060981822099004976292899114396354891022140914", + "ts": 1784531108.0, + "p_ref": 0.35, + "flow": 333, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "87046928479686449931524551650341060981822099004976292899114396354891022140914", + "ts": 1784532012.0, + "p_ref": 0.66, + "flow": 2130, + "title": "LoL: DN SOOPers vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "87310836774572562361652197866076721406496610842416973071674584056938118118282", + "ts": 1784535876.0, + "p_ref": 0.5390180002933187, + "flow": 406, + "title": "Zug: Thiago Seyboth Wild vs Zdenek Kolar" + }, + { + "asset": "87310836774572562361652197866076721406496610842416973071674584056938118118282", + "ts": 1784551010.0, + "p_ref": 0.539000001094875, + "flow": 310, + "title": "Zug: Thiago Seyboth Wild vs Zdenek Kolar" + }, + { + "asset": "87310836774572562361652197866076721406496610842416973071674584056938118118282", + "ts": 1784553244.0, + "p_ref": 0.765, + "flow": 426, + "title": "Zug: Thiago Seyboth Wild vs Zdenek Kolar" + }, + { + "asset": "87466433427440542043594321851023579850804326624526609109647135170599881208592", + "ts": 1784566055.0, + "p_ref": 0.6, + "flow": 664, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "87749022504211562254550873638553359255013478188951030714751066155381810150628", + "ts": 1784547017.0, + "p_ref": 0.34, + "flow": 1047, + "title": "Counter-Strike: ARCRED vs 1WIN - Map 2 Winner" + }, + { + "asset": "87749022504211562254550873638553359255013478188951030714751066155381810150628", + "ts": 1784548650.0, + "p_ref": 0.4599999998319972, + "flow": 668, + "title": "Counter-Strike: ARCRED vs 1WIN - Map 2 Winner" + }, + { + "asset": "87760987756458247625116170087521321201705646321373111350419250647792563881105", + "ts": 1784562375.0, + "p_ref": 0.88, + "flow": 1005, + "title": "Set 1 Winner: Podoroska vs Stusek" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784528049.0, + "p_ref": 0.21, + "flow": 394, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784539504.0, + "p_ref": 0.14, + "flow": 722, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784540417.0, + "p_ref": 0.18, + "flow": 384, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784543920.0, + "p_ref": 0.29, + "flow": 318, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784544833.0, + "p_ref": 0.21, + "flow": 370, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "88094921142780677091285119304255533474147469781940162729887253545937770798927", + "ts": 1784545779.0, + "p_ref": 0.26, + "flow": 1210, + "title": "Livesport Prague Open: Ella Seidel vs Daria Snigur" + }, + { + "asset": "8836913449627935722414956027229430047403377512794184084094326241134646909302", + "ts": 1784532829.0, + "p_ref": 0.58, + "flow": 580, + "title": "Set Handicap: Navone (-1.5) vs Muller (+1.5)" + }, + { + "asset": "88414601375105240621922894589557768648547606398613213776628368707024904642975", + "ts": 1784535831.0, + "p_ref": 0.4000000001225766, + "flow": 653, + "title": "Sherif vs. Badosa: Match O/U 21.5" + }, + { + "asset": "88753296059597659527326641012733046860515678485954111401785627271953021765082", + "ts": 1784543941.0, + "p_ref": 0.8300000018090308, + "flow": 464, + "title": "Palermo: Fiona Ferro vs Yufei Ren" + }, + { + "asset": "88778146936061064074419533543233001964726873561660572809143036704346610540015", + "ts": 1784551017.0, + "p_ref": 0.32, + "flow": 640, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "88778146936061064074419533543233001964726873561660572809143036704346610540015", + "ts": 1784553498.0, + "p_ref": 0.1899999998112393, + "flow": 607, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "88778146936061064074419533543233001964726873561660572809143036704346610540015", + "ts": 1784554519.0, + "p_ref": 0.3400000011051805, + "flow": 391, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "88778146936061064074419533543233001964726873561660572809143036704346610540015", + "ts": 1784556593.0, + "p_ref": 0.1, + "flow": 774, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "88778146936061064074419533543233001964726873561660572809143036704346610540015", + "ts": 1784557494.0, + "p_ref": 0.19, + "flow": 1052, + "title": "Hamburg European Open: Kaitlin Quevedo vs Anhelina Kalinina" + }, + { + "asset": "89075254764665057720880326715709921218317311819880908509837583748600076088451", + "ts": 1784519291.0, + "p_ref": 0.54, + "flow": 406, + "title": "Orix Buffaloes vs. Nippon Ham Fighters" + }, + { + "asset": "89305552691093669860481718533921168472599151573285816333128507298403554513997", + "ts": 1784561975.0, + "p_ref": 0.6299999996697825, + "flow": 314, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "89357222412573682681681039673786053192471774279525565413548237714669148545662", + "ts": 1784525602.0, + "p_ref": 0.5, + "flow": 320, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 174.5" + }, + { + "asset": "89357222412573682681681039673786053192471774279525565413548237714669148545662", + "ts": 1784554117.0, + "p_ref": 0.52, + "flow": 831, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 174.5" + }, + { + "asset": "89497828114697538415622626514341970965222729861340164480596940386872573064499", + "ts": 1784509691.0, + "p_ref": 0.53, + "flow": 343, + "title": "LoL: Kits Esports vs SDM Tigres (BO3) - LRN Regular season" + }, + { + "asset": "89941189586897700933682270524900044626786354917466414711840064816279500068662", + "ts": 1784527663.0, + "p_ref": 0.83, + "flow": 349, + "title": "Counter-Strike: Nuclear TigeRES vs MOUZ (BO3) - BLAST Bounty" + }, + { + "asset": "89941189586897700933682270524900044626786354917466414711840064816279500068662", + "ts": 1784560419.0, + "p_ref": 0.83, + "flow": 668, + "title": "Counter-Strike: Nuclear TigeRES vs MOUZ (BO3) - BLAST Bounty" + }, + { + "asset": "90334467485597136352338093659775424556447989915012160208008816171082813769141", + "ts": 1784555642.0, + "p_ref": 0.64, + "flow": 1036, + "title": "Kalmar FF vs. Malmo FF: O/U 3.5" + }, + { + "asset": "90334467485597136352338093659775424556447989915012160208008816171082813769141", + "ts": 1784563488.0, + "p_ref": 0.64, + "flow": 4436, + "title": "Kalmar FF vs. Malmo FF: O/U 3.5" + }, + { + "asset": "90413591888479416877723828074523481114347050081544236273622215490014562367506", + "ts": 1784510792.0, + "p_ref": 0.7098695837572824, + "flow": 401, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 4.5" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784533628.0, + "p_ref": 0.22, + "flow": 700, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784559274.0, + "p_ref": 0.28, + "flow": 788, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784560292.0, + "p_ref": 0.38, + "flow": 2029, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784561552.0, + "p_ref": 0.33, + "flow": 1130, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784562688.0, + "p_ref": 0.2, + "flow": 301, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784565165.0, + "p_ref": 0.32, + "flow": 354, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90570114039169688618332619019329588397011320797573984939568353646972144311696", + "ts": 1784566151.0, + "p_ref": 0.6795539772727273, + "flow": 422, + "title": "Hamburg European Open: Nadia Podoroska vs Julia Stusek" + }, + { + "asset": "90588790498177317853764534749115957616619710081302034914622260948170768422890", + "ts": 1784566610.0, + "p_ref": 0.56, + "flow": 304, + "title": "Dota 2: Spirit Academy vs Team Jenz - Game 1 Winner" + }, + { + "asset": "90805751463232687982944189245904951426759793032020932239909390822334581308006", + "ts": 1784510265.0, + "p_ref": 0.42, + "flow": 306, + "title": "LoL: LYON Academy vs Zeu5 Esports (BO3) - LRN Regular season" + }, + { + "asset": "90805751463232687982944189245904951426759793032020932239909390822334581308006", + "ts": 1784514857.0, + "p_ref": 0.68, + "flow": 320, + "title": "LoL: LYON Academy vs Zeu5 Esports (BO3) - LRN Regular season" + }, + { + "asset": "91070240802572245238051494579833716576384584024524508652584607191165075317994", + "ts": 1784550232.0, + "p_ref": 0.49, + "flow": 436, + "title": "Baltimore Orioles vs. Boston Red Sox: O/U 8.5" + }, + { + "asset": "91682468815045463585161310153785554583074284226893399124305886661726722084248", + "ts": 1784540900.0, + "p_ref": 0.75, + "flow": 645, + "title": "Cretu vs. Coppejans: Set 1 Games O/U 10.5" + }, + { + "asset": "91799382220361392819238490155167759580105647915260562346067745849695736960013", + "ts": 1784508841.0, + "p_ref": 0.5999999999460478, + "flow": 2224, + "title": "Livesport Prague Open: Laura Samson vs Maya Joint" + }, + { + "asset": "91816645812766936459253106539880578770763510531101888577316334457986411111078", + "ts": 1784539352.0, + "p_ref": 0.47, + "flow": 339, + "title": "Valorant: TEC Esports vs All Gamers - Map 1 Winner" + }, + { + "asset": "91816645812766936459253106539880578770763510531101888577316334457986411111078", + "ts": 1784540331.0, + "p_ref": 0.36, + "flow": 300, + "title": "Valorant: TEC Esports vs All Gamers - Map 1 Winner" + }, + { + "asset": "92151906828313508605324325752348166459697037053034853638292963790147772656980", + "ts": 1784556473.0, + "p_ref": 0.68, + "flow": 329, + "title": "Counter-Strike: SAW Youngsters vs Misa Esports - Map 1 Winne" + }, + { + "asset": "92306203900757191260241364910628874840065316145768919308715223244977779170810", + "ts": 1784517115.0, + "p_ref": 0.53, + "flow": 530, + "title": "Set Handicap: Hanfmann (-1.5) vs Neumayer (+1.5)" + }, + { + "asset": "92437059501120689620794001770389023397207624661526415224504515157437931809594", + "ts": 1784554131.0, + "p_ref": 0.42, + "flow": 302, + "title": "Baltimore Orioles vs. Boston Red Sox" + }, + { + "asset": "92687894196330983188264776060342293481565604902333162938626988231342319757912", + "ts": 1784558033.0, + "p_ref": 0.2, + "flow": 400, + "title": "Minnesota Lynx vs. Seattle Storm" + }, + { + "asset": "93036597424259735176896284074780614592235071949022045097155134378766494569700", + "ts": 1784531195.0, + "p_ref": 0.6, + "flow": 474, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "93036597424259735176896284074780614592235071949022045097155134378766494569700", + "ts": 1784532107.0, + "p_ref": 0.41, + "flow": 722, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "93036597424259735176896284074780614592235071949022045097155134378766494569700", + "ts": 1784539499.0, + "p_ref": 0.24, + "flow": 336, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "93036597424259735176896284074780614592235071949022045097155134378766494569700", + "ts": 1784540892.0, + "p_ref": 0.2099999995242086, + "flow": 328, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "93036597424259735176896284074780614592235071949022045097155134378766494569700", + "ts": 1784542014.0, + "p_ref": 0.63, + "flow": 555, + "title": "LoL: Kiwoom DRX vs BNK FEARX (BO1) - KeSPA Cup Group Stage" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784543657.0, + "p_ref": 0.3379328450900972, + "flow": 951, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784544743.0, + "p_ref": 0.3078655354474315, + "flow": 849, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784545874.0, + "p_ref": 0.576, + "flow": 601, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784546827.0, + "p_ref": 0.5180000010199614, + "flow": 415, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784547806.0, + "p_ref": 0.550000001011236, + "flow": 374, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784548711.0, + "p_ref": 0.73, + "flow": 380, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "93645679408042054650537896977574367827739299786179171392698652765184359823943", + "ts": 1784549851.0, + "p_ref": 0.782, + "flow": 330, + "title": "Hamburg European Open, Qualification: Arantxa Rus vs Chloe P" + }, + { + "asset": "94208959631419541182441980403808817923162487656702165686080893231555503222459", + "ts": 1784565844.0, + "p_ref": 0.7392857142857143, + "flow": 316, + "title": "Valorant: Gentle Mates GC vs G2 Gozen - Map 2 Winner" + }, + { + "asset": "94214119417875316937337773896803118766771867611626419841876345792222842479461", + "ts": 1784542568.0, + "p_ref": 0.62, + "flow": 500, + "title": "Eva Lys vs. Tereza Valentova: Total Sets O/U 2.5" + }, + { + "asset": "94341300488874354826300438666564191038587284977843809385413804903088286201279", + "ts": 1784546054.0, + "p_ref": 0.9, + "flow": 2049, + "title": "Hamburg European Open, Qualification: Elena Pridankina vs Vi" + }, + { + "asset": "94637902672917503014268285958427893976989315220156243157375804646079746112910", + "ts": 1784554420.0, + "p_ref": 0.45, + "flow": 370, + "title": "St. Louis Cardinals vs. Los Angeles Angels: O/U 8.5" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784513498.0, + "p_ref": 0.4699999924799996, + "flow": 314, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784514425.0, + "p_ref": 0.48, + "flow": 317, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784515559.0, + "p_ref": 0.6, + "flow": 909, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784516939.0, + "p_ref": 0.56, + "flow": 390, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784517942.0, + "p_ref": 0.8092307692307692, + "flow": 319, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94736298577465559601017077070851899873195180578777930290701378398776998084449", + "ts": 1784519107.0, + "p_ref": 0.62, + "flow": 335, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "94756022915006113883161007263351883726864634587096817528314973873423707438326", + "ts": 1784536591.0, + "p_ref": 0.34, + "flow": 323, + "title": "Dota 2: Team Syntax vs Team Lynx - Game 2 Winner" + }, + { + "asset": "94756022915006113883161007263351883726864634587096817528314973873423707438326", + "ts": 1784538792.0, + "p_ref": 0.63, + "flow": 357, + "title": "Dota 2: Team Syntax vs Team Lynx - Game 2 Winner" + }, + { + "asset": "94756022915006113883161007263351883726864634587096817528314973873423707438326", + "ts": 1784539697.0, + "p_ref": 0.82, + "flow": 419, + "title": "Dota 2: Team Syntax vs Team Lynx - Game 2 Winner" + }, + { + "asset": "95359584497045561755246608728418384085295650425506494276251116654782192050255", + "ts": 1784525084.0, + "p_ref": 0.57, + "flow": 305, + "title": "Tampa Bay Rays vs. Toronto Blue Jays" + }, + { + "asset": "95405978401908354724126761510478921768556402221246787294071316288771309798389", + "ts": 1784510709.0, + "p_ref": 0.3, + "flow": 428, + "title": "Club Alianza Lima vs. CS Huancayo: O/U 4.5" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784541805.0, + "p_ref": 0.81, + "flow": 3996, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784554526.0, + "p_ref": 0.8, + "flow": 4557, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784555538.0, + "p_ref": 0.79, + "flow": 1339, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784556770.0, + "p_ref": 0.79, + "flow": 457, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784559972.0, + "p_ref": 0.81, + "flow": 3374, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784560957.0, + "p_ref": 0.7900000001273424, + "flow": 3754, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784562113.0, + "p_ref": 0.74, + "flow": 322, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784563319.0, + "p_ref": 0.7400000003849083, + "flow": 1000, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784564757.0, + "p_ref": 0.9, + "flow": 313, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96023540397628112837546047977193371301749440336882454902113868095059101184845", + "ts": 1784565742.0, + "p_ref": 0.79, + "flow": 415, + "title": "Estoril Open: Frederico Ferreira Silva vs Luca Van Assche" + }, + { + "asset": "96203872706042371182220470042484069150812507371145290355112527499883547325440", + "ts": 1784520799.0, + "p_ref": 0.43, + "flow": 301, + "title": "Neumayer vs. Hanfmann: Match O/U 21.5" + }, + { + "asset": "96203872706042371182220470042484069150812507371145290355112527499883547325440", + "ts": 1784522205.0, + "p_ref": 0.4200000022264876, + "flow": 308, + "title": "Neumayer vs. Hanfmann: Match O/U 21.5" + }, + { + "asset": "9674876144023759362564298834996140214342697565808839337573482741563702126005", + "ts": 1784566004.0, + "p_ref": 0.7400000016402001, + "flow": 370, + "title": "ITF Brisbane: Yeri Hong vs Aishi Das" + }, + { + "asset": "97292703804834172920129955458063197804935489966237167618459528717892137669138", + "ts": 1784550355.0, + "p_ref": 0.5, + "flow": 434, + "title": "FC Corvinul 1921 Hunedoara vs. FK Cs\u00edkszereda Miercurea Ciuc" + }, + { + "asset": "9750033275733319174204828681252713028235384734921992694549874223193399244072", + "ts": 1784538442.0, + "p_ref": 0.76, + "flow": 397, + "title": "Dota 2: Team Syntax vs Team Lynx - Game 2 Winner" + }, + { + "asset": "97830885624262300132520562023295398331774485694110015386053888599473966813201", + "ts": 1784552696.0, + "p_ref": 0.76, + "flow": 368, + "title": "Kalmar FF vs. Malmo FF: Malmo FF O/U 2.5" + }, + { + "asset": "97830885624262300132520562023295398331774485694110015386053888599473966813201", + "ts": 1784563495.0, + "p_ref": 0.8099999997221841, + "flow": 326, + "title": "Kalmar FF vs. Malmo FF: Malmo FF O/U 2.5" + }, + { + "asset": "98000764057896708740754713473008769937508902452143001564486224079260994465581", + "ts": 1784535391.0, + "p_ref": 0.71, + "flow": 406, + "title": "Counter-Strike: eSuba vs EAC Rising (BO3) - United21 Playoff" + }, + { + "asset": "98051990955026828174289574835956937983113743742402728934493761832846692317338", + "ts": 1784550687.0, + "p_ref": 0.3, + "flow": 300, + "title": "Orgryte IS vs. Djurgardens IF: O/U 2.5" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784508318.0, + "p_ref": 0.37, + "flow": 452, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784513321.0, + "p_ref": 0.37, + "flow": 834, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784529500.0, + "p_ref": 0.37, + "flow": 318, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784557974.0, + "p_ref": 0.34, + "flow": 343, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784559226.0, + "p_ref": 0.3200000001080703, + "flow": 866, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784560396.0, + "p_ref": 0.35, + "flow": 1537, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784561394.0, + "p_ref": 0.14, + "flow": 1545, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784562671.0, + "p_ref": 0.1, + "flow": 305, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784563608.0, + "p_ref": 0.36, + "flow": 663, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784564522.0, + "p_ref": 0.1500000000111842, + "flow": 841, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98203256382280208418190843602260521683354589626388141727856266964934799652740", + "ts": 1784565550.0, + "p_ref": 0.4500000000555825, + "flow": 1809, + "title": "Generali Open: Vit Kopriva vs Ignacio Buse" + }, + { + "asset": "98360472065928663408388471277326853880037915193402838957903842532954042424742", + "ts": 1784535020.0, + "p_ref": 0.54, + "flow": 405, + "title": "Miami Marlins vs. Houston Astros" + }, + { + "asset": "98646371535552280731112514489148308478962562347702701645676182686455995557665", + "ts": 1784545883.0, + "p_ref": 0.72, + "flow": 308, + "title": "Set 1 Winner: Torres vs Basilashvili" + }, + { + "asset": "98922881180356563870019748795249830036452729047860833161012089337318348317440", + "ts": 1784553729.0, + "p_ref": 0.65, + "flow": 326, + "title": "Counter-Strike: MIBR Academy vs QUINTESS\u00caNCIA (BO1) - Gamers" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784528247.0, + "p_ref": 0.6789999999978295, + "flow": 313, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784532712.0, + "p_ref": 0.6590000006602871, + "flow": 370, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784535146.0, + "p_ref": 0.5860000155112005, + "flow": 311, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784536050.0, + "p_ref": 0.71, + "flow": 1580, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784537229.0, + "p_ref": 0.48, + "flow": 659, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784538746.0, + "p_ref": 0.1520000000113425, + "flow": 1408, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784540066.0, + "p_ref": 0.319, + "flow": 1581, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784541157.0, + "p_ref": 0.5781327838083437, + "flow": 16002, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784542386.0, + "p_ref": 0.635, + "flow": 413, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99000383099218213247909207506456303386498559153521274839704194890987825141690", + "ts": 1784543354.0, + "p_ref": 0.8850000024562532, + "flow": 505, + "title": "Hamburg European Open, Qualification: Varvara Lepchenko vs E" + }, + { + "asset": "99400014481440567035819234045894468504547835764660956115398417908271936572552", + "ts": 1784555631.0, + "p_ref": 0.5, + "flow": 444, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 174.5" + }, + { + "asset": "99400014481440567035819234045894468504547835764660956115398417908271936572552", + "ts": 1784560835.0, + "p_ref": 0.5, + "flow": 305, + "title": "Minnesota Lynx vs. Seattle Storm: O/U 174.5" + }, + { + "asset": "99949568451363741256871175659281948187928246146353574985353232201687307301181", + "ts": 1784514522.0, + "p_ref": 0.5227692307692308, + "flow": 301, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "99949568451363741256871175659281948187928246146353574985353232201687307301181", + "ts": 1784516099.0, + "p_ref": 0.7456504606826215, + "flow": 357, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "99949568451363741256871175659281948187928246146353574985353232201687307301181", + "ts": 1784517952.0, + "p_ref": 0.22, + "flow": 324, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + }, + { + "asset": "99949568451363741256871175659281948187928246146353574985353232201687307301181", + "ts": 1784519321.0, + "p_ref": 0.47, + "flow": 396, + "title": "Counter-Strike: Fluxo W7M vs Imperial - Map 3 Winner" + } + ] +} \ No newline at end of file diff --git a/research/params/study_flow_robustness.json b/research/params/study_flow_robustness.json new file mode 100644 index 00000000..cbd68342 --- /dev/null +++ b/research/params/study_flow_robustness.json @@ -0,0 +1,77 @@ +{ + "informed_first": { + "fills": 479, + "ev": 24.14, + "hit": 0.72, + "avg_px": 0.573 + }, + "informed_worst": { + "fills": 479, + "ev": 23.68, + "hit": 0.72, + "avg_px": 0.574 + }, + "controls_worst": [ + { + "fills": 29, + "ev": 39.41, + "hit": 0.759, + "avg_px": 0.57 + }, + { + "fills": 20, + "ev": -9.6, + "hit": 0.6, + "avg_px": 0.573 + }, + { + "fills": 37, + "ev": 25.73, + "hit": 0.784, + "avg_px": 0.582 + }, + { + "fills": 74, + "ev": 17.5, + "hit": 0.622, + "avg_px": 0.552 + }, + { + "fills": 59, + "ev": 53.09, + "hit": 0.78, + "avg_px": 0.541 + }, + { + "fills": 23, + "ev": -9.21, + "hit": 0.522, + "avg_px": 0.53 + }, + { + "fills": 33, + "ev": 7.26, + "hit": 0.606, + "avg_px": 0.503 + }, + { + "fills": 24, + "ev": 14.74, + "hit": 0.667, + "avg_px": 0.598 + }, + { + "fills": 56, + "ev": 21.94, + "hit": 0.732, + "avg_px": 0.607 + }, + { + "fills": 26, + "ev": 44.16, + "hit": 0.808, + "avg_px": 0.602 + } + ], + "controls_pooled_ev": 23.85 +} \ No newline at end of file diff --git a/research/params/study_oracle.json b/research/params/study_oracle.json new file mode 100644 index 00000000..9fc89f1b --- /dev/null +++ b/research/params/study_oracle.json @@ -0,0 +1,37 @@ +{ + "grid": { + "0.04": { + "events": 6169, + "fills": 26, + "misses": 5292, + "pending": 851, + "ev_per_fill": 12.39, + "hit": 0.577, + "pnl": 322.14 + }, + "0.07": { + "events": 4225, + "fills": 16, + "misses": 3781, + "pending": 428, + "ev_per_fill": 2.29, + "hit": 0.5, + "pnl": 36.72 + }, + "0.1": { + "events": 3151, + "fills": 11, + "misses": 2885, + "pending": 255, + "ev_per_fill": -31.03, + "hit": 0.455, + "pnl": -341.28 + } + }, + "frozen_edge": null, + "n_universe": 8264, + "tick_lo": 1784490952.0, + "our_fills_graded": [], + "frozen_at": "2026-07-20 21:21 UTC", + "note": "NO holdout exists (21h ticks) \u2014 belief deferred entirely to forward_ledger" +} \ No newline at end of file diff --git a/research/requote.py b/research/requote.py new file mode 100644 index 00000000..cc065ec1 --- /dev/null +++ b/research/requote.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +"""Crater -> requote timing: after an aggressive up-move print (>= 3c above +the previous print, the shape our FAK misses die in), how long until the +SAME token prints again — i.e. how long does the crater stay empty? + +Directly tunes copybot's fak_retry_s (currently a flat 10s): the retry +should arrive when liquidity is back, per niche. Pure measurement, no bot +changes here. +""" +import json +import os +import time + +import tape + +JUMP = 0.03 + + +def run(): + db = tape.connect() + rows = db.execute(f""" + WITH p AS ( + SELECT asset, ts, price, title, + lag(price) OVER (PARTITION BY asset ORDER BY ts, tx) prev_p, + lead(ts) OVER (PARTITION BY asset ORDER BY ts, tx) next_ts + FROM trades + ) + SELECT title, ts, next_ts - ts AS gap + FROM p + WHERE prev_p IS NOT NULL AND price - prev_p >= {JUMP} + AND next_ts IS NOT NULL + """).fetchall() + by = {} + for title, ts, gap in rows: + by.setdefault(tape.niche(title), []).append(gap) + out = {} + print(f"{len(rows):,} crater prints (>= {JUMP:.02f} up-moves)\n") + print(f"{'niche':<10} {'n':>8} {'p50':>7} {'p75':>7} {'p90':>7} " + f"{'<=4s':>6} {'<=10s':>6} {'<=25s':>6}") + for niche, gaps in sorted(by.items(), key=lambda kv: -len(kv[1])): + gaps.sort() + n = len(gaps) + q = lambda f: gaps[min(int(n * f), n - 1)] + frac = lambda s: sum(g <= s for g in gaps) / n + out[niche] = {"n": n, "p50": q(.5), "p75": q(.75), "p90": q(.9), + "within_4s": round(frac(4), 3), + "within_10s": round(frac(10), 3), + "within_25s": round(frac(25), 3)} + print(f"{niche:<10} {n:>8,} {q(.5):>7.1f} {q(.75):>7.1f} {q(.9):>7.1f} " + f"{frac(4):>6.0%} {frac(10):>6.0%} {frac(25):>6.0%}") + out["_meta"] = {"jump": JUMP, "generated": time.strftime("%Y-%m-%d %H:%M")} + json.dump(out, open(os.path.join(tape.HERE, "params", "requote_timing.json"), + "w"), indent=1) + + +if __name__ == "__main__": + run() diff --git a/research/robustness_flow.py b/research/robustness_flow.py new file mode 100644 index 00000000..e860db97 --- /dev/null +++ b/research/robustness_flow.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +"""Study A robustness: (1) pessimistic fill — pay the WORST in-band print in +the hold window (burst tops), not the first; (2) identity lift vs 10 +activity-matched control sets. Decides how the pre-registration is framed.""" +import json +import os +import statistics as st +import time + +import tape +import sim as simmod +import study_flow as sf + +HERE = os.path.dirname(os.path.abspath(__file__)) + + +class PessimisticSim(simmod.Sim): + def try_buy(self, asset, t_sig, p_ref, stake_usd=100.0, lag_s=None): + lag = self.lag_s if lag_s is None else lag_s + arrive = t_sig + lag + cap = min(p_ref * (1 + self.slip_cap), 0.99) + r = self.db.execute("""SELECT max(price) FROM trades + WHERE asset = ? AND ts > ? AND ts <= ? AND price <= ?""", + [asset, arrive, arrive + self.hold_s, cap]).fetchone() + if not r or r[0] is None: + return {"filled": False, "reason": "no print inside band"} + px = float(r[0]) + shares = stake_usd / px + return {"filled": True, "price": px, "shares": shares, + "cost": shares * px, "fee": simmod.fee(shares, px, self.fee_rate), + "fill_ts": arrive} + + +def score_with(simcls, db, triggers, lag_s, hold_s): + s = simcls(db, lag_s=lag_s, hold_s=hold_s) + fills = wins = 0 + pnl = 0.0 + prices = [] + for t in triggers: + pay = db.execute("SELECT payout::DOUBLE FROM res_tok WHERE asset = ?", + [t["asset"]]).fetchone() + if pay is None: + continue + r = s.try_buy(t["asset"], t["ts"], t["p_ref"]) + if not r["filled"]: + continue + fills += 1 + prices.append(r["price"]) + pnl += r["shares"] * (pay[0] - r["price"]) - r["fee"] + wins += pay[0] == 1.0 + return {"fills": fills, "ev": round(pnl / fills, 2) if fills else None, + "hit": round(wins / fills, 3) if fills else None, + "avg_px": round(st.mean(prices), 3) if prices else None} + + +def main(): + db = tape.connect() + P = json.load(open(os.path.join(HERE, "params", "study_flow.json"))) + fz = P["frozen"] + day = lambda d: time.mktime(time.strptime(f"2026-07-{d:02d}", "%Y-%m-%d")) \ + - time.timezone + fit_lo, fit_hi = day(19), day(20) + + S = sf.informed_set(db, fit_lo, fz["top_n"]) + tape.build_resolved(db) + trig = sf.signals(db, S, fit_lo, fit_hi, fz["window_s"], fz["flow_usd"]) + opt = score_with(simmod.Sim, db, trig, simmod.LAG_P50, fz["hold_s"]) + pes = score_with(PessimisticSim, db, trig, simmod.LAG_P50, fz["hold_s"]) + print(f"informed first-print: {opt} \n worst-print: {pes}") + + evs = [] + for seed in range(1, 11): + C = sf.matched_random_set(db, fit_lo, fz["top_n"], seed) + ctrig = sf.signals(db, C, fit_lo, fit_hi, fz["window_s"], fz["flow_usd"]) + c = score_with(PessimisticSim, db, ctrig, simmod.LAG_P50, fz["hold_s"]) + evs.append(c) + print(f"control {seed:>2} worst-print: {c}") + with_ev = [c["ev"] for c in evs if c["ev"] is not None] + tot_fills = sum(c["fills"] for c in evs) + wt = sum(c["ev"] * c["fills"] for c in evs if c["ev"] is not None) \ + / max(tot_fills, 1) + print(f"\ncontrols: {len(with_ev)} scored · pooled fills {tot_fills} · " + f"fill-weighted EV {wt:+.2f} · mean {st.mean(with_ev):+.2f} · " + f"informed pessimistic EV {pes['ev']:+.2f}") + json.dump({"informed_first": opt, "informed_worst": pes, + "controls_worst": evs, "controls_pooled_ev": round(wt, 2)}, + open(os.path.join(HERE, "params", "study_flow_robustness.json"), + "w"), indent=1) + + +if __name__ == "__main__": + main() diff --git a/research/sim.py b/research/sim.py new file mode 100644 index 00000000..dde6a8b2 --- /dev/null +++ b/research/sim.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +"""Execution replayer calibrated on the live bot's OWN ledger. + +Model: a signal at t with reference price p_ref becomes a marketable FAK +arriving at t+lag with protected cap p_ref*(1+slip_cap). The tape has no +book stream, so standing liquidity at arrival is proxied by PRINTS: the +order fills at the first trade print on the token inside +(arrive, arrive+hold_s] whose price is inside the cap — else it dies +no-match (the crater). hold_s is NOT a free choice: `calibrate()` fits it +so the model best separates the bot's real live fills (should fill) from +its real FAK-rejected misses (should miss), and reports fill-price error +with the bot's own prints EXCLUDED (else the validation is circular — our +fill is itself a tape print). + +Fees mirror the venue: fee = rate * shares * min(p, 1-p) (verified against +the live ledger: 7.81sh @ .64 -> $0.0844, 5.26sh @ .95 -> $0.0075). + +Everything is deterministic — scenarios (lag percentiles) not RNG. +""" +import json +import os + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(HERE) +BOT_WALLET = "0x455e252e45ee46d6c4cc1c8fadd3899d68f245a1" + +FEE_RATE = 0.03 +LAG_P50, LAG_P90 = 6.7, 66.4 # live ledger 2026-07-20 (102 BUY fills) + + +def fee(shares, price, rate=FEE_RATE): + return rate * shares * min(price, 1.0 - price) + + +class Sim: + def __init__(self, db, lag_s=LAG_P50, slip_cap=0.05, hold_s=10, + fee_rate=FEE_RATE, exclude_wallet=None, fill="first"): + self.db = db + self.lag_s = lag_s + self.slip_cap = slip_cap + self.hold_s = hold_s + self.fee_rate = fee_rate + self.excl = (exclude_wallet or "").lower() + self.fill = fill # "first" print, or "worst" (pessimistic) + + def first_print(self, asset, t0, t1, cap=None): + """First trade print on asset in (t0, t1], optionally inside cap.""" + q = """SELECT ts, price FROM trades + WHERE asset = ? AND ts > ? AND ts <= ?""" + args = [asset, t0, t1] + if self.excl: + q += " AND lower(wallet) != ?" + args.append(self.excl) + if cap is not None: + q += " AND price <= ?" + args.append(cap) + q += " ORDER BY ts LIMIT 1" + r = self.db.execute(q, args).fetchone() + return r # (ts, price) or None + + def try_buy(self, asset, t_sig, p_ref, stake_usd=100.0, lag_s=None): + """-> dict(filled, price, shares, cost, fee) — FAK with protected cap.""" + lag = self.lag_s if lag_s is None else lag_s + arrive = t_sig + lag + cap = min(p_ref * (1 + self.slip_cap), 0.99) + if self.fill == "worst": # pay the top of the burst + # (ORDER BY form: max(ts),max(price) trips a duckdb-internal + # statistics-propagation assertion on this temp-table layout) + pr = self.db.execute("""SELECT ts, price FROM trades + WHERE asset = ? AND ts > ? AND ts <= ? AND price <= ? + ORDER BY price DESC LIMIT 1""", + [asset, arrive, arrive + self.hold_s, cap]).fetchone() + else: + pr = self.first_print(asset, arrive, arrive + self.hold_s, cap) + if not pr: + return {"filled": False, "reason": "no print inside band (crater)"} + px = float(pr[1]) + shares = stake_usd / px + return {"filled": True, "price": px, "shares": shares, + "cost": shares * px, "fee": fee(shares, px, self.fee_rate), + "fill_ts": pr[0]} + + def markout(self, asset, t_fill, horizon_s): + """Last print at/before t_fill+horizon (None if nothing printed).""" + r = self.db.execute("""SELECT price FROM trades WHERE asset = ? + AND ts > ? AND ts <= ? ORDER BY ts DESC LIMIT 1""", + [asset, t_fill, t_fill + horizon_s]).fetchone() + return r[0] if r else None + + +# ── calibration against the live ledger ───────────────────────────────────── + +def _live_attempts(tape_lo, tape_hi): + """Real BUY attempts inside the tape window: + fills from copybot_fills.live.jsonl (label filled=True) and FAK + no-match misses from copybot_state.live.json (label filled=False).""" + fills = [] + for ln in open(os.path.join(ROOT, "copybot_fills.live.jsonl")): + r = json.loads(ln) + if r.get("untracked") or r.get("side") == "SELL": + continue + if r.get("detect_lag_s") is None or not r.get("their_price"): + continue + t_sig = r["ts"] - r["detect_lag_s"] + if not (tape_lo <= t_sig <= tape_hi - 120): + continue + fills.append({"filled": True, "asset": str(r["token"]), + "t_sig": t_sig, "p_ref": r["their_price"], + "lag": r["detect_lag_s"], "actual_px": r["my_price"]}) + st = json.load(open(os.path.join(ROOT, "copybot_state.live.json"))) + misses = [] + for m in st.get("missed", []): + if "no orders found to match" not in str(m.get("reason", "")): + continue + if not (tape_lo <= m["ts"] <= tape_hi - 120): + continue + misses.append({"filled": False, "asset": str(m["token"]), + "t_sig": m["ts"], "p_ref": m["price"], "lag": LAG_P50}) + return fills, misses + + +def calibrate(db, tape_lo, tape_hi, holds=(3, 5, 10, 20, 45, 90)): + """Fit hold_s on real outcomes; report the confusion + price error.""" + fills, misses = _live_attempts(tape_lo, tape_hi) + out = {"n_fills": len(fills), "n_misses": len(misses), "grid": {}} + best = None + for h in holds: + sim = Sim(db, hold_s=h, exclude_wallet=BOT_WALLET) + tp = sum(1 for a in fills + if sim.try_buy(a["asset"], a["t_sig"], a["p_ref"], + lag_s=a["lag"])["filled"]) + tn = sum(1 for a in misses + if not sim.try_buy(a["asset"], a["t_sig"], a["p_ref"], + lag_s=a["lag"])["filled"]) + acc = (tp + tn) / max(len(fills) + len(misses), 1) + out["grid"][h] = {"fill_recall": tp / max(len(fills), 1), + "miss_recall": tn / max(len(misses), 1), + "acc": round(acc, 3)} + if best is None or acc > best[1]: + best = (h, acc) + out["hold_s"] = best[0] + sim = Sim(db, hold_s=best[0], exclude_wallet=BOT_WALLET) + errs, signed = [], [] + for a in fills: + r = sim.try_buy(a["asset"], a["t_sig"], a["p_ref"], lag_s=a["lag"]) + if r["filled"]: + errs.append(abs(r["price"] - a["actual_px"])) + signed.append(r["price"] - a["actual_px"]) + errs.sort() + if errs: + out["px_err_p50"] = round(errs[len(errs) // 2], 4) + out["px_err_p90"] = round(errs[int(len(errs) * 0.9)], 4) + out["px_within_1c"] = round(sum(e <= 0.01 for e in errs) / len(errs), 3) + # signed bias: negative = sim fills cheaper than reality = OPTIMISTIC + # (study EVs must clear |bias| + noise before they mean anything) + out["px_bias_mean"] = round(sum(signed) / len(signed), 4) + return out + + +if __name__ == "__main__": + import tape + db = tape.connect() + lo, hi = db.execute("SELECT min(ts), max(ts) FROM trades").fetchone() + cal = calibrate(db, lo, hi) + print(json.dumps(cal, indent=2)) + json.dump(cal, open(os.path.join(HERE, "params", "sim_calibration.json"), + "w"), indent=1) diff --git a/research/study_flow.py b/research/study_flow.py new file mode 100644 index 00000000..863e529d --- /dev/null +++ b/research/study_flow.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +"""Study A — flow-state signal: trade the informed herd's lean, not any one +wallet's print. + +Hypothesis (pre-registered, issue TBD): when the trailing net $-flow of the +tape-scored informed set crosses a threshold in one in-play sports/esports +market, the market's resolution probability exceeds its price by enough to +clear real execution (calibrated sim: lag, FAK crater, fees, ~2c optimism +bias) — because the herd's aggregate lean IS the event detector, arriving +before makers reprice. + +Discipline: + * informed set as-of T uses ONLY tape < T (scoring + resolutions as-of T). + * FIT day and grid are fixed below; selection rule: highest after-fee EV + per trigger at p50 lag with >= MIN_FILLS fills. Params freeze into + params/study_flow.json; the holdout day is scored ONCE with frozen + params; forward days accrue via forward.py. + * Controls: 3 activity-matched shuffled sets through the identical + pipeline — the edge must vanish when the wallets are random. + +Signal: per token (sports/esports niche only), rolling W-second sum of +signed informed flow (+buy$ / -sell$). Trigger when sum >= F with the +triggering print inside PRICE_BAND; COOLDOWN_S per token. Entry at the +triggering print's price through sim; hold to resolution; stake $100 flat. +""" +import json +import os +import time + +import tape +import sim as simmod + +HERE = os.path.dirname(os.path.abspath(__file__)) +PARAMS_F = os.path.join(HERE, "params", "study_flow.json") + +# pre-registered exploration grid + universe (do not widen after the fact) +GRID = {"top_n": [50, 150], "window_s": [60, 300], "flow_usd": [300, 1000]} +PRICE_BAND = (0.10, 0.90) +NICHES = {"sports", "esports"} +COOLDOWN_S = 900 +STAKE = 100.0 +MIN_FILLS = 30 +SET_MIN_Z, SET_MIN_BETS = 2.5, 6 + + +def informed_set(db, before_ts, top_n): + """Top-N wallets by improbability z using ONLY tape before before_ts.""" + tape.build_resolved(db, t_end=before_ts) + rows = db.execute(f""" + WITH bets AS ( + SELECT tr.wallet, + any_value(tk.payout) payout, + sum(CASE WHEN tr.side='BUY' THEN tr.size ELSE -tr.size END) net, + sum(CASE WHEN tr.side='BUY' THEN tr.size*tr.price END) + / nullif(sum(CASE WHEN tr.side='BUY' THEN tr.size END),0) vwap + FROM trades tr JOIN res_tok tk ON tr.asset = tk.asset + WHERE tr.ts <= {before_ts} + GROUP BY tr.wallet, tr.asset + HAVING net >= 5 AND vwap BETWEEN 0.05 AND 0.95 + ) + SELECT wallet, + count(*) n, + sum(CASE WHEN payout=1.0 THEN 1 ELSE 0 END) wins, + sum(vwap) exp_w, sum(vwap*(1-vwap)) var_s, + sum(net*(payout - vwap)) pnl + FROM bets GROUP BY wallet + HAVING n >= {SET_MIN_BETS} AND var_s > 0 AND pnl > 0 + """).fetchall() + scored = [] + for w, n, wins, exp_w, var_s, pnl in rows: + z = (wins - exp_w) / (var_s ** 0.5) + if z >= SET_MIN_Z: + scored.append((z, w)) + scored.sort(reverse=True) + return [w for _, w in scored[:top_n]] + + +def matched_random_set(db, before_ts, size, seed): + """Activity-matched control: wallets with >= 20 trades before before_ts, + deterministic pseudo-shuffle by md5(wallet||seed) — no RNG state.""" + rows = db.execute(f""" + SELECT wallet FROM trades WHERE ts <= {before_ts} + GROUP BY wallet HAVING count(*) >= 20 + ORDER BY md5(wallet || '{seed}') LIMIT {size}""").fetchall() + return [w for (w,) in rows] + + +def signals(db, wallets, t_lo, t_hi, window_s, flow_usd): + """Rolling-window triggers over the informed set's prints.""" + if not wallets: + return [] + rows = db.execute(""" + SELECT tr.asset, tr.ts, tr.side, tr.price, tr.size, any_value(tr.title) + FROM trades tr + WHERE tr.ts > ? AND tr.ts <= ? + AND tr.wallet IN (SELECT unnest(?::varchar[])) + GROUP BY tr.asset, tr.ts, tr.side, tr.price, tr.size, tr.tx + ORDER BY tr.asset, tr.ts""", [t_lo, t_hi, wallets]).fetchall() + trig, cur, buf, last_trig = [], None, [], {} + for asset, ts, side, price, size, title in rows: + if asset != cur: + cur, buf = asset, [] + if tape.niche(title) not in NICHES: + continue + usd = price * size * (1 if side == "BUY" else -1) + buf.append((ts, usd)) + while buf and buf[0][0] < ts - window_s: + buf.pop(0) + flow = sum(u for _, u in buf) + if flow >= flow_usd and PRICE_BAND[0] <= price <= PRICE_BAND[1] \ + and ts - last_trig.get(asset, 0) >= COOLDOWN_S: + last_trig[asset] = ts + trig.append({"asset": asset, "ts": ts, "p_ref": price, + "flow": round(flow), "title": title}) + return trig + + +def score(db, triggers, lag_s, hold_s): + """Sim each trigger; outcome from res_tok (resolved-by-tape-end only).""" + s = simmod.Sim(db, lag_s=lag_s, hold_s=hold_s) + res = dict(fills=0, misses=0, pending=0, pnl=0.0, wins=0, staked=0.0) + for t in triggers: + pay = db.execute("SELECT payout::DOUBLE FROM res_tok WHERE asset = ?", + [t["asset"]]).fetchone() + r = s.try_buy(t["asset"], t["ts"], t["p_ref"], stake_usd=STAKE) + if not r["filled"]: + res["misses"] += 1 + continue + if pay is None: # fired, filled, not yet resolved + res["pending"] += 1 + continue + res["fills"] += 1 + res["staked"] += r["cost"] + pnl = r["shares"] * (pay[0] - r["price"]) - r["fee"] + res["pnl"] += pnl + res["wins"] += pay[0] == 1.0 + if res["fills"]: + res["ev_per_fill"] = round(res["pnl"] / res["fills"], 2) + res["hit"] = round(res["wins"] / res["fills"], 3) + res["pnl"] = round(res["pnl"], 2) + return res + + +def run_cell(db, as_of, t_lo, t_hi, top_n, window_s, flow_usd, hold_s, wallets=None): + S = wallets if wallets is not None else informed_set(db, as_of, top_n) + tape.build_resolved(db) # scoring truth = full tape + trig = signals(db, S, t_lo, t_hi, window_s, flow_usd) + out = {"triggers": len(trig), "set_size": len(S)} + for lag, tag in ((simmod.LAG_P50, "p50"), (simmod.LAG_P90, "p90")): + out[tag] = score(db, trig, lag, hold_s) + return out, trig + + +def main(): + db = tape.connect() + cal = json.load(open(os.path.join(HERE, "params", "sim_calibration.json"))) + hold_s = cal["hold_s"] + lo, hi = db.execute("SELECT min(ts), max(ts) FROM trades").fetchone() + day = lambda d, h=0: time.mktime(time.strptime(f"2026-07-{d:02d}", "%Y-%m-%d")) \ + - time.timezone + h * 3600 + fit_lo, fit_hi = day(19), day(20) # fit day: Jul 19 UTC + hold_lo, hold_hi = day(20), hi # holdout: Jul 20 (partial) + + print("== FIT (Jul 19, set as-of Jul 19 00:00 UTC) ==") + results = [] + for tn in GRID["top_n"]: + for w in GRID["window_s"]: + for f in GRID["flow_usd"]: + r, _ = run_cell(db, fit_lo, fit_lo, fit_hi, tn, w, f, hold_s) + ev = r["p50"].get("ev_per_fill") + results.append(((tn, w, f), r)) + print(f"top{tn:<4} W={w:<4} F=${f:<5} -> trig {r['triggers']:>4} " + f"fills {r['p50']['fills']:>3} miss {r['p50']['misses']:>3} " + f"EV/fill {ev if ev is not None else '—'} " + f"hit {r['p50'].get('hit', '—')}") + eligible = [(p, r) for p, r in results + if r["p50"]["fills"] >= MIN_FILLS and "ev_per_fill" in r["p50"]] + if not eligible: + print("\nNO cell reached MIN_FILLS — study inconclusive at this tape size.") + return + best_p, best_r = max(eligible, key=lambda pr: pr[1]["p50"]["ev_per_fill"]) + tn, w, f = best_p + print(f"\nFROZEN: top_n={tn} window={w}s flow=${f} " + f"(fit EV/fill {best_r['p50']['ev_per_fill']}, hit {best_r['p50']['hit']})") + + print("\n== CONTROLS (fit day, matched random sets) ==") + controls = [] + for seed in (1, 2, 3): + S = matched_random_set(db, fit_lo, tn, seed) + r, _ = run_cell(db, fit_lo, fit_lo, fit_hi, tn, w, f, hold_s, wallets=S) + controls.append(r) + print(f"seed {seed}: trig {r['triggers']} fills {r['p50']['fills']} " + f"EV/fill {r['p50'].get('ev_per_fill', '—')} " + f"hit {r['p50'].get('hit', '—')}") + + print("\n== HOLDOUT (Jul 20 partial, set as-of Jul 20 00:00 UTC) ==") + hr, htrig = run_cell(db, hold_lo, hold_lo, hold_hi, tn, w, f, hold_s) + print(f"trig {hr['triggers']} fills {hr['p50']['fills']} " + f"miss {hr['p50']['misses']} pending {hr['p50']['pending']} " + f"EV/fill {hr['p50'].get('ev_per_fill', '—')} " + f"hit {hr['p50'].get('hit', '—')} (p90 lag: EV " + f"{hr['p90'].get('ev_per_fill', '—')})") + + json.dump({"frozen": {"top_n": tn, "window_s": w, "flow_usd": f, + "hold_s": hold_s, "price_band": PRICE_BAND, + "niches": sorted(NICHES), "cooldown_s": COOLDOWN_S, + "stake": STAKE, + "set_min_z": SET_MIN_Z, "set_min_bets": SET_MIN_BETS}, + "fit": best_r, "fit_grid": [{"params": p, **r} for p, r in results], + "controls": controls, "holdout": hr, + "frozen_at": time.strftime("%Y-%m-%d %H:%M UTC", time.gmtime()), + "pending_triggers": htrig}, + open(PARAMS_F, "w"), indent=1, default=float) + print(f"\nfroze {PARAMS_F}") + + +if __name__ == "__main__": + main() diff --git a/research/study_oracle.py b/research/study_oracle.py new file mode 100644 index 00000000..89a327d2 --- /dev/null +++ b/research/study_oracle.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python3 +"""Study B — crypto oracle fair value vs the book. + +The tape's `crypto_prices` aux stream IS the venue's settlement feed +(Binance-sourced, ms-stamped, ~1/s per symbol since 2026-07-19 19:55). Every +strike/sprint crypto market is a digital option on that feed, so fair value +is computable tick-by-tick with no basis risk: + + above K, expiry T: fair(Yes) = Phi( ln(S_t/K) / (sigma*sqrt(tau)) ) + between K1..K2: Phi(ln(K2/S)/sv) - Phi(ln(K1/S)/sv) + sprint (window t0..t1): strike = S_{t0} read from the same feed + Down/No tokens: 1 - fair(up-side). sigma = trailing 30min realized + vol of 1s log-returns (drift negligible at these horizons). + +Signal: at a market print, edge = fair - print >= E for that token -> +simulated FAK entry (calibrated sim), hold to resolution (tape truth). + +IMPORTANT scope honesty: tick coverage is ~21h, so there is no holdout — +this run only CHOOSES E (grid below) and freezes it; ALL belief is deferred +to the forward ledger. Also grades the live bot's own crypto fills against +fair value at their fill times (objective score of the 0xbadaf319-class +copies).""" +import bisect +import json +import math +import os +import statistics as st +import time + +import tape +import sim as simmod + +HERE = os.path.dirname(os.path.abspath(__file__)) +PARAMS_F = os.path.join(HERE, "params", "study_oracle.json") + +EDGE_GRID = [0.04, 0.07, 0.10] +VOL_WIN_S = 1800 +TAU_MIN, TAU_MAX = 60, 12 * 3600 +COOLDOWN_S = 300 +STAKE = 100.0 +MIN_FILLS = 30 +UP_WORDS = {"up", "yes"} +DOWN_WORDS = {"down", "no"} + + +def phi(x): + return 0.5 * (1.0 + math.erf(x / math.sqrt(2.0))) + + +class TickSeries: + def __init__(self, ticks): + self.ts = [t for t, _ in ticks] + self.px = [p for _, p in ticks] + + def at(self, t): + i = bisect.bisect_right(self.ts, t) - 1 + return self.px[i] if i >= 0 else None + + def vol_1s(self, t, win=VOL_WIN_S): + """stdev of 1s log returns over the trailing window (per-sqrt-second).""" + lo = bisect.bisect_left(self.ts, t - win) + hi = bisect.bisect_right(self.ts, t) + if hi - lo < 60: + return None + rets = [] + for i in range(lo + 1, hi): + dt = self.ts[i] - self.ts[i - 1] + if dt <= 0: + continue + r = math.log(self.px[i] / self.px[i - 1]) / math.sqrt(dt) + rets.append(r) + return st.pstdev(rets) if len(rets) >= 30 else None + + +def fair_value(mkt, up_side, S, sigma, t): + tau = mkt["t1"] - t + if not (TAU_MIN <= tau <= TAU_MAX) or not S or not sigma: + return None + sv = sigma * math.sqrt(tau) + if sv <= 0: + return None + k = mkt["kind"] + if k == "sprint": + if mkt.get("s0") is None: + return None + f_up = phi(math.log(S / mkt["s0"]) / sv) + elif k == "above": + f_up = phi(math.log(S / mkt["k1"]) / sv) + elif k == "below": + f_up = 1.0 - phi(math.log(S / mkt["k1"]) / sv) + elif k == "between": + f_up = phi(math.log(mkt["k2"] / S) / sv) - phi(math.log(mkt["k1"] / S) / sv) + else: + return None + return f_up if up_side else 1.0 - f_up + + +def outcome_map(db): + """asset -> lowercase outcome name, from the orders_matched aux stream.""" + rows = db.execute(""" + SELECT json_extract_string(payload,'$.asset'), + lower(any_value(json_extract_string(payload,'$.outcome'))) + FROM aux WHERE type = 'orders_matched' + AND json_extract_string(payload,'$.outcome') != '' + GROUP BY 1""").fetchall() + return {a: o for a, o in rows if a and o} + + +def crypto_universe(db, outcomes, series): + """Parseable crypto tokens with a knowable side + tick coverage.""" + rows = db.execute(""" + SELECT asset, any_value(title), min(ts), max(ts) + FROM trades GROUP BY asset""").fetchall() + out = [] + for asset, title, lo, hi in rows: + mkt = tape.crypto_parse(title or "") + if not mkt or mkt["sym"] not in series: + continue + o = outcomes.get(asset, "") + up = o in UP_WORDS or (o == "" and mkt["kind"] != "sprint") + if o and o not in UP_WORDS | DOWN_WORDS: + continue # unknown side label — skip honestly + if mkt["kind"] == "sprint": + if not o: + continue # sprints NEED the Up/Down label + mkt["s0"] = series[mkt["sym"]].at(mkt["t0"]) + if mkt["s0"] is None: + continue + out.append({"asset": asset, "mkt": mkt, "up": up, "title": title}) + return out + + +def run_study(db, hold_s): + series = {s: TickSeries(tape.load_ticks(db, s)) + for s in ("btcusdt", "ethusdt", "solusdt", "xrpusdt", + "bnbusdt", "dogeusdt")} + tick_lo = min(s.ts[0] for s in series.values() if s.ts) + outcomes = outcome_map(db) + tape.build_resolved(db) + uni = crypto_universe(db, outcomes, series) + payout = {a: p for a, p in db.execute( + "SELECT asset, payout::DOUBLE FROM res_tok").fetchall()} + print(f"crypto universe: {len(uni)} tokens with side + ticks " + f"({sum(1 for u in uni if u['asset'] in payout)} resolved in-tape)") + + events = [] # candidate mispricings at prints + for u in uni: + prints = db.execute("""SELECT ts, price FROM trades + WHERE asset = ? AND ts >= ? ORDER BY ts""", + [u["asset"], tick_lo]).fetchall() + s = series[u["mkt"]["sym"]] + last_ev = 0.0 + for ts, px in prints: + if ts - last_ev < COOLDOWN_S: + continue + S = s.at(ts) + sig = s.vol_1s(ts) + f = fair_value(u["mkt"], u["up"], S, sig, ts) + if f is None: + continue + edge = f - float(px) + if edge > 0.02: # collect loosely; grid filters below + last_ev = ts + events.append({"asset": u["asset"], "ts": ts, "p_ref": float(px), + "fair": round(f, 4), "edge": round(edge, 4), + "kind": u["mkt"]["kind"], "title": u["title"]}) + print(f"candidate mispricing events (edge > 2c): {len(events)}") + + sim = simmod.Sim(db, hold_s=hold_s) + grid = {} + for E in EDGE_GRID: + sel = [e for e in events if e["edge"] >= E] + fills = wins = 0 + pnl = staked = 0.0 + misses = pending = 0 + for e in sel: + r = sim.try_buy(e["asset"], e["ts"], e["p_ref"], stake_usd=STAKE) + if not r["filled"]: + misses += 1 + continue + pay = payout.get(e["asset"]) + if pay is None: + pending += 1 + continue + fills += 1 + staked += r["cost"] + pnl += r["shares"] * (pay - r["price"]) - r["fee"] + wins += pay == 1.0 + grid[E] = {"events": len(sel), "fills": fills, "misses": misses, + "pending": pending, + "ev_per_fill": round(pnl / fills, 2) if fills else None, + "hit": round(wins / fills, 3) if fills else None, + "pnl": round(pnl, 2)} + print(f"E >= {E:.2f}: {grid[E]}") + eligible = [(E, g) for E, g in grid.items() + if g["fills"] >= MIN_FILLS and g["ev_per_fill"] is not None] + frozen_E = max(eligible, key=lambda eg: eg[1]["ev_per_fill"])[0] \ + if eligible else None + return {"grid": grid, "frozen_edge": frozen_E, "n_universe": len(uni), + "tick_lo": tick_lo}, events + + +def grade_our_fills(db): + """Fair-value edge of the live bot's own crypto fills at fill time.""" + series = {} + graded = [] + for ln in open(os.path.join(tape.ROOT, "copybot_fills.live.jsonl")): + r = json.loads(ln) + if r.get("side") == "SELL" or r.get("untracked"): + continue + mkt = tape.crypto_parse(r.get("title") or "") + if not mkt: + continue + sym = mkt["sym"] + if sym not in series: + series[sym] = TickSeries(tape.load_ticks(db, sym)) + s = series[sym] + if not s.ts or r["ts"] < s.ts[0] or mkt["kind"] == "sprint": + continue + S, sig = s.at(r["ts"]), s.vol_1s(r["ts"]) + up = (r.get("outcome") or "").lower() in UP_WORDS + f = fair_value(mkt, up, S, sig, r["ts"]) + if f is None: + continue + graded.append({"title": r["title"][:60], "outcome": r.get("outcome"), + "px": r["my_price"], "fair": round(f, 3), + "edge": round(f - r["my_price"], 3), + "wallet": r.get("name")}) + return graded + + +def main(): + db = tape.connect() + cal = json.load(open(os.path.join(HERE, "params", "sim_calibration.json"))) + res, events = run_study(db, cal["hold_s"]) + graded = grade_our_fills(db) + print(f"\nour crypto fills graded vs fair value: {len(graded)}") + for g in graded: + print(f" {g['edge']:+.3f} {g['wallet']:<12} {g['outcome']:<4} " + f"@{g['px']:.3f} fair {g['fair']:.3f} {g['title']}") + json.dump({**res, "our_fills_graded": graded, + "frozen_at": time.strftime("%Y-%m-%d %H:%M UTC", time.gmtime()), + "note": "NO holdout exists (21h ticks) — belief deferred " + "entirely to forward_ledger"}, + open(PARAMS_F, "w"), indent=1, default=float) + print(f"\nfroze {PARAMS_F}") + + +if __name__ == "__main__": + main() diff --git a/research/tape.py b/research/tape.py new file mode 100644 index 00000000..032c5a09 --- /dev/null +++ b/research/tape.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +"""Read-only tape access + ground truth for research/ (see README silo rules). + +Resolution method is the one chain-validated 742/742 on 2026-07-20 +(live/tape_sharps.py first run): a token is proxy-resolved when its final- +30min VWAP converged (>= 0.97 / <= 0.03) AND it went quiet >= QUIET_H before +the tape end AND no sibling of the same condition disagrees (still trading, +or a second proxy-winner). `chain_overlay()` upgrades any subset to CTF +payout-vector truth via live/payouts.py (append-only shared cache). + +Timezones: tape ts are epoch UTC. Polymarket crypto titles quote ET; the +tape era is July 2026 = EDT = UTC-4 (ET_OFF). Sprints/hourlies embed their +window in the title; "on " dailies resolve at 12:00 ET by venue +convention. +""" +import os +import re +import sys +import time + +import duckdb + +HERE = os.path.dirname(os.path.abspath(__file__)) +ROOT = os.path.dirname(HERE) +RTDS = os.path.join(ROOT, "live", "rtds.duckdb") + +WIN_T, LOSE_T = 0.97, 0.03 +QUIET_H = 2 +ET_OFF = 4 * 3600 # EDT (July) = UTC-4 +YEAR = 2026 # tape era; revisit at year roll + +MONTHS = {m: i + 1 for i, m in enumerate( + ["january", "february", "march", "april", "may", "june", "july", + "august", "september", "october", "november", "december"])} + +SYMBOLS = {"bitcoin": "btcusdt", "btc": "btcusdt", + "ethereum": "ethusdt", "eth": "ethusdt", + "solana": "solusdt", "sol": "solusdt", + "xrp": "xrpusdt", "bnb": "bnbusdt", "doge": "dogeusdt", + "dogecoin": "dogeusdt"} + + +def connect(): + return duckdb.connect(RTDS, read_only=True) + + +# ── tape proxy-resolution ─────────────────────────────────────────────────── + +def build_resolved(db, t_end=None): + """TEMP tables `res_tok` (asset, cond, last_ts, term_vwap, payout) and + `res_bad` on this connection. Idempotent per connection.""" + if t_end is None: + t_end = db.execute("SELECT max(ts) FROM trades").fetchone()[0] + quiet = t_end - QUIET_H * 3600 + db.execute(f""" + CREATE OR REPLACE TEMP TABLE _alltok AS + WITH last AS ( + SELECT asset, any_value(cond) cond, max(ts) last_ts + FROM trades WHERE cond IS NOT NULL AND cond != '' + AND ts <= {t_end} GROUP BY asset + ), term AS ( + SELECT t.asset, sum(t.price * t.size) / nullif(sum(t.size), 0) term_vwap + FROM trades t JOIN last l ON t.asset = l.asset + WHERE t.ts >= l.last_ts - 1800 AND t.ts <= {t_end} GROUP BY t.asset + ) + SELECT l.asset, l.cond, l.last_ts, tm.term_vwap, + l.last_ts > {quiet} AS alive, + CASE WHEN tm.term_vwap >= {WIN_T} THEN 1.0 + WHEN tm.term_vwap <= {LOSE_T} THEN 0.0 END AS payout + FROM last l JOIN term tm ON l.asset = tm.asset""") + db.execute(""" + CREATE OR REPLACE TEMP TABLE res_bad AS + SELECT cond FROM _alltok GROUP BY cond + HAVING bool_or(alive) + OR sum(CASE WHEN payout = 1.0 THEN 1 ELSE 0 END) > 1""") + db.execute(""" + CREATE OR REPLACE TEMP TABLE res_tok AS + SELECT asset, cond, last_ts, term_vwap, payout FROM _alltok + WHERE NOT alive AND payout IS NOT NULL + AND cond NOT IN (SELECT cond FROM res_bad)""") + return t_end + + +def chain_overlay(pairs): + """[(cond, asset)] -> {(cond, asset): 1.0/0.0/0.5/None} via payouts.py. + The only shared write in research/ (append-only resolutions cache).""" + sys.path.insert(0, os.path.join(ROOT, "live")) + import payouts + payouts.ensure(sorted({c for c, _ in pairs})) + return {(c, a): payouts.truth(c, a) for c, a in pairs} + + +# ── title parsers ─────────────────────────────────────────────────────────── + +NICHE_PATTERNS = [ + ("esports", ["lol:", "dota", "cs2", "csgo", "valorant", "esports", + "bilibili", "map ", "game 1", "game 2", "game 3"]), + ("tennis", ["tennis", "atp", "wta", "wimbledon", "set winner"]), + ("sports", [" vs. ", " vs ", " @ ", "mlb", "nba", "nhl", "ufc", + "world cup", "f1", "grand prix", "fifa"]), + ("crypto", ["bitcoin", "btc", "ethereum", "solana", "xrp", "doge", + "price of", "up or down"]), + ("politics", ["election", "president", "senate", "governor", "mayor", + "nominee", "impeach", "tariff", "fed ", "rate cut"]), + ("geo", ["iran", "israel", "russia", "ukraine", "china", "taiwan", + "ceasefire", "strike", "nato"]), +] + + +def niche(title): + t = (title or "").lower() + for label, pats in NICHE_PATTERNS: + if any(p in t for p in pats): + return label + return "other" + + +def _et(mon, day, hh, mm): + return time.mktime(time.struct_time( + (YEAR, mon, day, 0, 0, 0, 0, 0, 0))) - time.timezone + hh * 3600 \ + + mm * 60 + ET_OFF + + +def _clock(h, m, ap): + h = int(h) % 12 + (12 if ap.lower() == "pm" else 0) + return h, int(m or 0) + + +RE_SPRINT = re.compile( + r"(?i)^(\w+)\s+up or down\s*-\s*(\w+)\s+(\d+),\s*" + r"(\d+)(?::(\d+))?(am|pm)-(\d+)(?::(\d+))?(pm|am)\s*et") +RE_HOURLY = re.compile( + r"(?i)^(\w+)\s+(above|below)\s+([\d,\.]+)\s+on\s+(\w+)\s+(\d+),\s*" + r"(\d+)(?::(\d+))?\s*(am|pm)\s*et") +RE_DAILY = re.compile( + r"(?i)price of (\w+) be (above|below|between)\s+\$?([\d,\.]+)" + r"(?:\s+and\s+\$?([\d,\.]+))?\s+on\s+(\w+)\s+(\d+)") +# NOT parsed on purpose: "dip to / reach $K" one-touch claims are +# path-dependent (barrier, not terminal digital) — the Φ fair value below +# would misprice them. v2 if the terminal edge proves out. + + +def _num(s): + return float(s.replace(",", "")) if s else None + + +def crypto_parse(title): + """-> dict(sym, kind, k1, k2, t0, t1) or None. + kind: sprint (S_t1 > S_t0), above/below/between (vs strike at t1). + t0 only for sprints (window open).""" + t = title or "" + m = RE_SPRINT.match(t) + if m: + sym = SYMBOLS.get(m.group(1).lower()) + mon = MONTHS.get(m.group(2).lower()) + if not sym or not mon: + return None + day = int(m.group(3)) + h0, m0 = _clock(m.group(4), m.group(5), m.group(6)) + h1, m1 = _clock(m.group(7), m.group(8), m.group(9)) + return {"sym": sym, "kind": "sprint", "k1": None, "k2": None, + "t0": _et(mon, day, h0, m0), "t1": _et(mon, day, h1, m1)} + m = RE_HOURLY.match(t) + if m: + sym, mon = SYMBOLS.get(m.group(1).lower()), MONTHS.get(m.group(4).lower()) + if not sym or not mon: + return None + h, mi = _clock(m.group(6), m.group(7), m.group(8)) + return {"sym": sym, "kind": m.group(2).lower(), "k1": _num(m.group(3)), + "k2": None, "t0": None, + "t1": _et(mon, int(m.group(5)), h, mi)} + m = RE_DAILY.search(t) + if m: + sym, mon = SYMBOLS.get(m.group(1).lower()), MONTHS.get(m.group(5).lower()) + if not sym or not mon: + return None + return {"sym": sym, "kind": m.group(2).lower(), "k1": _num(m.group(3)), + "k2": _num(m.group(4)), "t0": None, + "t1": _et(mon, int(m.group(6)), 12, 0)} # dailies: 12PM ET + return None + + +# ── tick series ───────────────────────────────────────────────────────────── + +def load_ticks(db, sym): + """[(ts, price)] sorted — ms feed timestamps preferred over ingest ts.""" + rows = db.execute(""" + SELECT coalesce(cast(json_extract(payload,'$.timestamp') AS DOUBLE)/1000, ts) t, + cast(json_extract(payload,'$.value') AS DOUBLE) v + FROM aux WHERE topic = 'crypto_prices' + AND json_extract_string(payload,'$.symbol') = ? + ORDER BY 1""", [sym]).fetchall() + return [(t, v) for t, v in rows if v]