pytrade-sms
证券资产管理元数据存储与检索标准协议
核心定位:
pytrade-sms是一套专为证券资产管理设计的元数据标准化协议。它不仅是金融数据建模的基石,更是构建高性能量化交易系统、行情中心以及极速证券搜索服务的核心组件。
为什么选择 pytrade-sms?
在处理全球证券数据时,开发者常面临代码不统一、行业分类混乱、检索性能低下等痛点。pytrade-sms 通过标准化的实体模型,为你解决以下核心问题:
- 全场景覆盖:从股票(Stock)、ETF、指数(Index)到债券(Bond)与期货(Future),一套协议打通全资产类别。
- 极速搜索能力:内置针对金融终端优化的复合拼音索引设计,支持“边打边出”的毫秒级 Suggest 接口。
- 多维标签架构:利用动态倒排索引思想,轻松实现申万行业、成分股、地域板块及业务标签(如 ST、融资融券)的复杂交集过滤。
- 跨平台兼容性:预置
mapping机制,无缝对接 Wind、Bloomberg、Reuters 等主流金融终端数据标识。
核心架构设计
系统采用三层数据隔离架构,兼顾检索性能与扩展性:
- 核心索引区 (Core Index):
- $O(1)$ 精确匹配:通过
code全局唯一标识。 - 极速搜索:内置
pinyin复合索引(全拼|首字母),完美支持终端拼音模糊搜索。
- $O(1)$ 精确匹配:通过
- 业务标签区 (Business Categories):
- 动态倒排索引:针对行业分类(申万、证监会)、上市状态、成份股等字段设计,支持复杂的组合过滤。
- 多维分层:支持 L1/L2/L3 级行业透视及地域、板块过滤。
- 扩展属性区 (Extended Attributes):
- 泛化存储:存放股本结构、公司画像、特定资产(如 ETF 跟踪指数、债券费率)等非搜索类数值型数据。
- 多源映射 (Mapping):内置不同金融数据终端的代码转换逻辑。
安装方法
数据月更。可自行改动 Query 函数 做查询重排。
每日更新:Tien-Guan
Install from Pypi
pip install -U pytrade-sms
使用示例
from pytrade.sms.public_api import PrivateSMS as SMSMetadataEngine
sms_engine = SMSMetadataEngine()
filters: dict[str, Any] = {"market": markets, "asset_type": "stock", }
if exclude_st:
filters["tags__not"] = "ST"
meta_data = sms_engine.query(filters=filters, limit=-1)
data: dict[str, list[Any]] = {
"market": [obj.market for obj in meta_data],
"symbol": [obj.code[:-3] for obj in meta_data],
}
数据实体定义 (Python @dataclass)
系统核心采用 Python 高性能 dataclass
定义,支持严格的类型校验与不可变性(Frozen)。具体的定义见:engine.py#L35
@dataclass(frozen=True)
class SecurityRecord:
"""证券元数据实体模型"""
# [核心索引]
code: str # 600519.SH
name: str # 贵州茅台
pinyin: str # guizhoumaotai|gzmt
asset_type: str # stock, etf, index, bond...
market: str # SH, SZ, HK, NY...
# [业务标签] - 建议存入倒排索引数据库(如 Elasticsearch / Redis Stack)
categories: dict = {
"sw_l1": "食品饮料",
"listing_status": "L",
"tags": "ST|融资融券|沪股通",
"index_constituents": "000300.CSI|000001.SH"
}
# [扩展属性] - 存储于 Document Store 或列式数据库
attributes: dict = {
"share_capital": {"total_shares": 125619.78},
"mapping": ["Bloomberg: CH", "Reuters: .SS"],
"specific": {"is_convertible": False}
}
⚖️ 开源协议
本项目遵循 Apache-2.0 License 开源协议。
Metadata
Release files for pytrade-sms 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pytrade_sms-0.4.1-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| pytrade_sms-0.4.1-cp310-abi3-manylinux_2_34_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| pytrade_sms-0.4.1-cp310-abi3-macosx_11_0_universal2.whl | CPython 3.10 | abi3 | macOS 11.0+ universal2 (ARM64, x86-64) | Details |
Total release size: 1.7 MB
Release files / pytrade_sms-0.4.1-cp310-abi3-win_amd64.whl
| Download URL | pytrade_sms-0.4.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 496.1 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a25eb10c79bffd8e2ba5d3368f6b2e24706ea521fdf789235c8a60a2c25b83ab
|
|
BLAKE2b-256 checksum How to use checksums |
0dc2b6851d0392a8ab38cc3b62ec9990b25e5f57403e9f6e65c9faeafd217150
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pytrade_sms-0.4.1-cp310-abi3-manylinux_2_34_x86_64.whl
| Download URL | pytrade_sms-0.4.1-cp310-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 704.7 kB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ff9241d4c7c343301054e9979ecc14944ea6115c6e1446a51e2f6cc3bb4e4bc9
|
|
BLAKE2b-256 checksum How to use checksums |
2264c6aefae815506e782776a672d7115c5087057aeae6e826fe71d795031abe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / pytrade_sms-0.4.1-cp310-abi3-macosx_11_0_universal2.whl
| Download URL | pytrade_sms-0.4.1-cp310-abi3-macosx_11_0_universal2.whl |
|---|---|
| Size | 519.7 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
02d485735adcfb2534e31552c35a2e1448c424992c59c574bfeb8a0fd44ea93e
|
|
BLAKE2b-256 checksum How to use checksums |
9d7ad39ba1458c09df2b7024047d084f06aea9109e54ddfd983446c85e0f0cd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|