ml4t-define-universe skillA
ml4t-define-universe is agent-read markdown (skill) from ml4t/skills: Define point-in-time tradeable universes with liquidity filters. Use when constructing the investable asset set that avoids survivorship and liquidity bias..
Indexed from public GitHub and served as immutable, content-addressed versions. Install it pinned to an exact SHA-256 with the mdr CLI, and every file is verified against the hash recorded here before it reaches your agent. The deterministic audit below grades the latest version, and the same file always earns the same grade.
What the file says
# Define Universe
Using today's index constituents for a historical backtest introduces survivorship bias - you only trade winners that stayed in the index, inflating returns by 1-2% per year.
## The Problem
The S&P 500 today contains companies that survived and grew. The 2010 index
contained firms since acquired, delisted, or bankrupt. A backtest on current
members never sees these failures and overstates performance.
## The Pattern
### WRONG
```python
import polars as pl
# Current constituents applied to historical backtest
sp500_today = ["AAPL", "MSFT", "GOOGL", ...] # 2024 list
prices = pl.read_parquet("prices.parquet").filter(
pl.col("symbol").is_in(sp500_today)
)
# Backtest from 2010 - but these are 2024 survivors
```
### CORRECT
```python
import polars as pl
def get_universe(
prices: pl.DataFrame,
as_of: str,
min_price: float = 5.0,
min_avg_dollar_volume: float = 5_000_000,
min_history_days: int = 252,
lookback_days: int = 63,
) -> list[str]:
"""Point-in-time universe: only assets tradeable on as_of date."""
cutoff = pl.lit(as_of).str.to_date()
candidates = (
prices.filter(pl.col("timestamp") <= cutoff)
…Read the whole file at its exact version.
How to install
mdr add ml4t/skills/ml4t-define-universe@git:20260901.c415df0mdr add ml4t/skills/ml4t-define-universe@sha256:21afde5b855ad814Pin to a label to follow the author's releases, or to a sha256 to freeze the exact bytes forever. Either way the resolved hash is written to mdr.lock, and mdr install reproduces it on any machine.
[](https://markdownregistry.com/a/art_m5icpipkwyosuu55)
1 badge views in 30 days
Versions
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20260901.c415df0 latest | 2026-09-01 | c415df0 | 3,956 B | A | view · diff |
| git:20260528.303089e | 2026-05-28 | 303089e | 3,964 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (3956 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
ml4t/skills · 19 stars · license Apache-2.0 · pushed 2026-09-24 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_m5icpipkwyosuu55 GET https://markdownregistry.com/api/v1/resolve?ref=ml4t/skills/ml4t-define-universe GET https://markdownregistry.com/api/v1/blob/21afde5b855ad814df21faf99c5f7ae810965021cf92921f37174f1f2229292c
Your agent does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.