Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
120 lines (108 loc) · 4.44 KB
/
Copy pathpyproject.toml
File metadata and controls
120 lines (108 loc) · 4.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "qlib-platform"
version = "0.3.0"
description = "Auditable A-share quant research and alpha factory built on Microsoft Qlib"
readme = "README.md"
license = { file = "LICENSE" }
requires-python = ">=3.10,<3.13"
keywords = ["qlib", "quantitative-finance", "a-share", "alpha-research", "machine-learning", "backtesting", "walk-forward"]
classifiers = [
"Development Status :: 3 - Alpha",
"License :: OSI Approved :: Apache Software License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Operating System :: OS Independent",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
"pandas>=2.0,<3.0", "numpy>=1.24,<2.0", "pyarrow>=14,<20", "duckdb>=1.0,<2.0",
"PyYAML>=6,<7", "python-dotenv>=1.0,<2.0", "loguru>=0.7,<1.0", "matplotlib>=3.8,<4.0",
"reportlab>=4.0,<5.0", "pypdf>=5.0,<7.0", "fastjsonschema>=2.20,<3", "argon2-cffi>=23.1,<26",
"pyqlib==0.9.7",
]
[project.urls]
Homepage = "https://github.com/magic-alt/qlib-platform"
Repository = "https://github.com/magic-alt/qlib-platform"
Documentation = "https://github.com/magic-alt/qlib-platform/blob/main/docs/index.md"
Issues = "https://github.com/magic-alt/qlib-platform/issues"
Changelog = "https://github.com/magic-alt/qlib-platform/blob/main/CHANGELOG.md"
[project.optional-dependencies]
data = ["tushare>=1.4.0,<2.0", "tenacity>=8.2,<10", "pymysql>=1.1,<2.0"]
qlib = ["lightgbm==4.6.0"]
qlib-full = [
"lightgbm==4.6.0", "xgboost>=2.0,<4.0", "torch>=2.13,<3.0", "catboost>=1.2,<2.0",
"scikit-learn>=1.4,<2.0", "scipy>=1.11,<=1.15.3", "hyperopt>=0.2.7,<1.0",
"plotly>=5.20,<7.0", "statsmodels>=0.14,<1.0",
]
qlib-analysis = ["plotly>=5.20,<7.0", "statsmodels>=0.14,<1.0"]
qlib-tuner = ["hyperopt>=0.2.7,<1.0"]
hpo = ["optuna>=4.9,<5.0"]
pytorch = ["torch>=2.13,<3.0"]
xgboost = ["xgboost>=2.0,<4.0"]
postgres = ["psycopg[binary]>=3.1,<4"]
parallel-ray = ["ray>=2.10,<3"]
parallel-dask = ["dask[distributed]>=2024.1,<2027"]
all = [
"tushare>=1.4.0,<2.0", "tenacity>=8.2,<10", "pymysql>=1.1,<2.0",
"lightgbm==4.6.0", "xgboost>=2.0,<4.0", "optuna>=4.9,<5.0",
]
dev = [
"lightgbm==4.6.0", "xgboost>=2.0,<4.0", "optuna>=4.9,<5.0", "pytest>=8,<9",
"pytest-cov>=5,<8", "ruff>=0.8,<1", "mypy>=1.11,<2", "types-PyYAML>=6.0",
]
docs = ["mkdocs-material==9.7.7"]
[project.scripts]
qlib-platform = "qlib_platform.cli.entrypoint:main"
tq = "qlib_platform.cli.entrypoint:main"
tq-qlib = "qlib_platform.qlib_compat.cli:main"
tq-research = "qlib_platform.research.workflow.governed_entrypoint:main"
tq-official-parity = "qlib_platform.research.workflow.official_parity_entrypoint:main"
tq-research-summary = "qlib_platform.research.reporting.summary:main"
tq-research-console = "qlib_platform.research.reporting.research_console:main"
tq-render-scheduler = "qlib_platform.runtime.scheduler:main"
tq-daily-run = "qlib_platform.runtime.production_daily_run_entrypoint:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"qlib_platform.qlib_compat" = ["manifests/*.yaml"]
[tool.setuptools.data-files]
"contracts" = ["contracts/*.json", "contracts/README.md"]
"configs" = ["configs/*.yaml"]
"configs/alpha_taxonomy" = ["configs/alpha_taxonomy/*.yaml"]
"configs/attribution" = ["configs/attribution/*.yaml"]
"configs/explanation" = ["configs/explanation/*.yaml"]
"configs/hpo" = ["configs/hpo/*.yaml"]
"configs/model_profiles" = ["configs/model_profiles/*.yaml"]
"configs/portfolio" = ["configs/portfolio/*.yaml"]
"configs/regimes" = ["configs/regimes/*.yaml"]
"configs/research" = ["configs/research/*.yaml"]
"configs/synthesis" = ["configs/synthesis/*.yaml"]
"deploy/systemd" = ["deploy/systemd/*"]
"deploy/launchd" = ["deploy/launchd/*"]
[tool.pytest.ini_options]
addopts = "-q"
testpaths = ["tests"]
pythonpath = ["src"]
[tool.coverage.run]
# pytest-cov 7 delegates Python subprocess measurement to coverage.py.
# CLI and clean-machine tests are part of the real repository test surface,
# so include their executed source lines in the repository-wide gate.
patch = ["subprocess"]
[tool.ruff]
line-length = 110
target-version = "py310"
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]
ignore = ["E501"]
[tool.mypy]
python_version = "3.10"
warn_unused_configs = true
warn_return_any = true
check_untyped_defs = true
no_implicit_optional = true
ignore_missing_imports = true