Skip to content

Commit 48e34e7

Browse files
Two Sides of Schur Damping: arXiv package, web edition, prose pass
arXiv submission package (papers/arxiv/two_sides_of_schur_damping/): - pre-built .bbl (arXiv does not run BibTeX) + .tex, verified to compile from tarball alone (tex+bbl, no .bib) with 0 undefined refs - ready-to-upload tarball and SUBMISSION.md (plain-text abstract, categories: q-fin.PM primary, stat.ME / stat.CO cross-list) Web edition on the docs site: - generate two-sides web edition from LaTeX via docs/build_paper.sh (now builds both papers; template PDF link parameterized so it is no longer schur-only) - add a card on the /papers landing page - nav now links to Papers (the landing page), not the Schur-likelihood anchor - CI docs-up-to-date check extended to cover both papers' generated HTML Paper source (papers/two_sides_of_schur_damping.tex): - cite Antonov, Lipton & Lopez de Prado (HRP: A Closer Look) and note their analytical HRP results may carry over to the spatial gamma=0 endpoint - remove AI-tells from the prose (punchy fragments, "is not a metaphor--it is", the believe/doubt chiasmus, "waiting all along" close) - convert numbered equation envs to unnumbered \[ \] with descriptive references, matching the schur paper's convention so KaTeX renders cleanly Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent e61f2d8 commit 48e34e7

14 files changed

Lines changed: 1252 additions & 59 deletions

.github/workflows/ci.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,25 @@ jobs:
2929
run: pytest
3030

3131
docs-up-to-date:
32-
# The web edition of the paper is generated from papers/schur_likelihood_paper.tex.
33-
# Fail if the committed HTML is stale (i.e. the .tex changed but docs/build_paper.sh
32+
# The web editions of the papers are generated from their LaTeX sources in papers/.
33+
# Fail if any committed HTML is stale (i.e. a .tex changed but docs/build_paper.sh
3434
# was not rerun). Pandoc is pinned so the regenerated output matches byte-for-byte.
3535
runs-on: ubuntu-latest
3636
steps:
3737
- uses: actions/checkout@v4
3838
- uses: r-lib/actions/setup-pandoc@v2
3939
with:
4040
pandoc-version: '3.9.0.2'
41-
- name: Regenerate the web paper from LaTeX
41+
- name: Regenerate the web papers from LaTeX
4242
run: ./docs/build_paper.sh
43-
- name: Fail if the generated web paper is stale
43+
- name: Fail if any generated web paper is stale
4444
run: |
45-
if ! git diff --quiet -- docs/papers/schur-likelihood/index.html; then
46-
echo "::error::docs/papers/schur-likelihood/index.html is out of date — run ./docs/build_paper.sh and commit."
47-
git diff -- docs/papers/schur-likelihood/index.html | head -60
45+
if ! git diff --quiet -- docs/papers/schur-likelihood/index.html docs/papers/two-sides-of-schur-damping/index.html; then
46+
echo "::error::a generated web paper under docs/papers/ is out of date — run ./docs/build_paper.sh and commit."
47+
git diff -- docs/papers/schur-likelihood/index.html docs/papers/two-sides-of-schur-damping/index.html | head -120
4848
exit 1
4949
fi
50-
echo "web paper is in sync with the LaTeX source"
50+
echo "web papers are in sync with the LaTeX sources"
5151
5252
test-minimal:
5353
# Verify the package imports and the full test suite passes with numpy only

docs/_paper_template.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<h1>$title$</h1>$if(subtitle)$<div class="subtitle">$subtitle$</div>$endif$
2929
</div></div>
3030
<div class="container">
31-
$if(author)$ <p class="paper-meta">$for(author)$$author$$sep$, $endfor$$if(date)$ &middot; $date$$endif$ &middot; <a href="https://github.com/microprediction/precise/blob/main/papers/schur_likelihood_paper.pdf">PDF</a></p>
31+
$if(author)$ <p class="paper-meta">$for(author)$$author$$sep$, $endfor$$if(date)$ &middot; $date$$endif$$if(pdfurl)$ &middot; <a href="$pdfurl$">PDF</a>$endif$</p>
3232
$endif$$if(abstract)$ <div class="abstract">$abstract$</div>
3333
$endif$
3434
$body$

docs/build_paper.sh

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env bash
2-
# Regenerate a paper's WEB edition from its LaTeX source — single source of truth, so the
2+
# Regenerate each paper's WEB edition from its LaTeX source — single source of truth, so the
33
# online version cannot drift from the PDF. Requires pandoc (with citeproc).
44
#
55
# ./docs/build_paper.sh
@@ -8,14 +8,29 @@ set -euo pipefail
88
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # docs/
99
root="$(dirname "$here")"
1010

