more typos
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
"\n",
|
||||
"| Term | Meaning |\n",
|
||||
"|------|---------|\n",
|
||||
"| **Winsorization** | Clipping extreme values at ±$k$ standard deviations — a soft truncation to limit outlier influence |\n",
|
||||
"| **Winsorization** | Clipping extreme values at $\\pm k$ standard deviations — a soft truncation to limit outlier influence |\n",
|
||||
"| **Z-scoring** | Centering to mean 0 and scaling to std 1, so each factor vector lives on the same scale |\n",
|
||||
"| **Neutralization** | Projecting out unwanted components (sector) — an orthogonal projection onto a complement subspace |\n",
|
||||
"| **Composite signal** | A linear combination $c_t = \\sum_k w_k f_{k,\\perp}$ of neutralized factor vectors |\n",
|
||||
@@ -125,7 +125,7 @@
|
||||
"source": [
|
||||
"## Winsorization and Z-Scoring\n",
|
||||
"\n",
|
||||
"**Winsorization** is a statistical technique for limiting the influence of extreme outliers in a dataset by capping them at a specified threshold rather than removing them entirely. Raw factor exposures can have extreme outliers — a stock that returned 500% in the trailing year, for instance. We **Winsorize** at ±3 standard deviations, so that we don't have to drop them.\n",
|
||||
"**Winsorization** is a statistical technique for limiting the influence of extreme outliers in a dataset by capping them at a specified threshold rather than removing them entirely. Raw factor exposures can have extreme outliers — a stock that returned 500% in the trailing year, for instance. We **Winsorize** at $\\pm 3$ standard deviations, so that we don't have to drop them.\n",
|
||||
"\n",
|
||||
"After winsorization we **z-score** cross-sectionally: for each date $t$, the factor vector $f_t$ is transformed to\n",
|
||||
"$$\\tilde{f}_t = (f_t - \\bar{f}_t) / \\text{std}(f_t),$$\n",
|
||||
@@ -268,7 +268,7 @@
|
||||
"id": "9740141a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Much like in Notebook 02, we note that we added a sample size filter with `mask.sum() < 30`. The `mask` identifies stocks that have both a valid factor score and a valid forward return in a given month, and `mask.sum()` counts how many usable pairs you actually have. The `< 30` threshold prevents the code from computing a correlation on a tiny sample, which is statistically meaningless and numerically unstable (e.g., Spearman correlation on 2 stocks is always exactly ±1). If you don't gate this, early-history months, mass delistings, or data gaps inject garbage ±1.0 values into your IC time series, which then contaminate every downstream statistic like the mean IC, Information Ratio, and decay curves. Setting a floor of 30 filters out those degenerate months while retaining enough valid data to produce a reliable signal.\n",
|
||||
"Much like in Notebook 02, we note that we added a sample size filter with `mask.sum() < 30`. The `mask` identifies stocks that have both a valid factor score and a valid forward return in a given month, and `mask.sum()` counts how many usable pairs you actually have. The `< 30` threshold prevents the code from computing a correlation on a tiny sample, which is statistically meaningless and numerically unstable (e.g., Spearman correlation on 2 stocks is always exactly $\\pm$1). If you don't gate this, early-history months, mass delistings, or data gaps inject garbage $\\pm 1.0$ values into your IC time series, which then contaminate every downstream statistic like the mean IC, Information Ratio, and decay curves. Setting a floor of 30 filters out those degenerate months while retaining enough valid data to produce a reliable signal.\n",
|
||||
"\n",
|
||||
"We do this sort of masking throughout."
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user