# 本地量化接口库 **Repository Path**: hkcodex/hkcodex ## Basic Information - **Project Name**: 本地量化接口库 - **Description**: 基于Tushare数据源开发的本地Python量化接口库,接口规则尽量与聚宽等保持一致,方便在本地环境中进行策略开发、研究、回测与测试等,不受在线平台限制。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 6 - **Created**: 2025-11-29 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HKCodex 本地量化接口库 HKCodex 本地量化接口库基于 Tushare 数据源,按照聚宽等常用平台的接口规则,在本地实现一套相似的量化接口,方便量化爱好者在本地Python环境中进行策略开发、研究、回测与测试,不受在线平台的限制。 > 免责声明:本项目仅供学习与研究使用,不构成任何投资建议。投资有风险,入市需谨慎。因不当或违规使用本项目而产生的任何风险或损失,均由使用者自行承担。 ## 接口目录 1. 行情 - 单只/多只/全市场历史行情:`get_price_local` / `get_price_single` - 某日股票列表:`get_all_securities` - 某日全市场行情:`daily` - 基本面指标:`daily_basic` - 股票中文名称:`get_stock_chinese_name` - 涨跌停价:`stk_limit` - 实时行情:`get_realtime_prices` - ETF 行情:`fund_daily` 2. 交易日历 - 交易日列表:`get_trade_days` 3. 指数 - 指数行情:`index_daily` - 指数成分股:`get_index_stocks` - 指数成分股权重:`get_index_weights` 4. 行业 - 行业成分股:`get_industry_stocks` - 行业分类表:`get_industries` - 股票行业归属:`get_industry` - 行业宽度:`get_industry_width` 5. 策略过滤 - 板块过滤(新三板/科创板/北交所等):`filter_stocks` - ST/*ST 过滤:`filter_st_stock` - 停牌过滤:`filter_suspend_stock` - 退市过滤:`filter_delist_stock` - 涨跌停过滤:`filter_limitup_limitdown_stock` - 价格区间过滤:`filter_price_stock` - 上市时间过滤:`filter_new_stock` - 当日 ST/*ST 列表:`get_st` 6. 财务 - 利润表:`get_income` - 资产负债表:`get_balancesheet` - 现金流量表:`get_cashflow` - 财务指标:`get_fina_indicator` 7. 回测 - 回测结果分析:`analyzer` ## 社区与交流 微信公众号推文里的相关代码都会提供在知识星球里,包括本地策略代码、接口、回测、测试等,欢迎加入交流。

## 数据源 - 该本地接口库在Tushare的数据接口基础上进行数据处理,以实现各接口该有的功能。从Tushare上获取的新数据将保存在本地 `data` 文件夹中,以提高本地接口库的运行效率。 - 运行本地接口库会自动创建 `data` 文件夹并保存Tushare数据。