11-
mkdir -p "$here/papers/schur-likelihood"
12-
pandoc "$root/papers/schur_likelihood_paper.tex" \
13-
--from=latex \
14-
--katex \
15-
--citeproc --bibliography="$root/papers/refs.bib" \
16-
--shift-heading-level-by=1 \
17-
--template="$here/_paper_template.html" \
18-
--metadata title="Schur Covariance Evaluation" \
19-
--metadata subtitle="A Principled Pseudo-Likelihood in High Dimensions" \
20-
-o "$here/papers/schur-likelihood/index.html"
21-
echo "wrote docs/papers/schur-likelihood/index.html (generated from papers/schur_likelihood_paper.tex)"
11+
# build_one <tex-basename> <out-slug> <title> <subtitle>
12+
# The PDF lives next to the .tex in papers/ and is linked from the web header.
13+
build_one() {
14+
local tex="$1" slug="$2" title="$3" subtitle="$4"
15+
local pdfurl="https://github.com/microprediction/precise/blob/main/papers/${tex}.pdf"
16+
mkdir -p "$here/papers/$slug"
17+
pandoc "$root/papers/${tex}.tex" \
18+
--from=latex \
19+
--katex \
20+
--citeproc --bibliography="$root/papers/refs.bib" \
21+
--shift-heading-level-by=1 \
22+
--template="$here/_paper_template.html" \
23+
--metadata title="$title" \
24+
--metadata subtitle="$subtitle" \
25+
--metadata pdfurl="$pdfurl" \
26+
-o "$here/papers/$slug/index.html"
27+
echo "wrote docs/papers/$slug/index.html (generated from papers/${tex}.tex)"
28+
}
29+
30+
build_one schur_likelihood_paper schur-likelihood \
31+
"Schur Covariance Evaluation" \
32+
"A Principled Pseudo-Likelihood in High Dimensions"
33+
34+
build_one two_sides_of_schur_damping two-sides-of-schur-damping \
35+
"Two Sides of Schur Damping" \
36+
"High-Dimensional Pseudo-Likelihoods and Portfolio Allocation"

docs/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<a href="#install">Install</a>
3636
<a href="#quickstart">Quick start</a>
3737
<a href="#estimators">Estimators</a>
38-
<a href="#schur">Schur likelihood</a>
38+
<a href="papers/">Papers</a>
3939
<a href="https://github.com/microprediction/precise">GitHub</a>
4040
<a href="https://pypi.org/project/precise/">PyPI</a>
4141
</div>
@@ -167,7 +167,7 @@ <h2>Links</h2>
167167
<li><a href="https://pypi.org/project/precise/">PyPI</a><code>pip install precise</code></li>
168168
<li><a href="https://github.com/microprediction/precise">GitHub repository</a></li>
169169
<li><a href="https://github.com/microprediction/precise/blob/main/MIGRATING.md">Migrating from the 0.16.x skater API</a></li>
170-
<li><a href="https://github.com/microprediction/precise/blob/main/papers/schur_likelihood_paper.pdf">Schur pseudo-likelihood paper (PDF)</a></li>
170+
<li><a href="papers/">Papers</a> — working papers on covariance/correlation estimation and the Schur likelihood</li>
171171
<li><a href="https://allocation.microprediction.org">allocation.microprediction.org</a> — portfolio / allocation (Schur-complementary; moved out of precise)</li>
172172
</ul>
173173
</section>

docs/papers/index.html

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,20 @@ <h3><a href="schur-likelihood/">Schur Covariance Evaluation</a></h3>
3838
<a class="btn btn-secondary" href="https://github.com/microprediction/precise/blob/main/papers/schur_likelihood_paper.pdf">PDF</a></p>
3939
</div>
4040

41-
<p class="text-muted">More to come. The web editions are generated from their LaTeX sources
41+
<div class="paper-card">
42+
<h3><a href="two-sides-of-schur-damping/">Two Sides of Schur Damping</a></h3>
43+
<p class="text-muted" style="margin:4px 0 12px">High-Dimensional Pseudo-Likelihoods and Portfolio Allocation &middot; Peter Cotton</p>
44+
<p>Spatial statisticians fitting high-dimensional weather fields and quantitative investors
45+
building portfolios have independently arrived at the same object: a Schur complement damped by
46+
one interpretable parameter — a conditional covariance for the statistician, a hedged residual
47+
risk for the investor. We show these are one operation, so the closed-form reliability that sets
48+
the damping is at once a James–Stein shrinkage and a Ledoit–Wolf intensity, and note what each
49+
literature has supplied that the other lacks.</p>
50+
<p><a class="btn" href="two-sides-of-schur-damping/">Read online</a>
51+
<a class="btn btn-secondary" href="https://github.com/microprediction/precise/blob/main/papers/two_sides_of_schur_damping.pdf">PDF</a></p>
52+
</div>
53+
54+
<p class="text-muted">The web editions are generated from their LaTeX sources
4255
(<code>docs/build_paper.sh</code>), so they never drift from the PDF.</p>
4356
</div>
4457

0 commit comments

Comments
 (0)