{"owner":"stefan-jansen","repo":"machine-learning-for-trading","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":[".github/copilot-instructions.md"],"files":{".github/copilot-instructions.md":"# Repository conventions for code review\n\nThis is the companion code repository for *Machine Learning for Trading, 3rd Edition*.\nThe conventions below are deliberate and repository-wide. Please do not flag adherence\nto them as defects, and do apply them when reviewing.\n\n## Prose and comment style\n\n- **No em dashes.** The repository standardizes on the ASCII hyphen (`-`) in all prose,\n  markdown, docstrings, figure titles, and printed output. Em dashes (`—`) are being\n  removed repository-wide; a file that uses a hyphen where a sibling still has an em dash\n  is **ahead** of the sweep, not a regression. Do not suggest reintroducing em dashes for\n  \"consistency\" with files that have not been cleaned yet.\n\n## Notebooks\n\n- Every notebook is a **paired `.py` + `.ipynb`** managed by\n  [jupytext](https://jupytext.readthedocs.io/). The `.py` is the source of truth; the\n  `.ipynb` is generated. Edit the `.py` and run `jupytext --sync`; never hand-edit the\n  `.ipynb`.\n- A committed `.ipynb` is a **production re-execution** of its paired `.py`, stamped in\n  `metadata.ml4t_provenance`. Cell outputs are real, not illustrative.\n- Notebook output must carry **no machine-specific paths** (no `/tmp/...`, no home\n  directory, no absolute checkout path). Print repo-root-relative paths instead, e.g.\n  `output_path.relative_to(get_case_study_dir(\"etfs\").parents[1])`.\n\n## Data schema\n\n- The canonical schema is **`symbol`** (entity identifier) + **`timestamp`** (all\n  frequencies, daily and intraday). The `cme_futures` dataset uses **`product`** instead\n  of `symbol`. These are intentional; do not suggest renaming to `asset`, `date`,\n  `ticker`, or `pair`.\n\n## Results and DataFrames\n\n- The **sole source of truth for model/backtest/strategy results is `run_log/registry.db`**\n  in each case study. `results/*.json` files are a deprecated legacy format and must not\n  be treated as ground truth.\n- **Polars-first.** DataFrame operations use [Polars](https://pola.rs/); pandas appears\n  only at visualization boundaries. Do not suggest converting Polars code to pandas.\n\n## Library corrections\n\n- The six `ml4t-*` libraries are the production implementations. When a PR updates numbers\n  because a library estimator was corrected (for example a beta/correlation fix), that is a\n  **deliberate correctness change**, not an unexplained result drift.\n"}}