mlquantx 0.2.6__tar.gz → 0.4.0__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 (89) hide show
  1. {mlquantx-0.2.6/src/mlquantx.egg-info → mlquantx-0.4.0}/PKG-INFO +17 -6
  2. {mlquantx-0.2.6 → mlquantx-0.4.0}/PYPI_README.md +11 -2
  3. mlquantx-0.4.0/README.md +700 -0
  4. {mlquantx-0.2.6 → mlquantx-0.4.0}/pyproject.toml +10 -4
  5. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/__init__.py +1 -1
  6. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/backtest/engine.py +7 -4
  7. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/cli/main.py +258 -33
  8. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/configs/small.yaml +4 -1
  9. mlquantx-0.4.0/src/mlquant/data/_optional.py +16 -0
  10. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/akshare_loader.py +2 -1
  11. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/baostock_loader.py +3 -2
  12. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/yfinance_loader.py +3 -2
  13. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/__init__.py +2 -2
  14. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_add.py +1 -1
  15. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_best.py +2 -2
  16. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_better.py +3 -3
  17. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_extra.py +1 -1
  18. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_old.py +1 -1
  19. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_original.py +1 -1
  20. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_stock.py +1 -1
  21. mlquantx-0.4.0/src/mlquant/features/bias.py +162 -0
  22. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/legacy_factors.py +3 -4
  23. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/neutralize.py +0 -1
  24. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/tensor_factors.py +0 -1
  25. mlquantx-0.4.0/src/mlquant/systemone.py +755 -0
  26. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/training/trainer.py +18 -6
  27. {mlquantx-0.2.6 → mlquantx-0.4.0/src/mlquantx.egg-info}/PKG-INFO +17 -6
  28. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquantx.egg-info/SOURCES.txt +7 -2
  29. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquantx.egg-info/requires.txt +3 -0
  30. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_baostock.py +0 -2
  31. mlquantx-0.4.0/tests/test_benchmark_tensor_factors.py +60 -0
  32. mlquantx-0.4.0/tests/test_bias.py +58 -0
  33. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_cli.py +70 -5
  34. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_cost_drag_units.py +10 -0
  35. mlquantx-0.4.0/tests/test_optional_data_deps.py +38 -0
  36. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_public_data_validation.py +25 -0
  37. mlquantx-0.4.0/tests/test_systemone.py +362 -0
  38. mlquantx-0.4.0/tests/test_technical_pipeline_audit.py +34 -0
  39. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_tensor_factors.py +64 -1
  40. mlquantx-0.4.0/tests/test_trainer_split.py +48 -0
  41. mlquantx-0.2.6/README.md +0 -526
  42. mlquantx-0.2.6/src/mlquant/features/bias.py +0 -81
  43. mlquantx-0.2.6/src/mlquant/features.py +0 -613
  44. mlquantx-0.2.6/tests/test_benchmark_tensor_factors.py +0 -15
  45. mlquantx-0.2.6/tests/test_bias.py +0 -25
  46. {mlquantx-0.2.6 → mlquantx-0.4.0}/LICENSE +0 -0
  47. {mlquantx-0.2.6 → mlquantx-0.4.0}/NOTICE.md +0 -0
  48. {mlquantx-0.2.6 → mlquantx-0.4.0}/setup.cfg +0 -0
  49. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/backtest/__init__.py +0 -0
  50. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/backtest/metrics.py +0 -0
  51. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/cli/__init__.py +0 -0
  52. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/configs/__init__.py +0 -0
  53. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/__init__.py +0 -0
  54. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/loaders.py +0 -0
  55. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/panel.py +0 -0
  56. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/data/synthetic.py +0 -0
  57. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_alpha101.py +0 -0
  58. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_change.py +0 -0
  59. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/_factors_market.py +0 -0
  60. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/alpha101.py +0 -0
  61. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/market_breadth.py +0 -0
  62. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/features/target.py +0 -0
  63. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/models/__init__.py +0 -0
  64. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/models/losses.py +0 -0
  65. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/models/nets.py +0 -0
  66. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/portfolio/__init__.py +0 -0
  67. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/portfolio/frontier.py +0 -0
  68. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/portfolio/markowitz.py +0 -0
  69. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/training/__init__.py +0 -0
  70. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/training/augment.py +0 -0
  71. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/training/dataset.py +0 -0
  72. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/utils/__init__.py +0 -0
  73. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/utils/config.py +0 -0
  74. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquant/utils/seed.py +0 -0
  75. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquantx.egg-info/dependency_links.txt +0 -0
  76. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquantx.egg-info/entry_points.txt +0 -0
  77. {mlquantx-0.2.6 → mlquantx-0.4.0}/src/mlquantx.egg-info/top_level.txt +0 -0
  78. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_aggregate_validation_reports.py +0 -0
  79. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_akshare.py +0 -0
  80. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_akshare_csi300_full_pipeline.py +0 -0
  81. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_alpha101.py +0 -0
  82. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_audit_validation_report.py +0 -0
  83. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_augment.py +0 -0
  84. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_export_huggingface_artifacts.py +0 -0
  85. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_losses.py +0 -0
  86. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_markowitz.py +0 -0
  87. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_metrics.py +0 -0
  88. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_neutralize.py +0 -0
  89. {mlquantx-0.2.6 → mlquantx-0.4.0}/tests/test_synthetic.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mlquantx
