Skip to content

Commit a78c153

Browse files
valvesssclaude
andcommitted
paper: abstract do manuscrito atualizado (equivalência + validade externa); pipeline de PDF de submissão
- abstract embutido no draft.md estava defasado (só abstract.md fora atualizado) — agora cita TOST (p=0.006) e validade externa (tênis+basquete) - build_pdf.sh + _pandoc_header.tex: gera PDF de submissão (pandoc+tectonic), Times New Roman + Menlo, numeração de linhas, 20 pranchas de figuras embutidas (39 págs) - outputs/paper/ gitignored (artefato de build; recipe versionado) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 8550c83 commit a78c153

4 files changed

Lines changed: 95 additions & 9 deletions

File tree

study/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ __pycache__/
99
*.pyc
1010
.venv/
1111
.DS_Store
12+
13+
# PDF de submissão (artefato de build; regenerar com docs/paper/build_pdf.sh)
14+
outputs/paper/
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
% Cabeçalho LaTeX para o PDF de submissão (pandoc --pdf-engine=tectonic).
2+
% Numeração de linhas para revisão + mapeamento de sub/sobrescritos unicode que
3+
% a Times New Roman não traz como glifo (renderiza via \textsubscript/superscript).
4+
\usepackage{lineno}
5+
\linenumbers
6+
\usepackage{newunicodechar}
7+
\newunicodechar{₀}{\textsubscript{0}}
8+
\newunicodechar{₁}{\textsubscript{1}}
9+
\newunicodechar{₂}{\textsubscript{2}}
10+
\newunicodechar{₃}{\textsubscript{3}}
11+
\newunicodechar{₄}{\textsubscript{4}}
12+
\newunicodechar{₅}{\textsubscript{5}}
13+
\newunicodechar{₆}{\textsubscript{6}}
14+
\newunicodechar{₇}{\textsubscript{7}}
15+
\newunicodechar{₈}{\textsubscript{8}}
16+
\newunicodechar{₉}{\textsubscript{9}}
17+
\newunicodechar{ᵢ}{\textsubscript{i}}
18+
\newunicodechar{ⱼ}{\textsubscript{j}}
19+
\newunicodechar{ₖ}{\textsubscript{k}}
20+
\newunicodechar{ₗ}{\textsubscript{L}}
21+
\newunicodechar{⁰}{\textsuperscript{0}}
22+
\newunicodechar{⁴}{\textsuperscript{4}}
23+
\newunicodechar{⁵}{\textsuperscript{5}}
24+
\newunicodechar{⁶}{\textsuperscript{6}}
25+
\newunicodechar{⁻}{\textsuperscript{\textminus}}
26+
% espaçamento de parágrafo um pouco mais arejado p/ leitura em revisão
27+
\setlength{\parskip}{4pt}

