核心定位:
pytrade-sms是一套专为证券资产管理设计的元数据标准化协议。它不仅是金融数据建模的基石,更是构建高性能量化交易系统、行情中心以及极速证券搜索服务的核心组件。
在处理全球证券数据时,开发者常面临代码不统一、行业分类混乱、检索性能低下等痛点。pytrade-sms 通过标准化的实体模型,为你解决以下核心问题:
- 全场景覆盖:从股票(Stock)、ETF、指数(Index)到债券(Bond)与期货(Future),一套协议打通全资产类别。
- 极速搜索能力:内置针对金融终端优化的复合拼音索引设计,支持“边打边出”的毫秒级 Suggest 接口。
- 多维标签架构:利用动态倒排索引思想,轻松实现申万行业、成分股、地域板块及业务标签(如 ST、融资融券)的复杂交集过滤。
- 跨平台兼容性:预置
mapping机制,无缝对接 Wind、Bloomberg、Reuters 等主流金融终端数据标识。
系统采用三层数据隔离架构,兼顾检索性能与扩展性:
-
核心索引区 (Core Index):
-
$O(1)$ 精确匹配:通过code全局唯一标识。 -
极速搜索:内置
pinyin复合索引(全拼|首字母),完美支持终端拼音模糊搜索。
-
-
业务标签区 (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
定义,支持严格的类型校验与不可变性(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 开源协议。