mlquantx 0.2.5__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. {mlquantx-0.2.5/src/mlquantx.egg-info → mlquantx-0.2.6}/PKG-INFO +19 -1
  2. {mlquantx-0.2.5 → mlquantx-0.2.6}/PYPI_README.md +16 -0
  3. {mlquantx-0.2.5 → mlquantx-0.2.6}/README.md +13 -4
  4. {mlquantx-0.2.5 → mlquantx-0.2.6}/pyproject.toml +3 -1
  5. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/__init__.py +1 -1
  6. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/cli/main.py +17 -0
  7. {mlquantx-0.2.5 → mlquantx-0.2.6/src/mlquantx.egg-info}/PKG-INFO +19 -1
  8. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_cli.py +7 -0
  9. {mlquantx-0.2.5 → mlquantx-0.2.6}/LICENSE +0 -0
  10. {mlquantx-0.2.5 → mlquantx-0.2.6}/NOTICE.md +0 -0
  11. {mlquantx-0.2.5 → mlquantx-0.2.6}/setup.cfg +0 -0
  12. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/backtest/__init__.py +0 -0
  13. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/backtest/engine.py +0 -0
  14. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/backtest/metrics.py +0 -0
  15. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/cli/__init__.py +0 -0
  16. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/configs/__init__.py +0 -0
  17. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/configs/small.yaml +0 -0
  18. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/__init__.py +0 -0
  19. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/akshare_loader.py +0 -0
  20. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/baostock_loader.py +0 -0
  21. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/loaders.py +0 -0
  22. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/panel.py +0 -0
  23. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/synthetic.py +0 -0
  24. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/data/yfinance_loader.py +0 -0
  25. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/__init__.py +0 -0
  26. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_add.py +0 -0
  27. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_alpha101.py +0 -0
  28. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_best.py +0 -0
  29. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_better.py +0 -0
  30. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_change.py +0 -0
  31. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_extra.py +0 -0
  32. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_market.py +0 -0
  33. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_old.py +0 -0
  34. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_original.py +0 -0
  35. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/_factors_stock.py +0 -0
  36. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/alpha101.py +0 -0
  37. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/bias.py +0 -0
  38. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/legacy_factors.py +0 -0
  39. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/market_breadth.py +0 -0
  40. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/neutralize.py +0 -0
  41. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/target.py +0 -0
  42. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features/tensor_factors.py +0 -0
  43. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/features.py +0 -0
  44. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/models/__init__.py +0 -0
  45. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/models/losses.py +0 -0
  46. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/models/nets.py +0 -0
  47. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/portfolio/__init__.py +0 -0
  48. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/portfolio/frontier.py +0 -0
  49. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/portfolio/markowitz.py +0 -0
  50. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/training/__init__.py +0 -0
  51. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/training/augment.py +0 -0
  52. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/training/dataset.py +0 -0
  53. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/training/trainer.py +0 -0
  54. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/utils/__init__.py +0 -0
  55. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/utils/config.py +0 -0
  56. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquant/utils/seed.py +0 -0
  57. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquantx.egg-info/SOURCES.txt +0 -0
  58. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquantx.egg-info/dependency_links.txt +0 -0
  59. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquantx.egg-info/entry_points.txt +0 -0
  60. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquantx.egg-info/requires.txt +0 -0
  61. {mlquantx-0.2.5 → mlquantx-0.2.6}/src/mlquantx.egg-info/top_level.txt +0 -0
  62. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_aggregate_validation_reports.py +0 -0
  63. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_akshare.py +0 -0
  64. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_akshare_csi300_full_pipeline.py +0 -0
  65. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_alpha101.py +0 -0
  66. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_audit_validation_report.py +0 -0
  67. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_augment.py +0 -0
  68. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_baostock.py +0 -0
  69. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_benchmark_tensor_factors.py +0 -0
  70. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_bias.py +0 -0
  71. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_cost_drag_units.py +0 -0
  72. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_export_huggingface_artifacts.py +0 -0
  73. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_losses.py +0 -0
  74. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_markowitz.py +0 -0
  75. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_metrics.py +0 -0
  76. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_neutralize.py +0 -0
  77. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_public_data_validation.py +0 -0
  78. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_synthetic.py +0 -0
  79. {mlquantx-0.2.5 → mlquantx-0.2.6}/tests/test_tensor_factors.py +0 -0