3
- Version: 0.2.6
3
+ Version: 0.4.0
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
@@ -36,9 +36,10 @@ Requires-Dist: pyyaml>=6.0
36
36
  Requires-Dist: click>=8.1
37
37
  Requires-Dist: rich>=13.0
38
38
  Requires-Dist: tqdm>=4.65
39
- Requires-Dist: yfinance>=0.2.0
40
- Requires-Dist: baostock>=0.8.8
41
- Requires-Dist: akshare>=1.18.0
39
+ Provides-Extra: data
40
+ Requires-Dist: yfinance>=0.2.0; extra == "data"
41
+ Requires-Dist: baostock>=0.8.8; extra == "data"
42
+ Requires-Dist: akshare>=1.18.0; extra == "data"
42
43
  Provides-Extra: mosek
43
44
  Requires-Dist: Mosek>=10.0; extra == "mosek"
44
45
  Provides-Extra: ecos
@@ -46,6 +47,7 @@ Requires-Dist: ecos>=2.0; extra == "ecos"
46
47
  Provides-Extra: gpu
47
48
  Requires-Dist: cupy-cuda12x>=12.0; extra == "gpu"
48
49
  Provides-Extra: dev
50
+ Requires-Dist: mlquantx[data]; extra == "dev"
49
51
  Requires-Dist: pytest>=7.4; extra == "dev"
50
52
  Requires-Dist: pytest-cov>=4.1; extra == "dev"
51
53
  Requires-Dist: ruff>=0.4; extra == "dev"
@@ -56,8 +58,8 @@ Dynamic: license-file
56
58
  # mlquant
57
59
 
58
60
  **A reproducible PyTorch research stack for machine-learning multi-factor
59
- trading: 213 factors, bias correction, portfolio optimization, and vectorized
60
- backtesting.**
61
+ trading: 213 factors, bias correction, portfolio optimization, vectorized
62
+ backtesting, and System-One-style portfolio decisions.**
61
63
 
