Skip to content

Local research policy (HeuristicPolicy A)

Offline, deterministic triage after a research export. Not a cloud model.

Why

After export_sma_sweep / export_batch you want a clear next action: reject, stop, refine grid, run MC stress, or promote to paper OMS — without shipping raw bars or calling a hosted policy service.

API

from monte_neo.policy import triage_export, HeuristicPolicy, PolicyConfig, build_research_state

out = triage_export(export_dict)   # {"state": ..., "decision": ...}
decision = out["decision"]
# next_action, promote_to_paper_oms, worth_mc_stress, overfit_risk, reasons, confidence

build_research_state compresses an export into schema mn.research_state.v1 (metrics summary + top rows + checklist — no OHLCV).

CLI

monte-neo --policy-triage path/to/export.json

Prints the decision JSON and reason lines.

Thresholds

Tunable via PolicyConfig (t_min_return, t_promote_return, p_min_frac_positive, e_hi_edge, cluster tolerances). Defaults are conservative research heuristics.

Roadmap

  • Holdout helper and LocalScorer B are deferred until A proves useful in real sweeps.

Holdout enrichment

Pass a holdout_sma_sweep report into build_research_state(..., holdout_report=...). High holdout gap blocks promote (see Holdout).

Label log

append_research_label(path, holdout_report=..., decision=..., human_label=...) appends JSONL (mn.research_label.v1) for a future LocalScorer — not a model itself.