# 本地量化接口库
**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/