-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpolyscope.html
More file actions
399 lines (369 loc) · 20.7 KB
/
Copy pathpolyscope.html
File metadata and controls
399 lines (369 loc) · 20.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PolyScope Pro — Weekly Polymarket data + free bot fill audit</title>
<meta name="description" content="Weekly-updated Polymarket dataset (9.5M+ price snapshots, 1,998 markets) at $29/mo. Includes a free pnl-truthteller fill-quality audit on your bot's wallet.">
<meta property="og:title" content="PolyScope Pro — Weekly Polymarket data + free bot audit">
<meta property="og:description" content="Your bot's DB says +$33. The chain says −$89. We built the tool that finds the gap. Subscribe for weekly data + we audit your wallet free.">
<meta property="og:url" content="https://protodex.io/polyscope.html">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Protodex">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://protodex.io/polyscope.html">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>⚡</text></svg>">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
:root {
--bg: #06060a;
--bg-card: #0f0f14;
--bg-card-hover: #16161d;
--bg-hover: #12121a;
--border: #1e1e2a;
--border-hover: #2d2d3f;
--text: #f0f0f5;
--text-muted: #8888a0;
--text-dim: #55556a;
--accent: #00d4aa;
--accent-hover: #00b894;
--accent-glow: rgba(0, 212, 170, 0.15);
--accent-soft: rgba(0, 212, 170, 0.06);
--red: #ff5b5b;
--red-soft: rgba(255, 91, 91, 0.10);
--green: #00d4aa;
--yellow: #FFD93D;
--font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
--mono: 'JetBrains Mono', 'SF Mono', monospace;
--radius: 10px;
--radius-lg: 16px;
--max-w: 1100px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: var(--font);
background: var(--bg);
color: var(--text);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
a { color: var(--accent); text-decoration: none; transition: color 0.15s; }
a:hover { color: var(--accent-hover); }
.container { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
header {
border-bottom: 1px solid var(--border);
padding: 14px 0;
position: sticky;
top: 0;
background: rgba(6, 6, 10, 0.88);
backdrop-filter: blur(16px) saturate(180%);
z-index: 100;
}
header .container {
display: flex;
align-items: center;
justify-content: space-between;
}
.logo { font-weight: 800; font-size: 18px; letter-spacing: -0.02em; }
.logo span { color: var(--accent); }
nav a { margin-left: 24px; color: var(--text-muted); font-size: 14px; font-weight: 500; }
nav a:hover { color: var(--text); }
.hero { padding: 80px 0 60px; text-align: center; }
.hero .eyebrow {
display: inline-block; padding: 6px 14px; border-radius: 999px;
background: var(--accent-soft); color: var(--accent);
font-family: var(--mono); font-size: 12px; font-weight: 500; letter-spacing: 0.04em;
margin-bottom: 24px; border: 1px solid var(--accent-glow);
}
.hero h1 {
font-size: 56px; font-weight: 900; line-height: 1.05; letter-spacing: -0.03em;
margin-bottom: 24px;
}
.hero h1 .strike { color: var(--text-dim); text-decoration: line-through; }
.hero h1 .gain { color: var(--red); }
.hero p.lead {
font-size: 19px; color: var(--text-muted); max-width: 720px; margin: 0 auto 36px;
}
.cta-row { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-bottom: 12px; }
.btn {
display: inline-flex; align-items: center; gap: 8px;
padding: 14px 24px; border-radius: var(--radius);
font-family: var(--font); font-size: 15px; font-weight: 600; cursor: pointer;
border: 1px solid transparent; transition: all 0.15s;
}
.btn-primary { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.btn-primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); transform: translateY(-1px); }
.btn-secondary { background: transparent; color: var(--text); border-color: var(--border); }
.btn-secondary:hover { border-color: var(--accent); color: var(--accent); }
.cta-sub { font-size: 13px; color: var(--text-dim); font-family: var(--mono); }
.section { padding: 64px 0; border-top: 1px solid var(--border); }
.section h2 {
font-size: 32px; font-weight: 800; letter-spacing: -0.02em; margin-bottom: 16px;
}
.section p.section-lead { color: var(--text-muted); font-size: 16px; max-width: 720px; margin-bottom: 36px; }
/* Numbers grid */
.proof {
display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 16px; margin-bottom: 24px;
}
.proof-card {
background: var(--bg-card); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 24px;
}
.proof-card .num {
font-family: var(--mono); font-size: 32px; font-weight: 700;
margin-bottom: 8px; letter-spacing: -0.02em;
}
.proof-card .num.neg { color: var(--red); }
.proof-card .num.pos { color: var(--accent); }
.proof-card .label { font-size: 13px; color: var(--text-muted); }
/* Slippage table */
.slip-table {
width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 13px;
background: var(--bg-card); border-radius: var(--radius-lg); overflow: hidden;
border: 1px solid var(--border);
}
.slip-table th, .slip-table td { padding: 14px 16px; text-align: left; }
.slip-table th { color: var(--text-muted); font-weight: 500; border-bottom: 1px solid var(--border); background: var(--bg-card-hover); font-family: var(--font); font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; }
.slip-table td { border-bottom: 1px solid var(--border); }
.slip-table tr:last-child td { border-bottom: none; }
.slip-table .num { text-align: right; }
.slip-table .neg { color: var(--red); }
.slip-table .pos { color: var(--accent); }
.slip-table .dim { color: var(--text-dim); }
/* Pricing */
.pricing-card {
background: linear-gradient(180deg, var(--bg-card) 0%, rgba(0, 212, 170, 0.04) 100%);
border: 2px solid var(--accent);
border-radius: var(--radius-lg);
padding: 40px;
text-align: center;
max-width: 560px; margin: 0 auto;
box-shadow: 0 20px 60px rgba(0, 212, 170, 0.10);
}
.pricing-card .tier { color: var(--accent); font-family: var(--mono); font-size: 13px; font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 12px; }
.pricing-card .price {
font-size: 64px; font-weight: 900; letter-spacing: -0.04em;
}
.pricing-card .price .currency { font-size: 32px; vertical-align: super; opacity: 0.6; margin-right: 4px; }
.pricing-card .price .period { font-size: 18px; color: var(--text-muted); font-weight: 500; }
.pricing-card ul { list-style: none; margin: 28px 0 36px; text-align: left; }
.pricing-card li { padding: 10px 0; color: var(--text-muted); font-size: 15px; display: flex; gap: 12px; align-items: flex-start; }
.pricing-card li:before { content: "→"; color: var(--accent); font-family: var(--mono); flex-shrink: 0; }
.pricing-card li strong { color: var(--text); font-weight: 600; }
.pricing-card .btn { width: 100%; justify-content: center; }
.pricing-card .reassure { margin-top: 16px; font-size: 12px; color: var(--text-dim); }
/* Audit form */
.audit-form {
background: var(--bg-card); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 32px;
max-width: 560px; margin: 0 auto;
}
.audit-form label { display: block; font-size: 13px; color: var(--text-muted); margin-bottom: 6px; font-weight: 500; }
.audit-form input, .audit-form textarea {
width: 100%; padding: 12px 14px;
background: var(--bg); border: 1px solid var(--border);
border-radius: var(--radius); color: var(--text);
font-family: var(--mono); font-size: 14px; margin-bottom: 16px;
transition: border-color 0.15s;
}
.audit-form input:focus, .audit-form textarea:focus { outline: none; border-color: var(--accent); }
.audit-form .btn { width: 100%; justify-content: center; }
.audit-form .form-note { font-size: 12px; color: var(--text-dim); margin-top: 12px; text-align: center; }
.audit-form .success {
padding: 16px; background: var(--accent-soft); color: var(--accent);
border: 1px solid var(--accent-glow); border-radius: var(--radius);
text-align: center; margin-top: 16px; display: none;
}
.audit-form .error {
padding: 16px; background: var(--red-soft); color: var(--red);
border: 1px solid var(--red); border-radius: var(--radius);
text-align: center; margin-top: 16px; display: none;
}
/* What you get */
.kv {
display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
background: var(--bg-card); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 28px;
}
.kv > div { display: flex; gap: 12px; align-items: flex-start; }
.kv .num {
font-family: var(--mono); color: var(--accent); font-weight: 600;
font-size: 14px; padding-top: 2px; flex-shrink: 0; min-width: 28px;
}
.kv strong { display: block; font-size: 15px; margin-bottom: 2px; }
.kv span { font-size: 13px; color: var(--text-muted); }
footer {
border-top: 1px solid var(--border);
padding: 32px 0; margin-top: 40px;
text-align: center; color: var(--text-dim); font-size: 13px;
}
footer a { color: var(--text-muted); margin: 0 12px; }
@media (max-width: 720px) {
.hero { padding: 48px 0 40px; }
.hero h1 { font-size: 36px; }
.hero p.lead { font-size: 16px; }
.pricing-card { padding: 28px; }
.pricing-card .price { font-size: 48px; }
.kv { grid-template-columns: 1fr; }
nav a { display: none; }
}
</style>
</head>
<body>
<header>
<div class="container">
<a href="/" class="logo">⚡ Protodex<span>.io</span></a>
<nav>
<a href="/">MCP Directory</a>
<a href="https://github.com/LuciferForge/pnl-truthteller">pnl-truthteller</a>
<a href="#audit">Free audit</a>
</nav>
</div>
</header>
<main>
<section class="hero">
<div class="container">
<span class="eyebrow">PolyScope Pro · weekly Polymarket data + bot audits</span>
<h1>Your bot says <span class="strike">+$33</span> profit.<br>
The chain says <span class="gain">−$89</span>.</h1>
<p class="lead">
We built the tool that reconciles what your Polymarket bot recorded against what the on-chain fills actually delivered. We found −$125 of hidden slippage on our own bot. Then we ran it on a stranger's wallet — same pattern. PolyScope Pro is the weekly-updated dataset and signal layer used to hunt these gaps. Audit included.
</p>
<div class="cta-row">
<a href="https://manja8.gumroad.com/l/agyjd" class="btn btn-primary" target="_blank" rel="noopener">Get the Full Dataset — $9 →</a>
<a href="https://manja8.gumroad.com/l/PolyScope" class="btn btn-secondary" target="_blank" rel="noopener">Or subscribe — $29/mo</a>
<a href="#audit" class="btn btn-secondary">Free audit first</a>
</div>
<div class="cta-sub">10.8M+ price snapshots · 13,900+ markets · instant download · one-time $9 · Built by <a href="https://github.com/LuciferForge" style="color: var(--text-muted);">LuciferForge</a></div>
</div>
</section>
<section class="section">
<div class="container">
<h2>The gap is real, and it generalizes</h2>
<p class="section-lead">Most Polymarket bots record P&L the moment <code style="font-family: var(--mono); color: var(--accent);">post_order()</code> returns OK — not when the on-chain fill settles. The CLOB fills in stages: FOK rejects, partial fills, sweep retries, dust. The on-chain USDC delta is materially different from what your bot's DB says.</p>
<div class="proof">
<div class="proof-card">
<div class="num neg">−$125</div>
<div class="label">Hidden slippage on our own bot — across 320 round-trip trades. The DB said +$34, the chain said −$91.</div>
</div>
<div class="proof-card">
<div class="num neg">−$62</div>
<div class="label">On the very first stranger's wallet we tested (65 trades). Pattern repeated.</div>
</div>
<div class="proof-card">
<div class="num neg">−$2,901</div>
<div class="label">On a high-frequency wallet with 814 trades. Bot reported −$618; chain says −$3,520. Bleeding 4.7× harder than it knows.</div>
</div>
</div>
<p class="section-lead" style="margin-top: 24px;">We published the full <a href="https://github.com/LuciferForge/pnl-truthteller/blob/main/examples/POLYMARKET_SLIPPAGE_INDEX.md">Polymarket Slippage Index</a> (5 wallets, 1,251 trades, methodology + caveats) on GitHub. Open source, MIT, reproducible.</p>
<table class="slip-table">
<thead><tr><th>Wallet</th><th class="num">Trades</th><th class="num">DB says</th><th class="num">Chain says</th><th class="num">Hidden slip</th></tr></thead>
<tbody>
<tr><td>Our bot (LuciferForge crash bot)</td><td class="num">320</td><td class="num pos">+$34</td><td class="num neg">−$91</td><td class="num neg">−$125</td></tr>
<tr><td>0x1417f1b7… (random)</td><td class="num">65</td><td class="num pos">+$32</td><td class="num neg">−$30</td><td class="num neg">−$63</td></tr>
<tr><td>0x75cc3b63…</td><td class="num">814</td><td class="num neg">−$619</td><td class="num neg">−$3,520</td><td class="num neg">−$2,902</td></tr>
<tr><td>0x8a2f4ff4… (Creamy-Weapon)</td><td class="num">38</td><td class="num neg">−$376</td><td class="num neg">−$1,366</td><td class="num neg">−$991</td></tr>
<tr><td>0x77fc654f… (Beautiful-Violin)</td><td class="num">14</td><td class="num pos">+$806</td><td class="num neg">−$1,920</td><td class="num neg">−$2,726</td></tr>
</tbody>
</table>
</div>
</section>
<section class="section" id="pricing">
<div class="container">
<h2>What's in PolyScope Pro</h2>
<p class="section-lead">A subscription to the data + signal layer behind every audit, plus a free audit on your bot's wallet on signup.</p>
<div class="pricing-card">
<div class="tier">PolyScope Pro · monthly</div>
<div class="price"><span class="currency">$</span>29<span class="period"> / month</span></div>
<ul>
<li><strong>Weekly Polymarket dataset</strong> — every market, every price snapshot, every orderbook. Auto-delivered Mondays.</li>
<li><strong>Crash signals</strong> — the same drop-detector our bot uses. ≥12% in 1h, fresh every 15 min.</li>
<li><strong>Slippage signal</strong> — flag markets where fill quality is degrading in real time.</li>
<li><strong>Free audit on signup</strong> — we run pnl-truthteller against your wallet, send a per-trade slippage report within 24h.</li>
<li><strong>API access</strong> — direct hit against <code style="font-family: var(--mono); color: var(--accent);">api.protodex.io</code>, 9.5M+ historical price points.</li>
<li><strong>Cancel anytime</strong> — no contract, no fine print.</li>
</ul>
<a href="https://manja8.gumroad.com/l/PolyScope" class="btn btn-primary" target="_blank" rel="noopener">Subscribe — $29/mo →</a>
<div class="reassure">Quarterly $87 · Half-year $174 · Annual $348 — choose at checkout</div>
<div class="reassure" style="margin-top:14px;border-top:1px solid var(--border);padding-top:14px;">Don't need the live feed? <a href="https://manja8.gumroad.com/l/agyjd" target="_blank" rel="noopener" style="color:var(--accent);font-weight:600;">Get the Full Dataset once — $9</a> · 10.8M+ snapshots, instant download.</div>
</div>
</div>
</section>
<section class="section" id="audit">
<div class="container">
<h2>Try a free audit first</h2>
<p class="section-lead">Send us your trading wallet (proxy address only — read-only, no auth). We'll run the audit and email you a per-trade slippage report within 24 hours. No catch. If the report shows you a real number, you can decide if PolyScope Pro is worth $29/mo. If it doesn't, you've got a free data point.</p>
<form class="audit-form" id="audit-form">
<input type="hidden" name="access_key" value="b2fb1576-a39b-4683-8ee9-4e152f731113">
<input type="hidden" name="subject" value="PolyScope free audit request">
<input type="hidden" name="from_name" value="protodex.io · /polyscope">
<input type="checkbox" name="botcheck" style="display:none">
<label>Polymarket proxy wallet (the address that holds your USDC.e / pUSD)</label>
<input type="text" name="wallet" placeholder="0x..." pattern="^0x[a-fA-F0-9]{40}$" required>
<label>Reply-to email</label>
<input type="email" name="email" placeholder="you@example.com" required>
<label>Optional: anything we should know about your bot? (size, strategy, what's worrying you)</label>
<textarea name="notes" rows="3" placeholder="e.g. crash-recovery on binary outcomes, $5 positions, 200+ trades"></textarea>
<button type="submit" class="btn btn-primary">Request free audit →</button>
<div class="form-note">We never ask for a private key. Wallet address only. Audit emailed within 24h.</div>
<div class="success" id="form-success">Got it. Audit will hit your inbox within 24 hours. Reply to that email if anything's missing.</div>
<div class="error" id="form-error">Submit failed — please reach out to manja316@gmail.com directly.</div>
</form>
</div>
</section>
<section class="section">
<div class="container">
<h2>How the audit works</h2>
<div class="kv">
<div><span class="num">01</span><div><strong>You give us your wallet address.</strong><span>Proxy address only. Read-only. No auth, no keys, no permissions.</span></div></div>
<div><span class="num">02</span><div><strong>We pull every fill from the public CLOB.</strong><span>Polymarket's data-api exposes all your trades. We don't touch private state.</span></div></div>
<div><span class="num">03</span><div><strong>We pair them into round-trip BUY→SELL trades.</strong><span>Oldest-BUY-first FIFO. Sweep-retry dedup via orderID.</span></div></div>
<div><span class="num">04</span><div><strong>We compute theoretical vs actual P&L.</strong><span>What your bot's DB would record vs the on-chain USDC delta. Difference = slippage.</span></div></div>
<div><span class="num">05</span><div><strong>We email you a markdown report.</strong><span>By-exit-reason slippage, worst-10 trades, dust accounting, methodology you can re-run.</span></div></div>
<div><span class="num">06</span><div><strong>If you want the deeper signal: subscribe.</strong><span>PolyScope Pro pipes weekly data + live crash + slippage signals into your stack.</span></div></div>
</div>
</div>
</section>
</main>
<footer>
<div class="container">
<a href="https://github.com/LuciferForge/pnl-truthteller">pnl-truthteller (open-source · MIT)</a>
<a href="https://github.com/LuciferForge/pnl-truthteller/blob/main/examples/POLYMARKET_SLIPPAGE_INDEX.md">Slippage Index</a>
<a href="https://manja8.gumroad.com/l/PolyScope">Subscribe</a>
<a href="/">protodex.io</a>
<a href="https://claude.ai/referral/Cj_8sl02LQ" target="_blank" rel="noopener">Built with Claude</a>
<div style="margin-top: 12px; font-size: 12px;">© 2026 LuciferForge · Built on top of pnl-truthteller v0.1.1</div>
</div>
</footer>
<script>
const form = document.getElementById('audit-form');
const success = document.getElementById('form-success');
const error = document.getElementById('form-error');
form.addEventListener('submit', async (e) => {
e.preventDefault();
success.style.display = 'none';
error.style.display = 'none';
const data = new FormData(form);
try {
const r = await fetch('https://api.web3forms.com/submit', {
method: 'POST',
body: data
});
const j = await r.json();
if (j.success) {
form.reset();
success.style.display = 'block';
} else {
error.style.display = 'block';
}
} catch (err) {
error.style.display = 'block';
}
});
</script>
</body>
</html>