{% extends "_base.html" %} {% block page_title %}{{ title }}{% endblock %} {% block extra_css %} /* ── Parameter & Guidance Tables ─────────────────── */ .param-table, .guidance-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; } .param-table th, .guidance-table th { background: #2d3748; color: #90cdf4; padding: 0.6rem 1rem; text-align: left; font-weight: 600; white-space: nowrap; } .param-table td, .guidance-table td { padding: 0.5rem 1rem; border-bottom: 1px solid #2d3748; vertical-align: top; } .param-table td.param-name { font-family: "SFMono-Regular", Consolas, monospace; color: #63b3ed; white-space: nowrap; font-weight: 600; } .param-table td.param-value { font-family: "SFMono-Regular", Consolas, monospace; color: #68d391; white-space: nowrap; } .param-table td.param-constraint { font-family: "SFMono-Regular", Consolas, monospace; color: #f6ad55; white-space: nowrap; } .param-table td.param-description { color: #cbd5e0; } .param-table tbody tr:hover, .guidance-table tbody tr:hover { background: #1e2a3a; } .guidance-table td.regime { color: #cbd5e0; white-space: nowrap; } .guidance-table td.shrink-range { color: #f6ad55; font-weight: 600; } .guidance-table td.notes { color: #a0aec0; } /* ── Theory Section ───────────────────────────────── */ .theory-block { background: #1a202c; border: 1px solid #2d3748; border-radius: 12px; padding: 1.5rem 2rem; line-height: 1.8; } .theory-block h3 { color: #90cdf4; font-size: 1rem; font-weight: 600; margin: 1.25rem 0 0.5rem; } .theory-block h3:first-child { margin-top: 0; } .theory-block p { color: #cbd5e0; margin-bottom: 0.75rem; } .theory-block code { font-family: "SFMono-Regular", Consolas, monospace; background: #2d3748; padding: 0.1em 0.4em; border-radius: 4px; font-size: 0.875em; color: #63b3ed; } .theory-block .math-block { font-family: "SFMono-Regular", Consolas, monospace; background: #2d3748; border-left: 3px solid #4299e1; padding: 0.75rem 1rem; border-radius: 0 8px 8px 0; margin: 0.75rem 0; color: #e2e8f0; font-size: 0.9rem; } .theory-block ul { list-style: none; padding: 0; } .theory-block ul li { color: #cbd5e0; padding: 0.2rem 0; padding-left: 1.5rem; position: relative; } .theory-block ul li::before { content: "▸"; position: absolute; left: 0; color: #4299e1; } .theory-block a { color: #63b3ed; } .theory-block a:hover { text-decoration: underline; } .refs { color: #a0aec0; font-size: 0.85rem; margin-top: 1rem; } {% endblock %} {% block header %}

⚙️ {{ title }}

vola: {{ vola }} corr: {{ corr }} clip: {{ clip }} shrink (λ): {{ shrink }} AUM: {{ aum }}
{% endblock %} {% block nav %} {% endblock %} {% block content %}

Configuration Parameters

{{ params_html | safe }}

Lambda (Shrinkage) Sweep

{{ sweep_section | safe }}

Shrinkage Guidance — n / T Regimes

{{ guidance_html | safe }}

Theory & References

Linear Shrinkage toward the Identity

The shrink parameter (λ) controls how much the EWMA sample correlation matrix CEWMA is regularised before being passed to the linear solver. The shrunk matrix is:

C_shrunk = λ · C_EWMA + (1 - λ) · I_n

where In is the n x n identity matrix. Setting λ = 1 uses the raw EWMA correlation matrix (no shrinkage); setting λ = 0 replaces it entirely with the identity (positions become purely signal-proportional, uncorrelated).

Why Shrinkage?

When the number of assets n is large relative to the lookback window T (high concentration ratio n/T), the sample covariance matrix is poorly estimated. Extreme eigenvalues amplify estimation noise and cause the linear solver to allocate excessive leverage to a few eigendirections. Shrinkage toward the identity damps these extremes, improves the condition number, and produces more stable, diversified positions.

When to Prefer Strong Shrinkage (low λ)

When to Prefer Light Shrinkage (high λ)

EWMA Parameters — vola and corr

Both vola and corr are span-equivalent EWMA lookbacks (in trading periods). The EWMA decay factor is a = 2 / (span + 1), giving a centre-of-mass of span / 2 periods. corr must be >= vola to ensure the correlation estimator sees at least as much history as the volatility normaliser.

References

Ledoit, O. & Wolf, M. (2004). A well-conditioned estimator for large-dimensional covariance matrices. Journal of Multivariate Analysis, 88(2), 365-411.
Chen, Y., Wiesel, A., Eldar, Y. C., & Hero, A. O. (2010). Shrinkage Algorithms for MMSE Covariance Estimation. IEEE Transactions on Signal Processing, 58(10), 5016-5029.
See also: basanos.math._signal.shrink2id for the implementation.

{% endblock %}