study/docs/paper/build_pdf.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
# Gera o PDF de submissão (manuscrito + numeração de linhas + pranchas de figuras)
3+
# a partir do draft.md. Requer pandoc + tectonic (`brew install pandoc tectonic`).
4+
# Fontes: Times New Roman (corpo, com Grego/≈) + Menlo (código, com Grego).
5+
# Saída: study/outputs/paper/submission.pdf
6+
set -euo pipefail
7+
cd "$(dirname "$0")/../.." # study/
8+
OUT=outputs/paper; mkdir -p "$OUT"
9+
BUILT="$OUT/_submission_built.md"
10+
11+
# 1) monta o markdown: draft + apêndice de PRANCHAS (figuras existentes, ao final)
12+
python3 - "$BUILT" <<'PY'
13+
import re, sys, pathlib
14+
root = pathlib.Path(".")
15+
draft = (root/"docs/paper/draft.md").read_text()
16+
figs = (root/"docs/paper/FIGURES.md").read_text()
17+
# mapa: nº da figura -> arquivo (das linhas da tabela do FIGURES.md)
18+
rows = re.findall(r"\*\*Figure (\d+)\*\*[^|]*\|\s*`([^`]+\.png)`", figs)
19+
plates = ["\n\n\\newpage\n\n# Figure plates\n",
20+
"*Figures are listed with full captions in the Figures section above; "
21+
"the plates follow here, one per page.*\n"]
22+
have = []
23+
for n, fn in sorted(rows, key=lambda r: int(r[0])):
24+
p = root/"outputs/fig"/fn
25+
if p.exists():
26+
plates.append(f"\n\\newpage\n\n![]({fn}){{width=92%}}\n\n**Figure {n}.**\n")
27+
have.append(n)
28+
# figuras ausentes (bloco de dado externo não rodado) são simplesmente omitidas
29+
(root/sys.argv[1].split('/',2)[-1] if False else pathlib.Path(sys.argv[1])).write_text(
30+
draft + "".join(plates))
31+
print(f"plates embedded: {len(have)} (figs {', '.join(have)})", file=sys.stderr)
32+
PY
33+
34+
# 2) pandoc -> PDF (tectonic)
35+
pandoc "$BUILT" \
36+
-o "$OUT/submission.pdf" \
37+
--pdf-engine=tectonic \
38+
--resource-path=.:outputs/fig \
39+
-V geometry:margin=1in \
40+
-V fontsize=11pt \
41+
-V linestretch=1.3 \
42+
-V mainfont="Times New Roman" \
43+
-V monofont="Menlo" \
44+
-V colorlinks=true \
45+
-H docs/paper/_pandoc_header.tex \
46+
2>&1 | grep -iE "could not represent|error:" | sort | uniq -c || true
47+
48+
rm -f "$BUILT"
49+
echo "-> $OUT/submission.pdf"

study/docs/paper/draft.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,24 @@ win-probability distribution — the algebraic image of the favourite–longshot
1919
level tracks competitiveness and survives a competitiveness measure built
2020
**without odds** (results-only Elo; skewness vs upset rate r = +0.83), while odds-
2121
and Elo-based favourite strength agree at r = 0.91. A league×season panel shows
22-
**no secular trend** within the modern regime (β = +0.00015/yr, p = 0.73; a single
23-
break, COVID-19; 70% of variance is between-league). Margin is orthogonal to
24-
asymmetry, and the identity reappears in the binary over/under-2.5 market. Cast as
25-
one instrument for the *similarity of asymmetries*, a single competitiveness
26-
parameter explains 82% of the between-league variance, the first two moments 98%,
27-
and the full win-probability distribution is the minimal sufficient statistic. The
28-
market's risk asymmetry is a structural baseline inherited from the sport, not
29-
produced by pricing it.
22+
**no secular trend** within the modern regime (β = +0.00015/yr; a single break,
23+
COVID-19; 70% of variance is between-league); by an equivalence test (two one-sided
24+
tests) the trend is **statistically equivalent to zero** within half a between-league
25+
SD (*p* = 0.006), turning the usual high *p*-value into positive evidence of
26+
stability. Margin is orthogonal to asymmetry, and the identity reappears in the binary
27+
over/under-2.5 market. Cast as one instrument for the *similarity of asymmetries*, a
28+
single competitiveness parameter explains 82% of the between-league variance, the
29+
first two moments 98%, and the full win-probability distribution is the minimal
30+
sufficient statistic. Finally, ported unchanged through a sport-agnostic data layer,
31+
the same law holds **out of sample in tennis and basketball** — two-outcome markets
32+
with independent odds sources (corr(skew, competitiveness) −0.95 to −1.00; underdog
33+
skew +2.3 to +2.6) — identifying it as a property of competition rather than of
34+
football or the 1X2 contract. The market's risk asymmetry is a structural baseline
35+
inherited from the sport, not produced by pricing it.
3036

3137
**Keywords:** skewness; favourite–longshot bias; betting markets; market
32-
efficiency; implied probabilities; structural invariance.
38+
efficiency; implied probabilities; structural invariance; equivalence testing;
39+
cross-sport validation.
3340

3441
---
3542

0 commit comments

Comments
 (0)