ml4t-build-bars SKILL.md skillA
ml4t-build-bars from ml4t/skills is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add ml4t/skills/ml4t-build-bars@git:20260921.f0ea019Pins git:20260921.f0ea019 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- ml4t/skills
- Path
data/build-bars/SKILL.md- Versions recorded
- 5
- Latest version
- git:20260921.f0ea019, committed Sep 21, 2026
- First version recorded
- May 28, 2026
- Size
- 4,837 bytes
- Repository stars
- 41
- License
- Apache-2.0
Aggregate tick data into time, volume, and dollar bars. Use when resampling raw tick data into regular or information-driven bars.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Build Bars
Time bars sample by the clock, producing bars with wildly different information content - a 5-minute bar during the open contains 100x more trades than one at 2pm.
## The Problem
Standard time bars (1-min, 5-min, daily) sample at fixed intervals regardless of market activity. During high-volume periods, a single bar compresses thousands of trades; during quiet periods, a bar may contain just a handful. This creates heteroscedastic returns that violate the i.i.d. assumptions of most ML models. Volume and dollar bars sample by activity instead, producing bars with roughly equal information content and returns closer to normality.
## The Pattern
### WRONG
```python
import polars as pl
# Only using time bars - uneven information per bar
trades = pl.read_parquet("trades.parquet")
bars_5min = (
trades.group_by_dynamic("timestamp", every="5m")
.agg(
open=pl.col("price").first(),
close=pl.col("price").last(),
volume=pl.col("size").sum(),
)
)
# Bar at 9:30 has 5000 trades, bar at 14:00 has 50 trades
```
### CORRECT
```python
import numpy as np
import polars as pl
def bar_index(dollar_vol: np.ndarray, threshold: float) -> np.ndarray:
…Read the whole file at its exact version.
How to install
mdr add ml4t/skills/ml4t-build-bars@sha256:1f3fd6f903785d6cThe line at the top of this page pins the label git:20260921.f0ea019, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_nujjwdl3we5jtxqr)
3 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 5 versions of this file, between May 28, 2026 and Sep 21, 2026, about one every 29 days.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20260921.f0ea019 latest | 2026-09-21 | f0ea019 | 4,837 B | A | view · diff |
| git:20260901.f84f825 | 2026-09-01 | f84f825 | 4,894 B | A | view · diff |
| git:20260901.32123e7 | 2026-09-01 | 32123e7 | 4,928 B | A | view · diff |
| git:20260901.c415df0 | 2026-09-01 | c415df0 | 4,664 B | A | view · diff |
| git:20260528.303089e | 2026-05-28 | 303089e | 4,674 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 (4837 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 · 41 stars · license Apache-2.0 · pushed 2026-11-08 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_nujjwdl3we5jtxqr GET https://markdownregistry.com/api/v1/resolve?ref=ml4t/skills/ml4t-build-bars GET https://markdownregistry.com/api/v1/blob/1f3fd6f903785d6c0d267aa79e2bf420d0976980af36eec5f16d9660a46350d6
Your AI assistant 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.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.