@@ -1,13 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlquantx
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: Reference implementation of ‘ML-Enhanced Multi-Factor Quantitative Trading’ (arXiv:2507.07107).
5
5
  Author: Yimin Du
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/initial-d/ml-quant-trading
8
+ Project-URL: Source, https://github.com/initial-d/ml-quant-trading
8
9
  Project-URL: Documentation, https://initial-d.github.io/ml-quant-trading/
9
10
  Project-URL: Paper, https://arxiv.org/abs/2507.07107
10
11
  Project-URL: Issues, https://github.com/initial-d/ml-quant-trading/issues
12
+ Project-URL: Discussions, https://github.com/initial-d/ml-quant-trading/discussions
11
13
  Project-URL: Changelog, https://github.com/initial-d/ml-quant-trading/blob/main/CHANGELOG.md
12
14
  Keywords: quant,alpha,factor,portfolio,pytorch,markowitz
13
15
  Classifier: Development Status :: 4 - Beta
@@ -74,6 +76,22 @@ training, portfolio construction, cost-aware backtesting, and Markdown/JSON
74
76
  report generation. The default config ships inside the wheel, so the command
75
77
  works outside a repository checkout.
76
78
 
79
+ ## Customize or contribute
80
+
81
+ The wheel is the fastest way to try the project. Clone the repository when you
82
+ want to change factors, models, portfolio constraints, data sources, or
83
+ backtest assumptions:
84
+
85
+ ```bash
86
+ git clone https://github.com/initial-d/ml-quant-trading.git
87
+ cd ml-quant-trading
88
+ python -m pip install -e '.[dev]'
89
+ ```
90
+
91
+ If the demo saves you setup time, consider
92
+ [starring the repository](https://github.com/initial-d/ml-quant-trading) or
93
+ [sharing a reproducible run](https://github.com/initial-d/ml-quant-trading/issues/new?template=reproduction_report.yml).
94
+
77
95
  ## What is included
78
96
 
79
97
  - 204 hand-crafted factors plus 9 curated Alpha101-style factors
@@ -21,6 +21,22 @@ training, portfolio construction, cost-aware backtesting, and Markdown/JSON
21
21
  report generation. The default config ships inside the wheel, so the command
22
22
  works outside a repository checkout.
23
23
 
24
+ ## Customize or contribute
25
+
26
+ The wheel is the fastest way to try the project. Clone the repository when you
27
+ want to change factors, models, portfolio constraints, data sources, or
28
+ backtest assumptions:
29
+
30
+ ```bash
31
+ git clone https://github.com/initial-d/ml-quant-trading.git
32
+ cd ml-quant-trading
33
+ python -m pip install -e '.[dev]'
34
+ ```
35
+
36
+ If the demo saves you setup time, consider
37
+ [starring the repository](https://github.com/initial-d/ml-quant-trading) or
38
+ [sharing a reproducible run](https://github.com/initial-d/ml-quant-trading/issues/new?template=reproduction_report.yml).
39
+
24
40
  ## What is included
25
41
 
26
42
  - 204 hand-crafted factors plus 9 curated Alpha101-style factors
@@ -22,10 +22,10 @@ Languages: [English](README.md) | [简体中文](README.zh-CN.md) | [繁體中
22
22
  · [**See cost-aware results**](docs/validation_dashboard.md)
23
23
  · [**Read the paper**](https://arxiv.org/abs/2507.07107)
24
24
 
25
- > **New in v0.2.5 — install from PyPI and run from any directory.**
25
+ > **New in v0.2.6 — PyPI-to-GitHub contributor path.**
26
26
  > The distribution is published as `mlquantx`; the Python import package and
27
- > command remain `mlquant`. `mlquant demo` ships with its deterministic
28
- > configuration, preserving the zero-account factor-to-backtest path.
27
+ > command remain `mlquant`. The demo now links successful runs back to the
28
+ > source, reproduction form, and next contribution steps.
29
29
 
30
30
  ---
31
31
 
@@ -55,6 +55,15 @@ mlquant demo
55
55
  No market-data account is required. The deterministic demo prints each pipeline
56
56
  stage and writes a shareable Markdown/JSON report.
57
57
 
58
+ Ready to modify factors, models, data sources, or backtest assumptions? Switch
59
+ from the packaged demo to a source checkout:
60
+
61
+ ```bash
62
+ git clone https://github.com/initial-d/ml-quant-trading.git
63
+ cd ml-quant-trading
64
+ python -m pip install -e '.[dev]'
65
+ ```
66
+
58
67
  ## Fast Path
59
68
 
60
69
  | If you want to... | Start here | What you get |
@@ -114,7 +123,7 @@ Successful and failed runs are both useful and credited.
114
123
  **Other current calls for contributors**
115
124
 
116
125
  - Join the [August 2026 reproduction challenge](https://github.com/initial-d/ml-quant-trading/discussions/43): run Colab once, then use the [structured report form](https://github.com/initial-d/ml-quant-trading/issues/new?template=reproduction_report.yml), whether it succeeds or fails.
117
- - Try the [`v0.2.5` release](https://github.com/initial-d/ml-quant-trading/releases/tag/v0.2.5).
126
+ - Try the [`v0.2.6` release](https://github.com/initial-d/ml-quant-trading/releases/tag/v0.2.6).
118
127
  - Read the [Research Card](docs/research_card.md) for intended use, current evidence, and non-goals.
119
128
  - Read the [public-data mini reproduction](docs/public_data_mini_reproduction.md).
120
129
  - Share benchmark or public-data results in [Discussions #13](https://github.com/initial-d/ml-quant-trading/discussions/13).
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mlquantx"
7
- version = "0.2.5"
7
+ version = "0.2.6"
8
8
  description = "Reference implementation of ‘ML-Enhanced Multi-Factor Quantitative Trading’ (arXiv:2507.07107)."
9
9
  readme = "PYPI_README.md"
10
10
  requires-python = ">=3.9"
@@ -57,9 +57,11 @@ mlquant = "mlquant.cli.main:main"
57
57
 
58
58
  [project.urls]
59
59
  Homepage = "https://github.com/initial-d/ml-quant-trading"
60
+ Source = "https://github.com/initial-d/ml-quant-trading"
60
61
  Documentation = "https://initial-d.github.io/ml-quant-trading/"
61
62
  Paper = "https://arxiv.org/abs/2507.07107"
62
63
  Issues = "https://github.com/initial-d/ml-quant-trading/issues"
64
+ Discussions = "https://github.com/initial-d/ml-quant-trading/discussions"
63
65
  Changelog = "https://github.com/initial-d/ml-quant-trading/blob/main/CHANGELOG.md"
64
66
 
65
67
  [tool.setuptools.packages.find]
@@ -14,5 +14,5 @@ import torch or cvxpy. Sub-packages are loaded lazily on demand.
14
14
  """
15
15
  from __future__ import annotations
16
16
 
17
- __version__ = "0.2.5"
17
+ __version__ = "0.2.6"
18
18
  __all__ = ["__version__"]
@@ -30,6 +30,12 @@ from ..utils.config import load_config
30
30
  from ..utils.seed import seed_everything
31
31
 
32
32
 
33
+ PROJECT_URL = "https://github.com/initial-d/ml-quant-trading"
34
+ REPRODUCTION_REPORT_URL = (
35
+ f"{PROJECT_URL}/issues/new?template=reproduction_report.yml"
36
+ )
37
+
38
+
33
39
  def _artifacts_dir(cfg) -> Path:
34
40
  p = Path(cfg.get("artifacts_dir", "artifacts"))
35
41
  p.mkdir(parents=True, exist_ok=True)
@@ -50,6 +56,8 @@ def _write_backtest_summary(
50
56
  }
51
57
  payload = {
52
58
  "project": "ml-quant-trading",
59
+ "repository": PROJECT_URL,
60
+ "reproduction_report": REPRODUCTION_REPORT_URL,
53
61
  "workflow": "synthetic factor-to-backtest demo",
54
62
  "config": config_path,
55
63
  "costs_bps": float(costs_bps),
@@ -78,6 +86,11 @@ def _write_backtest_summary(
78
86
  f"- Config: `{config_path}`",
79
87
  f"- Transaction cost assumption: `{costs_bps:g} bps`",
80
88
  "- Workflow: synthetic data → 213 factors → MLP → Markowitz → backtest",
89
+ f"- Source: [{PROJECT_URL}]({PROJECT_URL})",
90
+ (
91
+ "- Share a reproducible run: "
92
+ f"[open the report form]({REPRODUCTION_REPORT_URL})"
93
+ ),
81
94
  "",
82
95
  "| Metric | Value |",
83
96
  "|---|---:|",
@@ -137,6 +150,10 @@ def _run_demo(ctx: click.Context, config_path: str) -> None:
137
150
  ctx.invoke(command, config_path=config_path)
138
151
  click.echo()
139
152
  click.echo("Demo complete. Inspect the backtest summary above and artifacts/ for outputs.")
153
+ click.echo("\nNext steps")
154
+ click.echo(f" Customize or inspect the source: {PROJECT_URL}")
155
+ click.echo(f" Share a reproducible run: {REPRODUCTION_REPORT_URL}")
156
+ click.echo(" If this saved you setup time, consider starring the repository.")
140
157
 
141
158
 
142
159
  @cli.command("gen-data")
@@ -1,13 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlquantx
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: Reference implementation of ‘ML-Enhanced Multi-Factor Quantitative Trading’ (arXiv:2507.07107).
5
5
  Author: Yimin Du
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/initial-d/ml-quant-trading
8
+ Project-URL: Source, https://github.com/initial-d/ml-quant-trading
8
9
  Project-URL: Documentation, https://initial-d.github.io/ml-quant-trading/
9
10
  Project-URL: Paper, https://arxiv.org/abs/2507.07107
10
11
  Project-URL: Issues, https://github.com/initial-d/ml-quant-trading/issues
12
+ Project-URL: Discussions, https://github.com/initial-d/ml-quant-trading/discussions
11
13
  Project-URL: Changelog, https://github.com/initial-d/ml-quant-trading/blob/main/CHANGELOG.md
12
14
  Keywords: quant,alpha,factor,portfolio,pytorch,markowitz
13
15
  Classifier: Development Status :: 4 - Beta
@@ -74,6 +76,22 @@ training, portfolio construction, cost-aware backtesting, and Markdown/JSON
74
76
  report generation. The default config ships inside the wheel, so the command
75
77
  works outside a repository checkout.
76
78
 
79
+ ## Customize or contribute
80
+
81
+ The wheel is the fastest way to try the project. Clone the repository when you
82
+ want to change factors, models, portfolio constraints, data sources, or
83
+ backtest assumptions:
84
+
85
+ ```bash
86
+ git clone https://github.com/initial-d/ml-quant-trading.git
87
+ cd ml-quant-trading
88
+ python -m pip install -e '.[dev]'
89
+ ```
90
+
91
+ If the demo saves you setup time, consider
92
+ [starring the repository](https://github.com/initial-d/ml-quant-trading) or
93
+ [sharing a reproducible run](https://github.com/initial-d/ml-quant-trading/issues/new?template=reproduction_report.yml).
94
+
77
95
  ## What is included
78
96
 
79
97
  - 204 hand-crafted factors plus 9 curated Alpha101-style factors
@@ -39,6 +39,9 @@ def test_demo_runs_pipeline_stages_in_order(monkeypatch, tmp_path):
39
39
  ]
40
40
  assert all(path == str(config) for _, path in calls)
41
41
  assert "Demo complete" in result.output
42
+ assert "https://github.com/initial-d/ml-quant-trading" in result.output
43
+ assert "reproduction_report.yml" in result.output
44
+ assert "consider starring" in result.output
42
45
 
43
46
 
44
47
  def test_demo_is_visible_in_cli_help():
@@ -88,8 +91,12 @@ def test_backtest_summary_is_shareable_and_strict_json(tmp_path):
88
91
  assert payload["metrics"]["sharpe"] == 1.25
89
92
  assert payload["metrics"]["sortino"] is None
90
93
  assert payload["costs_bps"] == 5.0
94
+ assert payload["repository"] == "https://github.com/initial-d/ml-quant-trading"
95
+ assert payload["reproduction_report"].endswith("reproduction_report.yml")
91
96
 
92
97
  markdown = markdown_path.read_text()
93
98
  assert "| `sharpe` | 1.250000 |" in markdown
94
99
  assert "| `sortino` | n/a |" in markdown
95
100
  assert "not investment advice" in markdown
101
+ assert "https://github.com/initial-d/ml-quant-trading" in markdown
102
+ assert "open the report form" in markdown
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes