212 lines
8.7 KiB
HTML
212 lines
8.7 KiB
HTML
<!doctype html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Polymarket Strategy Lab — honest backtests</title>
|
||
<meta name="description" content="See how five different arbitrage and betting strategies actually performed on 135 real resolved Polymarket events. No cherry-picked examples. No lies." />
|
||
<link rel="preconnect" href="https://rsms.me/" />
|
||
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
|
||
<link rel="stylesheet" href="assets/style.css?v=7" />
|
||
<link rel="stylesheet" href="assets/lab.css?v=3" />
|
||
</head>
|
||
<body>
|
||
|
||
<div class="lab-shell">
|
||
|
||
<nav class="demo-nav">
|
||
<div class="brand">
|
||
<span class="dot on"></span>
|
||
<strong>Polymarket Strategy Lab</strong>
|
||
<span class="status-text"><span id="event-count-inline">—</span> real resolved events · backtested in your browser</span>
|
||
</div>
|
||
<div class="nav-links">
|
||
<a href="index.html">About the project</a>
|
||
<a href="demo.html">Live scanner</a>
|
||
<a href="https://github.com/matthewnyc2/arbitrage" target="_blank" rel="noopener">Source</a>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="tabs">
|
||
<div class="tabs-inner">
|
||
<button type="button" class="tab active" data-tab="results" id="tab-results">
|
||
Results
|
||
</button>
|
||
<button type="button" class="tab" data-tab="strategies" id="tab-strategies">
|
||
Strategies <span class="tab-count">5</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- =================== RESULTS TAB =================== -->
|
||
<main class="panel active" id="panel-results">
|
||
|
||
<section class="lab-hero">
|
||
<div class="lab-hero-inner">
|
||
<div class="hero-strategy-row">
|
||
<div class="strategy-badge" id="active-strategy-label">Strategy</div>
|
||
<button type="button" class="switch-btn" id="switch-btn">
|
||
Change strategy
|
||
<span class="arrow">→</span>
|
||
</button>
|
||
</div>
|
||
<h1 id="active-strategy-name">—</h1>
|
||
<p id="active-strategy-desc" class="lead">—</p>
|
||
|
||
<div class="bankroll-row">
|
||
<span class="bankroll-lbl">Bankroll per opportunity</span>
|
||
<div class="bankroll-choices" id="bankroll-choices">
|
||
<button type="button" data-bankroll="100">$100</button>
|
||
<button type="button" data-bankroll="1000" class="active">$1,000</button>
|
||
<button type="button" data-bankroll="10000">$10,000</button>
|
||
<button type="button" data-bankroll="100000">$100,000</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bankroll-row">
|
||
<span class="bankroll-lbl">Trade at prices from</span>
|
||
<div class="bankroll-choices" id="window-choices">
|
||
<button type="button" data-window="close">at close</button>
|
||
<button type="button" data-window="1h">1h before</button>
|
||
<button type="button" data-window="6h">6h before</button>
|
||
<button type="button" data-window="24h" class="active">24h before</button>
|
||
<button type="button" data-window="3d">3 days before</button>
|
||
<button type="button" data-window="7d">7 days before</button>
|
||
</div>
|
||
<span class="bankroll-note" id="window-note">
|
||
These are <strong>real historical Polymarket prices</strong>, pulled from
|
||
their public CLOB price-history endpoint. For each event, we look up the
|
||
actual price of every outcome at the chosen moment before the market closed.
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="verdict-section">
|
||
<div class="verdict-inner">
|
||
<div class="verdict-card" id="verdict-card">
|
||
<div class="verdict-icon" id="verdict-icon">…</div>
|
||
<div class="verdict-body">
|
||
<div class="verdict-label" id="verdict-label">calculating…</div>
|
||
<div class="verdict-detail" id="verdict-detail">Running the strategy against every resolved event</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="verdict-stats">
|
||
<div class="vstat">
|
||
<div class="vstat-val" id="vstat-pnl">—</div>
|
||
<div class="vstat-lbl" id="vstat-pnl-lbl">Total profit across every trade</div>
|
||
</div>
|
||
<div class="vstat">
|
||
<div class="vstat-val" id="vstat-roi">—</div>
|
||
<div class="vstat-lbl">Return on bankroll per trade</div>
|
||
</div>
|
||
<div class="vstat">
|
||
<div class="vstat-val" id="vstat-trades">—</div>
|
||
<div class="vstat-lbl">Trades taken (out of 93 events)</div>
|
||
</div>
|
||
<div class="vstat">
|
||
<div class="vstat-val" id="vstat-winrate">—</div>
|
||
<div class="vstat-lbl">Fraction of trades that won</div>
|
||
</div>
|
||
<div class="vstat">
|
||
<div class="vstat-val" id="vstat-annual">—</div>
|
||
<div class="vstat-lbl" id="vstat-annual-lbl">Projected annual profit</div>
|
||
</div>
|
||
</div>
|
||
|
||
<p class="verdict-explainer" id="verdict-explainer">—</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="trades-section">
|
||
<div class="trades-inner">
|
||
<div class="section-header">
|
||
<h2>Every trade, one row each</h2>
|
||
<p>
|
||
Each row below is one resolved Polymarket event. The strategy either
|
||
placed a trade or skipped it. When it traded, you can see exactly
|
||
what it paid, what it got back, and whether it won money.
|
||
</p>
|
||
<div class="trade-filter">
|
||
<button type="button" class="filter-btn active" data-filter="all">All <span id="cnt-all">0</span></button>
|
||
<button type="button" class="filter-btn" data-filter="trades">Took trade <span id="cnt-trades">0</span></button>
|
||
<button type="button" class="filter-btn" data-filter="wins">Wins <span id="cnt-wins">0</span></button>
|
||
<button type="button" class="filter-btn" data-filter="losses">Losses <span id="cnt-losses">0</span></button>
|
||
<button type="button" class="filter-btn" data-filter="skipped">Skipped <span id="cnt-skipped">0</span></button>
|
||
</div>
|
||
</div>
|
||
<div id="trade-list" class="trade-list"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="data-section">
|
||
<div class="data-inner">
|
||
<h2>What you're looking at, in plain English</h2>
|
||
<p>
|
||
These events are real Polymarket markets that have already ended
|
||
in the last few weeks. For each one, we know who won and we have
|
||
the actual price of every outcome at every moment before the
|
||
market closed. The page runs a trading strategy on every event
|
||
and adds up how much money you would have made or lost.
|
||
</p>
|
||
<p>
|
||
The <strong>"trade at prices from"</strong> selector above is the
|
||
important knob. Prices right before a market closes tend to be
|
||
correct (because everyone already knows the answer). Prices a
|
||
day or more earlier are often noticeably off — and that's where
|
||
real arbitrage lives. Try clicking the different time windows
|
||
and watch the numbers change.
|
||
</p>
|
||
<p>
|
||
<strong>Every price on this page is a real price Polymarket
|
||
recorded.</strong> Pulled from their public CLOB price-history
|
||
API. No estimates, no math tricks. You can verify every trade
|
||
by looking up the event on polymarket.com.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- =================== STRATEGIES TAB =================== -->
|
||
<main class="panel" id="panel-strategies">
|
||
<section class="strategies-hero">
|
||
<div class="strategies-hero-inner">
|
||
<h1>Pick a strategy to see how it actually performed</h1>
|
||
<p>
|
||
Each of these strategies has a clear rule. Each was run against the
|
||
same <span id="event-count-strat">—</span> real resolved Polymarket
|
||
events. Results are plain: did it make money or lose money, and by
|
||
how much.
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="strategy-grid-section">
|
||
<div class="strategy-grid" id="strategy-grid"></div>
|
||
</section>
|
||
</main>
|
||
|
||
</div>
|
||
|
||
<!-- strategy detail modal -->
|
||
<div class="modal" id="strategy-modal" hidden>
|
||
<div class="modal-backdrop" data-close></div>
|
||
<div class="modal-card modal-wide">
|
||
<button type="button" class="modal-x" data-close aria-label="close">×</button>
|
||
<div id="strategy-modal-content"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer class="site-footer">
|
||
<p>
|
||
Backtested on real, resolved Polymarket events —
|
||
<a href="https://github.com/matthewnyc2/arbitrage" target="_blank" rel="noopener">source on GitHub</a> ·
|
||
<a href="index.html">About this portfolio</a>
|
||
</p>
|
||
</footer>
|
||
|
||
<script src="assets/lab.js?v=8"></script>
|
||
</body>
|
||
</html>
|