quant1x 0.7.9.dev2__tar.gz → 0.7.56__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.
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.gitignore +3 -0
- quant1x-0.7.56/AGENTS.md +193 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/CHANGELOG.md +708 -65
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/CMakeLists.txt +101 -103
- quant1x-0.7.56/CONTRIBUTING.md +121 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/Cargo.lock +67 -34
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/Cargo.toml +2 -3
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/PKG-INFO +22 -22
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/README.md +575 -575
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/b2c.py +185 -185
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/labs/akshare.ipynb +9 -9
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/labs/qlib.ipynb +7 -7
- quant1x-0.7.56/labs/quant1x.ipynb +90 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/main.cpp +37 -58
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/main.go +5 -5
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/main.py +215 -215
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/main.rs +25 -29
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/proto/test-snapshot.py +29 -29
- quant1x-0.7.56/publish.sh +158 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/pyproject.toml +3 -2
- quant1x-0.7.56/quant1x/__init__.py +29 -0
- quant1x-0.7.56/quant1x/_version.py +24 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/__init__.py +17 -17
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/dataclass_utils.py +55 -55
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/embed.go.copy +1 -1
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/except.py +77 -77
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/filesystem.py +97 -97
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/numeric.py +287 -287
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/pattern.py +23 -23
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/singleton.py +676 -676
- quant1x-0.7.56/quant1x/base/strings.py +49 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/system.py +16 -16
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/time.py +122 -122
- quant1x-0.7.56/quant1x/config/__init__.py +30 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/config/config.py +292 -214
- {quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1 → quant1x-0.7.56/quant1x/contrib/data/em}/em_dividend.py +54 -54
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/__init__.py +17 -15
- quant1x-0.7.56/quant1x/contrib/data/tdx/_constants.py +32 -0
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/kline.py → quant1x-0.7.56/quant1x/contrib/data/tdx/bar.py +702 -703
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/kline_raw.py → quant1x-0.7.56/quant1x/contrib/data/tdx/bar_raw.py +430 -431
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/client.py +377 -375
- {quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1 → quant1x-0.7.56/quant1x/contrib/data/tdx}/command.py +8 -3
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/config.py +432 -432
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/datasource.py +240 -265
- quant1x-0.7.56/quant1x/contrib/data/tdx/financial_report.py +399 -0
- {quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1 → quant1x-0.7.56/quant1x/contrib/data/tdx}/helpers.py +229 -229
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/instruments.py +211 -211
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/__init__.py +37 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/auction.py +117 -0
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1/ext.py → quant1x-0.7.56/quant1x/contrib/data/tdx/level1/ext/__init__.py +1087 -1085
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1/f10.py → quant1x-0.7.56/quant1x/contrib/data/tdx/level1/ext/hk_f10.py +553 -553
- {quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1 → quant1x-0.7.56/quant1x/contrib/data/tdx/level1/ext}/xdxr_hkex.py +739 -739
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/fund.py +239 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/__init__.py +43 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/block.py +34 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/block_meta.py +47 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/finance_info.py +83 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/heartbeat.py +27 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/hello.py +62 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/minute_time.py +66 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/security_bars.py +129 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/security_count.py +28 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/security_list.py +85 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/security_quote.py +151 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/transaction.py +162 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std/xdxr_info.py +168 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/market.py +177 -177
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/money.py +500 -500
- quant1x-0.7.56/quant1x/contrib/data/tdx/notice.py +449 -0
- quant1x-0.7.56/quant1x/contrib/data/tdx/protocol.py +329 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/sector.py +459 -472
- quant1x-0.7.56/quant1x/contrib/data/tdx/share_holder.py +149 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/trans.py +327 -328
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/contrib/data/tdx/xdxr.py +227 -228
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/core/__init__.py +5 -5
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/core/base.py +135 -135
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/core/decode.py +121 -121
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/core/defaults.py +49 -49
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/__init__.py +24 -24
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/adapter.py +169 -169
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/base.py +41 -40
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/cache.py +115 -115
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/datasource.py +156 -156
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/f10.py +53 -51
- {quant1x-0.7.9.dev2/quant1x/exchange → quant1x-0.7.56/quant1x/data}/margin_trading.py +175 -180
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/market.py +42 -18
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/__init__.py +14 -14
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/asset_class.py +132 -132
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/calendar.py +487 -486
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/exchange.py +196 -196
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/forex.py +232 -232
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/frequency.py +164 -164
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/fund.py +81 -81
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/instrument.py +288 -286
- {quant1x-0.7.9.dev2/quant1x/data → quant1x-0.7.56/quant1x/data/meta}/layout.py +19 -19
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/region.py +53 -53
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/session.py +739 -739
- {quant1x-0.7.9.dev2/quant1x/exchange → quant1x-0.7.56/quant1x/data/meta}/sina/decoder.py +472 -472
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/market_bse.py +32 -32
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/market_hkex.py +224 -224
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/market_sse.py +252 -252
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/market_szse.py +81 -81
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/market_usa.py +49 -49
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/ticker_rules/rule.py +24 -24
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/timestamp.py +2 -2
- quant1x-0.7.56/quant1x/data/schema/README.md +26 -0
- quant1x-0.7.56/quant1x/data/schema/__init__.py +26 -0
- quant1x-0.7.56/quant1x/data/schema/adjustment.md +92 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/adjustment.py +160 -152
- quant1x-0.7.56/quant1x/data/schema/bar.md +28 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/bar.py +180 -180
- quant1x-0.7.56/quant1x/data/schema/company.md +18 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/company.py +17 -17
- quant1x-0.7.56/quant1x/data/schema/dividend.md +124 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/dividend.py +529 -529
- quant1x-0.7.56/quant1x/data/schema/sector.md +20 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/sector.py +16 -16
- quant1x-0.7.56/quant1x/data/schema/trade.md +36 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/schema/trade.py +41 -41
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/status.py +55 -55
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/storage/__init__.py +10 -10
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/storage/csv.py +140 -140
- quant1x-0.7.56/quant1x/data/storage/storage.md +198 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/storage/storage.py +69 -69
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/device.py +28 -28
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/devp.py +29 -29
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/cstruct/README.md +247 -247
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/yaml.py +103 -103
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/__init__.py +24 -24
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/f10.py +324 -303
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/financial_report.py +390 -343
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/notice.py +476 -458
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/safety_score.py +141 -132
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/factors/share_holder.py +147 -144
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/formula/__init__.py +6 -6
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/formula/formula.py +997 -997
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/formula/formula_plus.py +195 -195
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/__init__.py +4 -4
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/cdtd.py +83 -83
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/f89k.py +165 -165
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/hjk.py +75 -75
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/ma1x.py +195 -195
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/p2fb.py +99 -99
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/__init__.py +5 -5
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/connection_pool.py +361 -361
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/endpoint.py +96 -96
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/operation_handler.py +54 -54
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/learn/fpgrowth/fp_growth_example.py +64 -64
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/log/__init__.py +19 -19
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/log/logger.py +74 -74
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/net/__init__.py +6 -6
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/net/conn.py +119 -119
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/net/endpoint.py +90 -90
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/net/handler.py +49 -49
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/net/tcp_client_pool.py +275 -275
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/network.py +62 -62
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/runtime/once.py +5 -5
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/runtime/scheduler.py +26 -26
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/tools/inspect_blocks.py +97 -97
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/types.py +7 -7
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/util/__init__.py +8 -8
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/util/chart.py +6 -6
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/util/font.py +42 -42
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/version.py +81 -81
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/PKG-INFO +22 -22
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/SOURCES.txt +60 -69
- quant1x-0.7.56/quant1x.egg-info/scm_file_list.json +2213 -0
- quant1x-0.7.56/quant1x.egg-info/scm_version.json +8 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/rust-toolchain.toml +1 -1
- quant1x-0.7.9.dev2/labs/quant1x.ipynb +0 -176
- quant1x-0.7.9.dev2/publish.sh +0 -122
- quant1x-0.7.9.dev2/quant1x/__init__.py +0 -25
- quant1x-0.7.9.dev2/quant1x/config/__init__.py +0 -21
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1/__init__.py +0 -31
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1/std.py +0 -697
- quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/protocol.py +0 -544
- quant1x-0.7.9.dev2/quant1x/data/kline.py +0 -326
- quant1x-0.7.9.dev2/quant1x/data/kline_raw.py +0 -354
- quant1x-0.7.9.dev2/quant1x/data/market_old.py +0 -153
- quant1x-0.7.9.dev2/quant1x/data/meta/sina/decoder.py +0 -473
- quant1x-0.7.9.dev2/quant1x/data/schema/__init__.py +0 -26
- quant1x-0.7.9.dev2/quant1x/data/sector.py +0 -77
- quant1x-0.7.9.dev2/quant1x/data/security.py +0 -59
- quant1x-0.7.9.dev2/quant1x/data/trans.py +0 -482
- quant1x-0.7.9.dev2/quant1x/data/xdxr.md +0 -144
- quant1x-0.7.9.dev2/quant1x/data/xdxr.py +0 -111
- quant1x-0.7.9.dev2/quant1x/exchange/__init__.py +0 -60
- quant1x-0.7.9.dev2/quant1x/exchange/calendar.py +0 -518
- quant1x-0.7.9.dev2/quant1x/exchange/code.py +0 -453
- quant1x-0.7.9.dev2/quant1x/exchange/rule.py +0 -485
- quant1x-0.7.9.dev2/quant1x/exchange/session.py +0 -471
- quant1x-0.7.9.dev2/quant1x/exchange/status.py +0 -63
- quant1x-0.7.9.dev2/quant1x/exchange/timestamp.py +0 -219
- quant1x-0.7.9.dev2/quant1x/factors/base.py +0 -443
- quant1x-0.7.9.dev2/quant1x/level1/__init__.py +0 -7
- quant1x-0.7.9.dev2/quant1x/level1/block_info.py +0 -71
- quant1x-0.7.9.dev2/quant1x/level1/block_meta.py +0 -72
- quant1x-0.7.9.dev2/quant1x/level1/client.py +0 -187
- quant1x-0.7.9.dev2/quant1x/level1/config.py +0 -328
- quant1x-0.7.9.dev2/quant1x/level1/finance_info.py +0 -169
- quant1x-0.7.9.dev2/quant1x/level1/heartbeat.py +0 -50
- quant1x-0.7.9.dev2/quant1x/level1/hello1.py +0 -48
- quant1x-0.7.9.dev2/quant1x/level1/hello2.py +0 -48
- quant1x-0.7.9.dev2/quant1x/level1/helpers.py +0 -200
- quant1x-0.7.9.dev2/quant1x/level1/minute_time.py +0 -94
- quant1x-0.7.9.dev2/quant1x/level1/protocol.py +0 -88
- quant1x-0.7.9.dev2/quant1x/level1/security_bars.py +0 -175
- quant1x-0.7.9.dev2/quant1x/level1/security_count.py +0 -51
- quant1x-0.7.9.dev2/quant1x/level1/security_list.py +0 -176
- quant1x-0.7.9.dev2/quant1x/level1/security_quote.py +0 -394
- quant1x-0.7.9.dev2/quant1x/level1/transaction.py +0 -223
- quant1x-0.7.9.dev2/quant1x/level1/xdxr_info.py +0 -230
- quant1x-0.7.9.dev2/quant1x/market/__init__.py +0 -0
- quant1x-0.7.9.dev2/quant1x/market/blocks.py +0 -528
- quant1x-0.7.9.dev2/quant1x/market/instruments.py +0 -116
- quant1x-0.7.9.dev2/quant1x/market/security.py +0 -217
- quant1x-0.7.9.dev2/quant1x/runtime/__init__.py +0 -0
- quant1x-0.7.9.dev2/quant1x/std/strings.py +0 -31
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.clang-format +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.clang-tidy +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.editorconfig +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.gitattributes +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.vscode/c_cpp_properties.json +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/.vscode/settings.json +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/LICENSE +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/MANIFEST.in +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/logo.png +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/proto/chips.proto +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/proto/snapshot.capnp +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/proto/trans.proto +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/proto/xdxr.proto +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/publish.bat +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/publish.ps1 +0 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/bits_amd64.s +0 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/bits_arm64.s +0 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/numeric.md +0 -0
- {quant1x-0.7.9.dev2/quant1x/std → quant1x-0.7.56/quant1x/base}/strings.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/build-info.h.in +0 -0
- {quant1x-0.7.9.dev2/quant1x/cli → quant1x-0.7.56/quant1x/contrib}/__init__.py +0 -0
- {quant1x-0.7.9.dev2/quant1x/contrib → quant1x-0.7.56/quant1x/contrib/data}/__init__.py +0 -0
- {quant1x-0.7.9.dev2/quant1x/contrib/data/tdx/level1 → quant1x-0.7.56/quant1x/contrib/data/tdx/level1/ext}/ext-category.md +0 -0
- {quant1x-0.7.9.dev2/quant1x/level1 → quant1x-0.7.56/quant1x/contrib/data/tdx/level1/std}/security_quote.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/data/meta/fund.md +0 -0
- {quant1x-0.7.9.dev2/quant1x/exchange → quant1x-0.7.56/quant1x/data/meta}/session.md +0 -0
- {quant1x-0.7.9.dev2/quant1x/contrib/data → quant1x-0.7.56/quant1x/data/meta/sina}/__init__.py +0 -0
- {quant1x-0.7.9.dev2/quant1x/data/meta/sina → quant1x-0.7.56/quant1x/data/meta/ticker_rules}/__init__.py +0 -0
- {quant1x-0.7.9.dev2/quant1x/data/meta/ticker_rules → quant1x-0.7.56/quant1x/encoding}/__init__.py +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/cstruct/FORK.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/cstruct/LICENSE +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/struc/LICENSE +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/binary/struc/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/encoding/json.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/formula/README-MyTT.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/formula/formula.ipynb +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/cdtd.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/f89k.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/hjk.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/ma1x.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/p2fb.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/indicators/winner.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/connection_pool.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/csv-reader.LICENSE +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/io/csv-reader.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/learn/fpgrowth/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/learn/fpgrowth/fp_growth.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/log4rs.yaml +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/proto/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/proto/security_info.proto +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/proto/snapshot.capnp.c++ +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/resources/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/resources/meta/tdxhy.inc +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/resources/meta/tdxzs.inc +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/resources/meta/tdxzs3.inc +0 -0
- {quant1x-0.7.9.dev2/quant1x/encoding → quant1x-0.7.56/quant1x/runtime}/__init__.py +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/runtime/ringbuffer.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/runtime/scheduler.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/ta/README.md +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/util/SimHei.ttf +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x/util/util-font.ipynb +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.cer +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/dependency_links.txt +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/not-zip-safe +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/requires.txt +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.egg-info/top_level.txt +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/quant1x.pfx +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/requirements.txt +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/setup.cfg +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/test_loop.sh +0 -0
- {quant1x-0.7.9.dev2 → quant1x-0.7.56}/vcpkg.json +0 -0
quant1x-0.7.56/AGENTS.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# AGENTS.md — Quant1X 多语言 AI 协作规则
|
|
2
|
+
|
|
3
|
+
本文件是 AI(CodeBuddy / GitHub Copilot)在参与 Quant1X 项目时的强制执行规则。
|
|
4
|
+
|
|
5
|
+
详细架构与背景请阅读:[CONTRIBUTING.md](CONTRIBUTING.md)
|
|
6
|
+
|
|
7
|
+
## 一、总体原则(不可违反)
|
|
8
|
+
|
|
9
|
+
- 本项目为**多语言平行实现**,严禁任何跨语言调用(FFI / Cgo / SWIG)
|
|
10
|
+
- Python 负责探索验证,C/C++ 负责生产,Rust / Go 负责生态扩展
|
|
11
|
+
- **语义一致性高于语言习惯**
|
|
12
|
+
- 所有实现必须可通过同一组测试向量验证
|
|
13
|
+
|
|
14
|
+
## 二、目录与文件结构规则
|
|
15
|
+
|
|
16
|
+
- 严格遵循 [CONTRIBUTING.md](CONTRIBUTING.md) 第 2 节定义的目录结构
|
|
17
|
+
- Go 实现必须位于功能子目录中,例如 `data/t1/`
|
|
18
|
+
- Go 包名必须与目录名完全一致(如 `package t1`)
|
|
19
|
+
- **禁止**为了"方便"合并 Go 文件到根目录
|
|
20
|
+
|
|
21
|
+
## 三、命名规则
|
|
22
|
+
|
|
23
|
+
### 3.0 命名参考体系(Type Vocabulary)
|
|
24
|
+
|
|
25
|
+
本项目有一组核心领域类型的**标准名称**,以国际量化金融社区通用术语(Bloomberg / QuantLib / Backtrader / WRDS 等)为参考基准,四种语言必须使用同一名称。**拒绝拼音、音译、本地化翻译。** AI 生成代码时,必须以此表为准,不可即兴发明别名。
|
|
26
|
+
|
|
27
|
+
| 领域概念 | 标准类型名 | 说明 |
|
|
28
|
+
|---------|-----------|------|
|
|
29
|
+
| OHLCV K线数据结构 | **`Bar`** | 不得使用 `KLine`(已废弃的遗留别名,仅 C++ 保留 `using KLine = Bar` 向后兼容) |
|
|
30
|
+
| 未复权原始K线 | **`BarRaw`** | 不得使用 `KLineRaw` |
|
|
31
|
+
| K线周期枚举 | **`KLineType`** | 此处保留 "KLine" — 它是关于"K线类别"的元数据,非数据结构本身 |
|
|
32
|
+
| K线数据适配器类 | **`DataKLine`** | 适配器类名保留 "KLine" — 这是"拉取K线数据"的功能模块名,非数据结构 |
|
|
33
|
+
| 原始K线适配器 | **`DataKLineRaw`** | 同上 |
|
|
34
|
+
| 分钟K线适配器 | **`DataMinuteKLine`** | 同上 |
|
|
35
|
+
| 逐笔成交 | **`Transaction`** | 不得使用 `Tick`(`Tick` 仅作为方向常量前缀如 `TICK_BUY`,无 `Tick` struct) |
|
|
36
|
+
| 复权信息 | **`XdxrInfo`** | 除权除息信息 |
|
|
37
|
+
| 累积复权因子 | **`CumulativeAdjustment`** | 四种语言同名 |
|
|
38
|
+
| 板块分类 | **`Sector`** | 行业/概念板块 |
|
|
39
|
+
| 公司信息 | **`CompanyInfoChunk`** | 上市公司基本信息 |
|
|
40
|
+
| 分红调整 | **`DividendAdjustment`** | 分红除权调整 |
|
|
41
|
+
| 交易方向 | **`Direction`** | 买卖方向标志 |
|
|
42
|
+
| 证券K线(协议层) | **`SecurityBar`** | 网络协议/存储层使用的中间结构,Python 端复用 `Bar` |
|
|
43
|
+
|
|
44
|
+
**核心原则:以国际量化金融标准术语为准,拒绝本地化音译**
|
|
45
|
+
|
|
46
|
+
本项目类型命名以**国际量化金融社区通用术语**为唯一参考标准。量化交易是一个全球化领域,代码应能被任何操盘手、量化研究员直接阅读,不依赖中文语境。
|
|
47
|
+
|
|
48
|
+
**为什么用 `Bar` 而不用 `KLine`?**
|
|
49
|
+
- `Bar` 是国际量化金融中 OHLCV 柱状数据的**标准术语**(Bloomberg Terminal、QuantLib、Backtrader 等均使用 `Bar`)
|
|
50
|
+
- `KLine` 是中文"K线"的音译(源自日语"罫線" Keisen),属于本地化命名,不在国际通用术语范围内
|
|
51
|
+
- 同理,`Transaction` 不用 `Tick`(`Tick` 在国际期货/外汇市场另有精确定义:最小价格变动单位)
|
|
52
|
+
- 项目经历过 `kline-to-bar` 重构(v0.7.51),已将规范类型名从 `KLine` 统一为 `Bar`
|
|
53
|
+
- C++ 中保留 `using KLine = schema::Bar` 仅用于**旧代码向后兼容**,新代码不得引用 `KLine` 作为类型名
|
|
54
|
+
|
|
55
|
+
**新增类型的命名验收标准**:
|
|
56
|
+
1. 该名称是否是 Bloomberg / QuantLib / Backtrader / WRDS 等国际平台的惯用名?
|
|
57
|
+
2. 如果不是 → 拒绝,使用国际标准术语
|
|
58
|
+
3. 如果在国际标准中不存在直接对应 → 以英文描述性命名,禁止拼音/音译
|
|
59
|
+
|
|
60
|
+
**文件命名规则**:文件以**领域概念**命名,非以语言命名。同一概念在 `data/schema/` 下有平行的多语言文件:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
data/schema/
|
|
64
|
+
├── bar.md # 文档(Spec)
|
|
65
|
+
├── bar.h # C++
|
|
66
|
+
├── bar.rs # Rust
|
|
67
|
+
├── bar.go # Go
|
|
68
|
+
├── bar.py # Python
|
|
69
|
+
├── transaction.md
|
|
70
|
+
├── transaction.h
|
|
71
|
+
├── transaction.rs
|
|
72
|
+
├── transaction.go
|
|
73
|
+
├── transaction.py
|
|
74
|
+
└── ...
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 3.1 内存态(代码内部)
|
|
78
|
+
|
|
79
|
+
| 语言 | 函数 / 方法 | 类型 / Struct | 变量 / 字段 |
|
|
80
|
+
|--------|------------------------|------------------------|------------------------|
|
|
81
|
+
| Python | `snake_case` | `PascalCase` | `snake_case` |
|
|
82
|
+
| C/C++ | `snake_case` | `PascalCase` | `snake_case` |
|
|
83
|
+
| Rust | `snake_case` | `PascalCase` | `snake_case` |
|
|
84
|
+
| Go | `PascalCase`(导出) | `PascalCase` | `PascalCase` / `camelCase` |
|
|
85
|
+
|
|
86
|
+
**⚠️ AI 必须做到:**
|
|
87
|
+
|
|
88
|
+
- 从 Python / C++ 生成 Go 代码时,自动将 `snake_case` → `PascalCase`
|
|
89
|
+
- **绝不生成** `snake_case` 的 Go 导出符号
|
|
90
|
+
- **新增类型名必须查 §3.0 参考体系**,不可即兴发明名称
|
|
91
|
+
- 若发现某种语言使用了与 §3.0 不一致的名称,立即指出
|
|
92
|
+
|
|
93
|
+
### 3.2 边界态(I/O 与序列化)【铁律】
|
|
94
|
+
|
|
95
|
+
- 所有落盘字段名必须是**全小写 `snake_case`**
|
|
96
|
+
- Go 结构体必须显式添加 struct tag:
|
|
97
|
+
|
|
98
|
+
```go
|
|
99
|
+
type Bar struct {
|
|
100
|
+
Open float64 `json:"open" csv:"open"`
|
|
101
|
+
High float64 `json:"high" csv:"high"`
|
|
102
|
+
Low float64 `json:"low" csv:"low"`
|
|
103
|
+
Close float64 `json:"close" csv:"close"`
|
|
104
|
+
Volume float64 `json:"volume" csv:"volume"`
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- AI 生成 Go 代码时,必须自动补全 tag
|
|
109
|
+
- **tag 内容永远是小写 snake_case**,不受内存命名影响
|
|
110
|
+
- **tag 内字段名必须与 Python/C++ 的 snake_case 字段名一致**,不可自行翻译
|
|
111
|
+
|
|
112
|
+
## 四、文档驱动的 AI 行为规则
|
|
113
|
+
|
|
114
|
+
### 上下文读取顺序(强制执行)
|
|
115
|
+
|
|
116
|
+
1. 优先读取同级 `*.md`(如 `t1.md`)
|
|
117
|
+
2. 其次读取 Python / C++ 参考实现
|
|
118
|
+
3. 最后才生成目标语言代码
|
|
119
|
+
|
|
120
|
+
### 生成代码必须满足
|
|
121
|
+
|
|
122
|
+
- **数学公式**:严格对照 `*.md` 中的 LaTeX
|
|
123
|
+
- **数据契约**:字段类型、精度、Null/NaN 行为与文档一致
|
|
124
|
+
- **边界条件**:必须实现文档中定义的所有异常分支
|
|
125
|
+
|
|
126
|
+
## 五、语言职责与 AI 行为约束
|
|
127
|
+
|
|
128
|
+
### Python
|
|
129
|
+
|
|
130
|
+
- 作为 Spec 锚点
|
|
131
|
+
- 所有新功能必须先有 Python 实现
|
|
132
|
+
- docstring 视为跨语言契约的一部分
|
|
133
|
+
|
|
134
|
+
### C / C++
|
|
135
|
+
|
|
136
|
+
- 作为生产真相源
|
|
137
|
+
- **严禁 UB**,严禁未定义行为
|
|
138
|
+
- 内存管理必须显式、可审计
|
|
139
|
+
|
|
140
|
+
### Rust
|
|
141
|
+
|
|
142
|
+
- **严禁** `unwrap()` / `expect()` 在业务路径
|
|
143
|
+
- 所有错误必须显式返回 `Result`
|
|
144
|
+
- `unsafe` 必须说明理由
|
|
145
|
+
|
|
146
|
+
### Go
|
|
147
|
+
|
|
148
|
+
- **严禁** `panic` 作为控制流
|
|
149
|
+
- 所有 error 必须显式返回
|
|
150
|
+
- 并发安全必须显式标注
|
|
151
|
+
|
|
152
|
+
## 六、AI 生成代码的硬性限制
|
|
153
|
+
|
|
154
|
+
- ❌ 不允许"看起来差不多"的实现
|
|
155
|
+
- ❌ 不允许省略边界条件处理
|
|
156
|
+
- ❌ 不允许假设字段默认值
|
|
157
|
+
- ❌ 不允许引入语言特有隐式行为
|
|
158
|
+
- ✅ 必须保证四种语言对同一输入的数值结果在 epsilon 范围内一致
|
|
159
|
+
|
|
160
|
+
## 七、开发工作流(AI 视角)
|
|
161
|
+
|
|
162
|
+
当被要求"实现 / 移植 / 补齐某功能"时,AI 必须按以下顺序执行:
|
|
163
|
+
|
|
164
|
+
1. 阅读 `CONTRIBUTING.md` 了解整体架构
|
|
165
|
+
2. 阅读对应 `t1.md`(如有)
|
|
166
|
+
3. 阅读 Python / C++ 实现
|
|
167
|
+
4. 按目标语言规范生成代码
|
|
168
|
+
5. 自检:
|
|
169
|
+
- 命名是否符合本节规则
|
|
170
|
+
- 序列化 tag 是否正确
|
|
171
|
+
- 边界条件是否全覆盖
|
|
172
|
+
|
|
173
|
+
## 八、AI 回复风格要求
|
|
174
|
+
|
|
175
|
+
- 明确指出目标语言所属层级(探索 / 生产 / 生态)
|
|
176
|
+
- 若发现 Python / C++ / Rust / Go 行为不一致,立即指出
|
|
177
|
+
- **不擅自改变架构约定**,即使"看起来更优雅"
|
|
178
|
+
|
|
179
|
+
## 九、版本与发布规则(AI 禁止触碰)
|
|
180
|
+
|
|
181
|
+
- 版本号由 Git Tag(`vMAJOR.MINOR.PATCH`)唯一决定。
|
|
182
|
+
- Rust / Python / Go / C++ 四种语言必须共享同一版本号,不可各自独立。
|
|
183
|
+
- `autochangelog` 是唯一合法的版本发布入口。
|
|
184
|
+
- **AI Agent 严禁以下行为**:
|
|
185
|
+
- ❌ 修改任何文件中的版本号字符串
|
|
186
|
+
- ❌ 创建、修改或删除 Git Tag
|
|
187
|
+
- ❌ 调用 `autochangelog` 或任何发布脚本
|
|
188
|
+
- ❌ 在代码或提交信息中自行推断版本号
|
|
189
|
+
- ❌ 修改 `CHANGELOG.md`、`pyproject.toml`、`Cargo.toml` 中的 `version` 字段
|
|
190
|
+
|
|
191
|
+
## 十、一句话总结(给 AI 的记忆锚点)
|
|
192
|
+
|
|
193
|
+
> Quant1X 是多语言语义同构系统,Python 是 Spec,C++ 是 Truth,Rust / Go 是对齐实现,I/O 边界死守 `snake_case`。
|