62
64
  [![CI](https://github.com/initial-d/ml-quant-trading/actions/workflows/ci.yml/badge.svg)](https://github.com/initial-d/ml-quant-trading/actions/workflows/ci.yml)
63
65
  [![arXiv](https://img.shields.io/badge/arXiv-2507.07107-b31b1b.svg)](https://arxiv.org/abs/2507.07107)
@@ -76,6 +78,12 @@ training, portfolio construction, cost-aware backtesting, and Markdown/JSON
76
78
  report generation. The default config ships inside the wheel, so the command
77
79
  works outside a repository checkout.
78
80
 
81
+ The AkShare, Baostock, and yfinance public-data loaders are an optional extra:
82
+
83
+ ```bash
84
+ python -m pip install 'mlquantx[data]'
85
+ ```
86
+
79
87
  ## Customize or contribute
80
88
 
81
89
  The wheel is the fastest way to try the project. Clone the repository when you
@@ -102,12 +110,15 @@ If the demo saves you setup time, consider
102
110
  - vectorized backtesting with turnover and transaction costs
103
111
  - AkShare, Baostock, yfinance, and deterministic synthetic data paths
104
112
  - auditable public-data validation reports, including negative results
113
+ - `mlquant systemone decide` for typed portfolio-intent decisions from
114
+ structured research state
105
115
 
106
116
  ## Start here
107
117
 
108
118
  - [Source and full documentation](https://github.com/initial-d/ml-quant-trading)
109
119
  - [Google Colab quick start](https://colab.research.google.com/github/initial-d/ml-quant-trading/blob/main/notebooks/quickstart_colab.ipynb)
110
120
  - [Public validation dashboard](https://github.com/initial-d/ml-quant-trading/blob/main/docs/validation_dashboard.md)
121
+ - [System-One-compatible portfolio decisions](https://github.com/initial-d/ml-quant-trading/blob/main/docs/systemone_adapter.md)
111
122
  - [Research card and limitations](https://github.com/initial-d/ml-quant-trading/blob/main/docs/research_card.md)
112
123
  - [100,000-row synthetic dataset](https://huggingface.co/datasets/dddyym/ml-quant-trading-synthetic)
113
124
  - [213-input MLP checkpoint](https://huggingface.co/dddyym/ml-quant-trading-synthetic-mlp)
@@ -1,8 +1,8 @@
1
1
  # mlquant
2
2
 
3
3
  **A reproducible PyTorch research stack for machine-learning multi-factor
4
- trading: 213 factors, bias correction, portfolio optimization, and vectorized
5
- backtesting.**
4
+ trading: 213 factors, bias correction, portfolio optimization, vectorized
5
+ backtesting, and System-One-style portfolio decisions.**
6
6
 
7
7
  [![CI](https://github.com/initial-d/ml-quant-trading/actions/workflows/ci.yml/badge.svg)](https://github.com/initial-d/ml-quant-trading/actions/workflows/ci.yml)
8
8
  [![arXiv](https://img.shields.io/badge/arXiv-2507.07107-b31b1b.svg)](https://arxiv.org/abs/2507.07107)
@@ -21,6 +21,12 @@ 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
+ The AkShare, Baostock, and yfinance public-data loaders are an optional extra:
25
+
26
+ ```bash
27
+ python -m pip install 'mlquantx[data]'
28
+ ```
29
+
24
30
  ## Customize or contribute
25
31
 
26
32
  The wheel is the fastest way to try the project. Clone the repository when you
@@ -47,12 +53,15 @@ If the demo saves you setup time, consider
47
53
  - vectorized backtesting with turnover and transaction costs
48
54
  - AkShare, Baostock, yfinance, and deterministic synthetic data paths
49
55
  - auditable public-data validation reports, including negative results
56
+ - `mlquant systemone decide` for typed portfolio-intent decisions from
57
+ structured research state
50
58
 
51
59
  ## Start here
52
60
 
53
61
  - [Source and full documentation](https://github.com/initial-d/ml-quant-trading)
54
62
  - [Google Colab quick start](https://colab.research.google.com/github/initial-d/ml-quant-trading/blob/main/notebooks/quickstart_colab.ipynb)
55
63
  - [Public validation dashboard](https://github.com/initial-d/ml-quant-trading/blob/main/docs/validation_dashboard.md)
64
+ - [System-One-compatible portfolio decisions](https://github.com/initial-d/ml-quant-trading/blob/main/docs/systemone_adapter.md)
56
65
  - [Research card and limitations](https://github.com/initial-d/ml-quant-trading/blob/main/docs/research_card.md)
57
66
  - [100,000-row synthetic dataset](https://huggingface.co/datasets/dddyym/ml-quant-trading-synthetic)
58
67
  - [213-input MLP checkpoint](https://huggingface.co/dddyym/ml-quant-trading-synthetic-mlp)