SkillAgentSearch skills...

Monte-Neo

Independent verifier for trading strategies written by AI agents and humans: catches look-ahead bias, hidden costs and overfitting. MCP server, CLI, GitHub Action, signed certificates.

Install / Use

claude mcp add NeoZorK -- npx -y github:NeoZorK/Monte-Neo

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

84/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of Monte-Neo

Monte-Neo scores 84/100 on our quality scale, 606th of 945 AI & Machine Learning skills we index.

Its MCP Server is 33 KB long, well organised into 25 sections with 20 code examples: a thorough specification that gives an agent plenty to work with.

It has 10 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
30/30
Structure
20/20
Description
15/15
Adoption
4/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 10 days ago, so Monte-Neo is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-11-07. Automated pattern scan on 2026-11-07. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

Monte-Neo compared with similar skills

All 4 of these similar skills score higher than Monte-Neo; compare them before choosing.

SkillScoreStarsUpdatedFormat
Monte-Neo (this skill)by NeoZorK841010d agoMCP Server
claude-memby thedotmack100114.2ktodayCLAUDE.md
Agent-Reachby Panniantong100109.8k1d agoCLAUDE.md
Understand-Anythingby Egonex-AI10091.2ktodayCLAUDE.md
headroomby headroomlabs-ai10079.1ktodayCLAUDE.md

Frequently asked questions

How do I install Monte-Neo?
Run claude mcp add NeoZorK -- npx -y github:NeoZorK/Monte-Neo. The install tabs above show the steps for each supported agent.
Which AI agents does Monte-Neo work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is Monte-Neo safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is Monte-Neo still maintained?
The repository was last updated 10 days ago, so Monte-Neo is actively maintained.
<!-- mcp-name: io.github.NeoZorK/monte-neo --> <p align="center"> <img src="https://raw.githubusercontent.com/NeoZorK/Monte-Neo/main/docs/assets/logo-icon.svg" alt="Monte-Neo logo" width="96" height="96"/> </p> <h1 align="center"> <img src="https://raw.githubusercontent.com/NeoZorK/Monte-Neo/main/docs/assets/social-preview.png" alt="Monte-Neo: the independent verifier for trading strategies written by AI agents and humans" width="860"/> </h1> <p align="center"> <strong>The independent verifier for trading strategies written by AI agents and humans.</strong><br/> Catch look-ahead bias, hidden trading costs and overfitting before a backtest reaches your money. </p> <p align="center"> <a href="https://pypi.org/project/monte-neo/"><img src="https://img.shields.io/pypi/v/monte-neo?label=PyPI&color=0a7bbb" alt="PyPI version"/></a> <a href="https://pepy.tech/projects/monte-neo"><img src="https://static.pepy.tech/badge/monte-neo" alt="Total downloads"/></a> <a href="https://pypistats.org/packages/monte-neo"><img src="https://img.shields.io/pypi/dm/monte-neo?label=downloads%2Fmonth" alt="Downloads per month"/></a> <a href="https://pypi.org/project/monte-neo/"><img src="https://img.shields.io/pypi/pyversions/monte-neo" alt="Python versions"/></a> <a href="https://github.com/NeoZorK/Monte-Neo/actions/workflows/ci.yml"><img src="https://github.com/NeoZorK/Monte-Neo/actions/workflows/ci.yml/badge.svg" alt="CI"/></a> <a href="https://github.com/NeoZorK/Monte-Neo/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT license"/></a> <br/> <a href="https://registry.modelcontextprotocol.io/v0/servers?search=io.github.NeoZorK/monte-neo"><img src="https://img.shields.io/badge/MCP%20Registry-io.github.NeoZorK%2Fmonte--neo-6f42c1" alt="MCP Registry"/></a> <a href="https://neozork.github.io/Monte-Neo/guides/agents/"><img src="https://img.shields.io/badge/tested%20with-Claude%20Code%20%C2%B7%20Qwen%20Code%20(local)-444" alt="Tested with Claude Code and Qwen Code (local)"/></a> <a href="https://github.com/NeoZorK/Monte-Neo/stargazers"><img src="https://img.shields.io/github/stars/NeoZorK/Monte-Neo?style=flat" alt="GitHub stars"/></a> </p> <p align="center"> <a href="https://neozork.github.io/Monte-Neo/">Docs</a> · <a href="#quick-start">Quick start</a> · <a href="https://neozork.github.io/Monte-Neo/guides/agents/">Use from agents</a> · <a href="https://neozork.github.io/Monte-Neo/api/verify/">Verifier API</a> · <a href="https://neozork.github.io/Monte-Neo/guides/trap-suite/">Trap Suite</a> · <a href="https://github.com/NeoZorK/Monte-Neo/blob/main/docs/project/CHANGELOG.md">Changelog</a> </p> <p align="center"> <strong>Did it catch a leak in your backtest?</strong> <a href="https://github.com/NeoZorK/Monte-Neo">Star the repository</a> so other quants and agent builders can find it, or <a href="https://github.com/NeoZorK/Monte-Neo/issues/new/choose">tell us what it missed</a>. </p>

The problem

A coding agent can turn a trading idea into a backtest in minutes. It will then tell you the strategy returns 40% a year with a Sharpe of 3. Most of the time that number is wrong, for the same few reasons:

  • Look-ahead bias. The code reads future bars: shift(-1), centred windows, bfill, statistics over the whole series, np.gradient, an FFT filter.
  • Missing costs. The edge is smaller than fees and slippage, or it disappears when the fill comes one bar later.
  • Selection bias. The agent tried 300 variants and reports the best one as if it were the only one.

Backtest libraries run whatever code you give them. None of them tell you the backtest itself is broken.

The solution

Monte-Neo checks the backtest, not the idea. Give it the price data and the strategy code or its positions. It returns one of four verdicts, the checks behind the verdict, concrete next steps and a reproducible, optionally signed certificate.

<p align="center"> <img src="https://raw.githubusercontent.com/NeoZorK/Monte-Neo/main/docs/assets/demo-verify.gif" alt="monte-neo verify rejects a leaky agent strategy, the agent fixes it, and the honest verdict follows" width="820"/> </p>

The agent's strategy used shift(-1), so it knew the next close. Monte-Neo found the leak in four independent ways and named the line. After the fix, no look-ahead is left, and the verifier tells the truth: on a random walk, the strategy has no edge after costs.

The same run as a report for people (--html report.html: one file, no scripts, no network):

<p align="center"> <a href="https://neozork.github.io/Monte-Neo/gallery/"> <img src="https://raw.githubusercontent.com/NeoZorK/Monte-Neo/main/docs/assets/report-leak.png" alt="HTML report of a rejected strategy: the verdict in one sentence, a card per check family, the summary, the equity curve against buy and hold, the drawdown and the return distribution" width="620"/> </a> </p>

More reports, including an honest strategy and a parameter search, are in the gallery.

<details> <summary>Text output of the first run</summary>
$ monte-neo verify --ohlcv prices.csv --strategy agent_strategy.py --n-trials 40
REJECT  certificate 7f0603b0e604bea5
  check                    category    status  summary
  data_integrity           integrity   pass    OHLCV is clean
  lookahead_truncation     lookahead   fail    truncation probe: LEAK DETECTED
  lookahead_perturbation   lookahead   fail    future-perturbation probe: LEAK DETECTED
  lookahead_static_lint    lookahead   fail    static lint: negative_shift
  implausible_accuracy     lookahead   fail    next-bar hit rate 1.000 over 2999 bars (z 54.8)
  net_profitability        economics   fail    net total return -64.97% after costs
  deflated_sharpe          statistics  fail    deflated Sharpe 0.000 over 40 trial(s)
  ...                                          (16 more checks)
→ The signal at bar t changes when later bars are removed: compute features only from rows <= t
  (no shift(-k), centered windows, bfill or full-sample stats).
→ Fix the flagged source lines (negative shift, center=True, backward fill) and re-run verify. Lines: 6.

The run used a synthetic random walk; output shortened.

</details>

| Verdict | Meaning | CLI exit code | |---------|---------|---------------| | PASS | No problems found | 0 | | PASS_WITH_WARNINGS | Usable; read the warnings | 0 | | NEEDS_MORE_EVIDENCE | Too few trades, or the Sharpe does not survive the number of variants tried | 1 | | REJECT | The backtest is broken or loses money after costs | 2 |

New in v0.53: from a rejected backtest to a committee

Repair the strategy, without overfitting it

<p align="center"> <img src="https://raw.githubusercontent.com/NeoZorK/Monte-Neo/main/docs/assets/demo-repair.gif" alt="monte-neo repair: a leak is repaired and no edge is left; a noisy trend signal is smoothed and still earns on a lockbox opened once; an unseeded strategy is not repairable" width="820"/> </p>
monte-neo repair --demo
monte-neo repair --ohlcv data.csv --strategy my_strategy.py --out repair/

Optimisers maximise the return, so they overfit. repair minimises defects instead. It first corrects look-ahead and repainting. Then it picks from a short list of declared repairs (smoothing, holding period, no-trade band, tranches, neutralisation, caps, volatility target) on the first 70 % of the history, by the number of defects left and never by return, and counts every candidate as a trial. The last 30 % is a lockbox, opened once.

There are four outcomes:

  • REPAIRED: on data the choice never saw, the strategy still earns after costs and is not rejected (the lockbox can still ask for more evidence, such as more trades).
  • REPAIRED_NO_EDGE: the defects are gone and so is the profit, because the profit was in the defect.
  • NOT_REPAIRABLE: what you have to do yourself.
  • NOTHING_TO_REPAIR: there was nothing in the catalogue to fix.

The original file is never touched. On a random walk, none of the 68 leaking strategies of the Trap Suite comes out as REPAIRED. Guide.

Is it alpha? An Alpha Readiness Level for the committee

monte-neo alpha --demo --aum 2e5
monte-neo alpha --ohlcv universe.csv --scores scores.csv --aum 5e7 --book book.csv --n-trials 40

A ranking signal gets the checks a fund's research committee runs before it gives capital:

  • signal power: rank IC, decay, quantiles, placebo scores;
  • attribution: is it alpha, or momentum and short volatility under a new name?
  • value to your book: the marginal Sharpe;
  • implementability: square-root impact at your capital, capacity, short leg, rebalance day;
  • robustness: subsets, start dates, bootstrapped markets;
  • data and process: today's index members, mismatched exchange closes, decay after publication;
  • multiple testing: the t ≥ 3 hurdle, the minimum backtest length;
  • risk: named crises, tails.

Everything ends in one line, for example ARL 6/9 — blocked at 7: tradable and robust (rebalance_timing_luck). Missing evidence is "not assessed", never passed. Guide.

Evidence a model-risk committee can file

monte-neo dossier --certificate cert.json --framework sr11-7 --name "Momentum 20" --owner "Desk A"
monte-neo monitor --certificate cert.json --live live.csv        # after launch: is the alpha dead?

A validation dossier is one folder with:

  • one printable page: summary, checks, readiness level, assumptions and limitations, how to reproduce, sign-off fields;
  • a clause map to SR 11-7, PRA SS1/23, MiFID II RTS 6, a crypto checklist or an academic appendix;
  • the certificate and the environment.

The map shows evidence, never compliance. monitor compares live returns with the backtest, measures realised slippage and raises sequential alarms when the edge dies. Guide.

Machine learning, LLM signals, events and track records

  • fit / predict. Define fit(train) and predict(model, df) instead of signal(df). The verifier refits only on the past, and ml_refit_gap rejects a model whose profit lived in fitting on the whole file.
  • --model-cutoff 2024-06. An edge that exists only before a language model's training cutoff is look-ahead through the model's memory.
  • --events events.csv. News, earnings or LLM outputs are joined by publication time. The report shows what a join by event time would have earned.
  • verify --returns manager.csv. Due diligence from returns alone: smoothing, missing small losses, implausible consistency, significance given the manager's number of funds.
  • verify --legs legs.csv and --null-test pairs.py:pnl. Phantom profit in pairs and stat-arb strategies: a rolling hedge ratio booked as position times the change of the spread earns a profit that no trader could, even on independent random walks. --legs re-derives the P&L from the quantity held in each leg and rejects a reported return the legs never earned (and writes the corrected series); --null-test runs the strategy on random walks, where it must earn nothing. Try monte-neo verify --demo-phantom.
  • Your institution's rules and history. --policy policy.toml applies your thresholds and records them in the certificate. --trials-from mlflow:./mlruns (Optuna, W&B, Ray Tune too) counts the runs you already logged. --ledger on a shared drive counts the whole team's attempts.
  • Where you already work. %%verify in Jupyter, Polars frames as input, and monte-neo dossier --lite for a one-page plain-language summary for people who do not read Sharpe ratios.
  • Two more lint rules for ML code. full_sample_transform (a scaler or PCA fitted on all rows) and `target

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars10
CategoryAI
Updated10d ago
Forks1

Languages

Python

Trust signals

97/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 info