- 为了接口库的运行稳定,请使用Tushare官方的`token`获取数据:在该项目文件夹中创建一个`token.txt`文件,并将token粘贴进`token.txt`文件中。 - 有时运行时因要更新本地数据,运行速度可能会较慢;一旦本地数据更新完成,再次运行时速度会比较快。 ## 安装(使用 pip或者conda) ### 使用 pip 1. 安装 Python 3.9(目前仅支持 3.9)。 2. 安装依赖: ```bash pip install -r requirements/requirements.txt ``` 如果是在内地,可以从清华镜像源中安装: ```bash pip install -r requirements/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 使用 conda 直接运行: ```bash conda env create -f requirements/environment.yml ``` 如果是在内地,可以从清华镜像源中安装: ```bash conda env create -f requirements/environment_m.yml ``` 命令会自动创建名为 hkcodex 的 conda 环境,Python 版本为 3.9,并安装全部依赖。 ## 快速开始 ```python from hkcodex import * # 获取单只股票历史行情 df = get_price_local(stock="000001.SZ", since="20240101", until="20240930", adjust="front") # 获取最近一年的交易日历 trade_days = get_trade_days(until="20240930", count=250) # 过滤掉新三板/科创板/北交所等 candidates = filter_stocks(["000001.SZ", "300750.SZ", "688981.SH"]) # 获取实时报价 live_quotes = get_realtime_prices(stock_list=["000001.SZ", "000002.SZ"]) # 获取 ETF 行情 etf_daily = fund_daily("159915.SZ", start_date="20220101", end_date="20240401", adjust="front") ``` ## 接口详情与示例 ### 1. 行情获取 #### 1.1 获取单只/多只/全市场历史行情 ```python # 单只股票 get_price_local(stock="000001.SZ", since="20240101", until="20240930", adjust="front") # 多只股票 get_price_local(stock=["000001.SZ", "000002.SZ"], since="20240101", until="20240930", adjust="front") # 全市场 get_price_local(since="20240101", until="20241001", adjust="front") ``` #### 1.2 获取单只股票历史行情 ```python get_price_single(stock="000001.SZ", since="20240101", until="20240930", adjust="front") ``` #### 1.3 获取某日全市场股票列表 ```python get_all_securities(day="20250620") ``` #### 1.4 获取某日全市场行情 ```python daily(day="20240401") ``` #### 1.5 获取某日股票基本面信息 ```python daily_basic(day="20250910") ``` #### 1.6 获取股票中文名称 ```python # 单只股票 get_stock_chinese_name(stock_list="002629.SZ", day="20250206") # 多只股票 stock_list = ["002629.SZ", "002193.SZ", "002620.SZ", "002856.SZ", "002713.SZ"] get_stock_chinese_name(stock_list=stock_list, day="20250206") ``` #### 1.7 获取某日涨跌停价 ```python stk_limit(day="20240910") ``` #### 1.8 获取实时行情 ```python get_realtime_prices(stock_list=["000001.SZ", "000002.SZ", "000003.SZ", "000004.SZ"]) ``` #### 1.9 获取 ETF 行情 ```python # adjust 可选:front / back / none,分别表示前复权、后复权、不复权 fund_daily("159915.SZ", start_date="20220101", end_date="20250401", adjust="front") ``` ### 2. 获取交易日列表 ```python # 1) 指定起止日期获取交易日列表 get_trade_days(since="20240101", until="20250727") # 2) 指定终止日期与天数获取交易日列表 get_trade_days(until="20250609", count=340) ``` ### 3. 获取指数信息 #### 3.1 获取指数行情 ```python index_daily(index_code="000300.SH", start_date="20210101", end_date="20251001") ``` #### 3.2 获取某日指数成分股 ```python get_index_stocks(index_symbol="000300.SH", day="20250606") ``` #### 3.3 获取某日指数成分股权重信息 ```python get_index_weights(index_symbol="000300.SH", day="20250606") ``` ### 4. 获取行业信息 #### 4.1 获取某日行业成分股(申万一级行业分类) ```python get_industry_stocks("801780.SI", day="20250910") ``` #### 4.2 获取申万一级行业分类列表 ```python get_industries(name="SW2021", level="L1") ``` #### 4.3 获取某日股票所属行业(申万一级) ```python # 单只股票 get_industry(stock="000001.SZ", day="20180601") # 多只股票 get_industry(stock=["000001.SZ", "000002.SZ", "000003.SZ", "000004.SZ"], day="20180601") ``` #### 4.4 展示历史行业宽度 ```python get_industry_width(end_date="20250922", count=20) ``` ### 5. 策略开发和回测常用接口 #### 5.1 过滤新三板、创业板、科创板、北交所 ```python # 根据股票代码过滤 filter_stocks(stock_list) ``` #### 5.2 过滤 ST 或 *ST 的股票 ```python filter_st_stock(stock_list, day="20250620") ``` #### 5.3 过滤停牌的股票 ```python filter_suspend_stock(stock_list, day="20250620") ``` #### 5.4 过滤退市的股票 ```python filter_delist_stock(stock_list, day="20250620") ``` #### 5.5 过滤今日涨停、跌停的股票 ```python filter_limitup_limitdown_stock(stock_list, day="20250620") ``` #### 5.6 根据价格过滤股票 ```python # 只保留股票价格在 2-9 元之间的股票 filter_price_stock(stock_list, day="20250620", low=2, high=9) ``` #### 5.7 过滤上市时间较短的股票 ```python filter_new_stock(stock_list, day="20250620", threshold=375) ``` #### 5.8 获取某日 ST 或 *ST 的股票 ```python get_st(day="20250620") ``` ### 6. 获取财务数据 #### 6.1 获取历史某日的利润表数据 ```python get_income(stocks=[], day="20250206", fields=[]) ``` #### 6.2 获取历史某日的资产负债表数据 ```python get_balancesheet(stocks=[], day="20250206", fields=[]) ``` #### 6.3 获取历史某日的现金流量表数据 ```python get_cashflow(stocks=[], day="20250304", fields=[]) ``` #### 6.4 获取历史某日的财务指标数据 ```python get_fina_indicator(stocks=[], day="20250304", fields=[]) ``` ### 7. 回测模块 ```python analyzer(pnl, benchmark, result[0], fig_name=strategy_name) ``` ## 联系方式 若有问题,欢迎提 issue、加微信或发邮件。 - 邮箱:hkcodex@gmail.com - 博客:https://www.hkcodex.com/