Skip to content

Commit 5771739

Browse files
valvesssclaude
andcommitted
feat(why): positioning one-pager — the shape of the bet
A standalone /why page distilling what only this research can provide: the four pillars (shape-is-a-law + observer-invariance; odds-free shape forecasting; load-bearing un-diversifiable skew; the renounce-edge reproducible apparatus) + why no natural rival (bookmaker/academia/tipster/quant shop) can hold all four at once. Dark hero echoing the identity curve; linked from Nav. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 2d35f67 commit 5771739

2 files changed

Lines changed: 159 additions & 0 deletions

File tree

site/src/components/Nav.astro

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
---
22
const links = [
3+
['Why', '/why'],
34
['Finding', '#finding'],
45
['Law', '#law'],
56
['Invariance', '#invariance'],

site/src/pages/why.astro

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
import Base from '../layouts/Base.astro';
3+
import Footer from '../components/Footer.astro';
4+
5+
// decorative identity curve for the hero backdrop (matches Hero.astro)
6+
const W = 760, H = 420, pts = [];
7+
for (let i = 0; i <= 120; i++) {
8+
const p = 0.18 + (0.64 * i) / 120;
9+
const s = (1 - 2 * p) / Math.sqrt(p * (1 - p));
10+
pts.push(`${(((p - 0.18) / 0.64) * W).toFixed(1)},${(H / 2 - (s / 2.2) * (H / 2)).toFixed(1)}`);
11+
}
12+
13+
const pillars = [
14+
{
15+
n: '01',
16+
t: 'The shape is a law, not a phenomenon — and it ignores who you are.',
17+
b: `Every study of betting returns treats the asymmetry as something to <em>explain</em> — risk appetite, the bookmaker's margin, informed money. We invert it: the skewness needs no behavioural story, it is the algebraic image of a two-outcome bet at probability p, <span class="mono">(1−2p)/√(p(1−p))</span>. And it is <strong>observer-invariant</strong> — your p, the bookmaker's p, the realised frequency all land on the same curve. The disagreement between you and the market lives entirely in the <em>location</em>, never in the shape.`,
18+
k: 'Demonstrated live on /odds: model, market and reality, one curve.'
19+
},
20+
{
21+
n: '02',
22+
t: 'We price the shape of bets that have no market.',
23+
b: `Because we read p from <strong>results alone</strong> (a chronological Elo), the law gives the full return distribution of a bet that was never quoted. A bookmaker can't — it needs a market. A data vendor can't — it resells odds. We give the shape of national-team bets with no line (<span class="mono">corr +0.998</span>), of exotic competitions, of the <strong>champion bet itself</strong> — Argentina-to-win is a +1.2-skew lottery, by the same law.`,
24+
k: 'Odds-free skewness forecasting — a capability others structurally lack.'
25+
},
26+
{
27+
n: '03',
28+
t: 'The shape is load-bearing and cannot be diversified away.',
29+
b: `Single-bet skewness decays as <span class="mono">~1/√N</span>: the "lottery feel" of a wager is irreducible structure, not a choice you can hedge out. That turns the law into a decision tool — for Kelly, bankroll and portfolio sizing — because the asymmetry is mathematically imposed on the single bet. We can say <em>exactly</em> how much of the lottery feel is structure versus selection.`,
30+
k: 'A risk-shape primitive, not a tip.'
31+
},
32+
{
33+
n: '04',
34+
t: 'The apparatus is the moat — an instrument, not a pick.',
35+
b: `Structural law + <strong>pre-registered live ledger</strong> (frozen before kickoff, append-only, git-versioned) + fully reproducible with a DOI + external validity across sports (tennis, basketball, out-of-sample). That combination exists nowhere else. We <strong>renounce edge on purpose</strong> — and that renunciation is what makes the rest credible. What we offer is a measuring instrument anyone can verify, not a promise to beat the house.`,
36+
k: 'Reproducible, falsifiable, multi-sport — verifiable by design.'
37+
}
38+
];
39+
40+
const rivals = [
41+
['The bookmaker', 'Has the markets — but treats the shape as a by-product, and cannot read a bet with no line. Commoditising the shape is against its interest.'],
42+
['Academia (FLB literature)', 'Has models — but explains the asymmetry behaviourally, backtests on history, and rarely pre-registers or reproduces a live multi-sport apparatus.'],
43+
['The tipster', 'Sells the location (who wins) — no rigor, and explicitly chases the edge we deliberately renounce.'],
44+
['The quant shop', 'Chases edge too — the shape is incidental, the method is closed, and nothing is verifiable from the outside.']
45+
];
46+
---
47+
<Base title="Why this exists — the shape of the bet | skew-dynamic"
48+
description="We are the only ones who study the shape of betting returns as the object, prove it is an observer-invariant structural law, and do it with a pre-registered, reproducible, multi-sport apparatus that deliberately renounces edge.">
49+
<header class="w-hero dark">
50+
<svg class="w-bg" viewBox={`0 0 ${W} ${H}`} preserveAspectRatio="xMidYMid slice" aria-hidden="true">
51+
<defs><linearGradient id="cv" x1="0" y1="0" x2="1" y2="0">
52+
<stop offset="0" stop-color="#2f7fc7" stop-opacity="0"/>
53+
<stop offset=".5" stop-color="#4a97d4" stop-opacity=".9"/>
54+
<stop offset="1" stop-color="#9ec7e8" stop-opacity=".2"/>
55+
</linearGradient></defs>
56+
<line x1="0" y1={H/2} x2={W} y2={H/2} stroke="#1d3a5f" stroke-width="1"/>
57+
<polyline points={pts.join(' ')} fill="none" stroke="url(#cv)" stroke-width="2.5"/>
58+
</svg>
59+
<div class="container w-hero-inner">
60+
<div class="w-top">
61+
<a class="brand" href="/"><span class="brand-mark"></span>skew<span class="brand-dim">-dynamic</span></a>
62+
<div class="w-links">
63+
<a href="/">The study</a><a href="/odds">Odds</a><a href="/worldcup">World Cup</a>
64+
<a href="https://github.com/cold-code-labs/skew-dynamic" target="_blank" rel="noopener">GitHub ↗</a>
65+
</div>
66+
</div>
67+
<div class="eyebrow">Positioning · why this exists</div>
68+
<h1>Everyone else studies <span class="hl">who wins</span>. We study the <span class="hl">shape of the bet</span> — and prove the shape is a law.</h1>
69+
<p class="w-lede">The return on a wager has a form — how it pays, how it fails, how lopsided the
70+
ride is. We are the only ones treating that <strong>shape</strong> as the object of study, proving it
71+
is an <strong>observer-invariant structural law</strong>, and doing it with a pre-registered,
72+
reproducible, multi-sport apparatus that <strong>deliberately renounces edge</strong>.</p>
73+
</div>
74+
</header>
75+
76+
<article class="container w-wrap">
77+
<section class="w-pillars">
78+
{pillars.map(p => <div class="w-pill reveal">
79+
<div class="w-pill-n mono">{p.n}</div>
80+
<div class="w-pill-body">
81+
<h2>{p.t}</h2>
82+
<p set:html={p.b}></p>
83+
<div class="w-pill-k">{p.k}</div>
84+
</div>
85+
</div>)}
86+
</section>
87+
88+
<section class="w-rivals reveal">
89+
<h3>Why no one else can sit here</h3>
90+
<p class="w-rivals-lede">Each natural rival is blocked by its own incentive — every one of them gives up
91+
at least one of the four. The seat needs all four at once.</p>
92+
<div class="w-rgrid">
93+
{rivals.map(([who, why]) => <div class="w-rcard">
94+
<b>{who}</b><span>{why}</span>
95+
</div>)}
96+
</div>
97+
</section>
98+
99+
<section class="w-seat reveal">
100+
<div class="w-seat-mark"></div>
101+
<p class="w-seat-line">We are the only ones who treat the <em>shape</em> of a betting return as the object
102+
of study, prove it is a law that holds for <em>anyone's</em> probability, and do it with an apparatus
103+
that — on purpose — does not try to win.</p>
104+
<p class="w-seat-sub">Everything else — the goal models, the Elo, the de-vig, the dashboards — is means.
105+
Those four are the end. No bookmaker, academic, tipster or quant shop can hold all four, because each
106+
has an incentive that kills one.</p>
107+
<div class="w-cta">
108+
<a class="btn btn-primary" href="/">See the study →</a>
109+
<a class="btn btn-ghost" href="/odds">The law vs the market</a>
110+
<a class="btn btn-ghost" href="/paper">Read the paper</a>
111+
</div>
112+
</section>
113+
</article>
114+
115+
<Footer />
116+
</Base>
117+
118+
<style>
119+
.w-hero { position: relative; overflow: hidden; padding: 28px 0 clamp(56px,9vh,104px); }
120+
.w-bg { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .5; mask-image: linear-gradient(90deg, transparent, #000 30%, #000 70%, transparent); }
121+
.w-hero-inner { position: relative; }
122+
.w-top { display: flex; align-items: center; gap: 20px; margin-bottom: clamp(40px,8vh,80px); }
123+
.brand { font-weight: 650; letter-spacing: -.02em; color: #fff; display: flex; align-items: center; gap: 9px; }
124+
.brand:hover { text-decoration: none; } .brand-dim { color: #6f87a4; font-weight: 500; }
125+
.brand-mark { width: 16px; height: 16px; border-radius: 5px; background: linear-gradient(135deg, var(--accent), var(--ice)); }
126+
.w-links { margin-left: auto; display: flex; gap: 18px; }
127+
.w-links a { color: #b9cbe1; font-size: .9rem; font-weight: 500; } .w-links a:hover { color: var(--ice); text-decoration: none; }
128+
.w-hero h1 { max-width: 20ch; margin-top: 16px; font-size: clamp(2rem,5vw,3.1rem); letter-spacing: -.03em; line-height: 1.06; }
129+
.hl { background: linear-gradient(120deg, var(--ice), #fff); -webkit-background-clip: text; background-clip: text; color: transparent; }
130+
.w-lede { max-width: 60ch; margin-top: 18px; font-size: 1.16rem; color: #b9cbe1; line-height: 1.6; }
131+
.w-lede strong { color: #eaf2fb; }
132+
133+
.w-wrap { max-width: 880px; padding-top: 56px; padding-bottom: 20px; }
134+
.w-pillars { display: flex; flex-direction: column; gap: 14px; }
135+
.w-pill { display: grid; grid-template-columns: auto 1fr; gap: 18px; border: 1px solid var(--line-soft); border-radius: 16px; padding: 24px 26px; background: var(--surface, #fff); transition: border-color .2s; }
136+
.w-pill:hover { border-color: var(--accent); }
137+
.w-pill-n { font-size: 1.1rem; font-weight: 650; color: var(--accent); padding-top: 3px; }
138+
.w-pill h2 { font-size: 1.32rem; letter-spacing: -.02em; line-height: 1.2; margin: 0 0 10px; }
139+
.w-pill p { color: var(--ink-soft); line-height: 1.66; margin: 0 0 14px; }
140+
.w-pill p :global(strong) { color: var(--ink); } .w-pill p :global(em) { color: var(--accent); font-style: normal; font-weight: 500; }
141+
.w-pill-k { font-size: .84rem; font-weight: 600; color: var(--accent); border-top: 1px dashed var(--line-soft); padding-top: 12px; }
142+
143+
.w-rivals { margin: 48px 0 8px; }
144+
.w-rivals h3 { font-size: 1.5rem; letter-spacing: -.02em; margin-bottom: 8px; }
145+
.w-rivals-lede { color: var(--ink-soft); line-height: 1.6; max-width: 64ch; margin-bottom: 22px; }
146+
.w-rgrid { display: grid; grid-template-columns: 1fr; gap: 12px; }
147+
@media (min-width: 680px) { .w-rgrid { grid-template-columns: 1fr 1fr; } }
148+
.w-rcard { border: 1px solid var(--line-soft); border-left: 3px solid var(--neg); border-radius: 10px; padding: 16px 18px; }
149+
.w-rcard b { display: block; color: var(--ink); font-size: 1rem; margin-bottom: 6px; }
150+
.w-rcard span { color: var(--ink-soft); font-size: .9rem; line-height: 1.55; }
151+
152+
.w-seat { margin: 52px 0 8px; padding: 36px 32px; border-radius: 18px; background: var(--accent-soft); border: 1px solid var(--line-soft); text-align: center; }
153+
.w-seat-mark { width: 22px; height: 22px; border-radius: 7px; margin: 0 auto 18px; background: linear-gradient(135deg, var(--accent), var(--navy)); box-shadow: 0 0 0 4px var(--accent-soft); }
154+
.w-seat-line { font-size: clamp(1.2rem,2.6vw,1.55rem); letter-spacing: -.02em; line-height: 1.4; color: var(--ink); max-width: 40ch; margin: 0 auto 14px; font-weight: 500; }
155+
.w-seat-line em { color: var(--accent); font-style: normal; }
156+
.w-seat-sub { color: var(--ink-soft); line-height: 1.65; max-width: 56ch; margin: 0 auto 24px; font-size: .98rem; }
157+
.w-cta { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
158+
</style>

0 commit comments

Comments
 (0)