TianGong Quantitative Investment Research Analysis Client
Project description
tgtrader天工量化投研分析客户端
- 提供开箱即用的分析工具
- 对于小白,可以直接使用可视化分析工具,零代码开启量化分析
- 对于有一定经验的开发者,结合使用sdk开发,更加灵活
微信公众号: 天工量化
关注即可获取:
- tgtrader的最佳实践:如何用好tgtrader以提高投研效率
- 研报复现:各大券商研报复现,源码公开
- 策略分享:基于tg量化工具集,实现各类策略
- 实盘跟踪:已上线的实盘策略持续跟进
源码地址
github: https://github.com/smartian1/tgtrader gitee: https://gitee.com/smartian123/tgtrader
安装
pip install tgtrader
如果网络不通,可以使用国内镜像源
pip install tgtrader -i https://mirrors.aliyun.com/pypi/simple/
更新日志
v1.1.0
- 支持画布拖拽构建数据加工流程
v1.0.1
- 增加数据初始化、数据查询页面
- 增加知识库页面,显示jupyter notebook
v1.0.0
可视化策略回测
- 支持在本地运行可视化页面, 仅需两行代码
- 已支持的内置策略: 目标权重策略, 风险平价策略 (策略不断扩充中)
- 我的策略: 将回测策略及参数保存到个人空间
- 策略详情: 查看策略详情, 并支持查看策略回测和模拟阶段绩效
SDK功能
- 支持获取国内ETF数据、股票数据(使用AKShare获取数据)
- 支持自定义策略类
客户端使用说明
创建虚拟环境(建议)
python -m venv venv_tgtrader
激活虚拟环境
1. windows
.\venv_tgtrader\Scripts\activate
2. mac/linux
source venv_tgtrader/bin/activate
安装tgtrader
pip install tgtrader
初始化数据
python -m tgtrader.streamlit_pages.init_data
启动客户端
1. 创建一个python文件(要与初始化数据时目录保持一致),例如:tgtrader_cli.py
2. 在文件中添加以下代码:
from tgtrader.streamlit_pages.main import run
run()
3. 运行
streamlit run tgtrader_cli.py
一、数据模块
1.1 数据下载
点击“数据初始化”,进入下载页面。选择需要更新的数据以及时间段,进行更新。
数据下载了有什么用:
- 可在数据查询页面用sql进行查询,进行探索性分析
- 后续因子计算,直接用本地数据进行计算,提升效率
1.2 数据查询
tgtrader底层使用duckdb存储数据,使用duckdb sql即可进行查询
为什么用duckdb:
- duckdb sql与标准sql基本一致,使用sql进行数据分析效率更高,更加灵活
- duckdb性能非常高,同样的功能,duckdb比pandas性能要高数倍
- 可以与pandas完美结合,可以用sql对dataframe进行查询,效率翻倍提升
- 在量化交易中,需要频繁的对行情数据做时间序列和截面的计算,duckdb对此有比较好的支持。使用窗口函数,可以非常方便的进行各种时间和截面的计算
1.3 数据加工
可以在画布上拖拽来构建可视化的数据加工流程:
二、策略模块
2.1 已支持的内置策略
| 策略名称 | 策略说明 | 适用场景 |
|---|---|---|
| 目标权重策略 | 根据预设的目标权重定期调仓,是最基础的资产配置策略 | 适用于有明确资产配置目标的场景,如60/40策略、风险等级配置等 |
| 风险平价策略 | 通过计算资产的风险贡献,使各资产的风险贡献相等,实现风险的平衡配置 | 适用于追求风险平衡、稳健收益的场景,特别是在市场波动较大时期 |
2.1.1 目标权重策略
2.1.2 风险平价策略
2.2 我的策略
策略回测完成之后,可以保存到“我的策略”
进入“我的策略”,可以查看保存的策略列表
选中某个策略,并点击“查看”,可以查看策略的收益绩效。蓝色部分是回测收益曲线,红色部分是回测之后时间段的收益曲线。通过观察红线,可以了解策略仍然有效
SDK使用说明
一、数据模块
1.1 获取外部数据
from tgtrader.data import DataGetter
from tgtrader.common import PriceAdjust, Period, SecurityType
symbols = [
'511260', # 十年国债ETF
'159915', # 创业板ETF
'510500', # 500ETF
'159919', # 沪深300ETF
'510880', # 红利ETF
'518880', # 黄金ETF
'513100', # 纳指ETF
]
data_getter = DataGetter()
df = data_getter.get_price(symbols,
"2010-01-01",
"2024-11-30",
period=Period.Day,
fields=["open","close","high","low","volume"],
security_type=SecurityType.ETF,
adjust=PriceAdjust.HFQ)
df
| 参数 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| symbols | List[str] | 证券代码列表 | ['511260', '159915'] |
| start_date | str | 开始日期,格式为YYYY-MM-DD | '2010-01-01' |
| end_date | str | 结束日期,格式为YYYY-MM-DD | '2024-11-30' |
| period | Period | 数据周期,可选值:Day(日线)、Week(周线)、Month(月线) | Period.Day |
| fields | List[str] | 需要获取的字段,可选值:open、close、high、low、volume | ['open', 'close'] |
| security_type | SecurityType | 证券类型,可选值:ETF、Stock | SecurityType.ETF |
| adjust | PriceAdjust | 价格复权方式,可选值:None(不复权)、QFQ(前复权)、HFQ(后复权) | PriceAdjust.HFQ |
1.2 查询本地数据库
from tgtrader.utils.duckdb_query import DuckDBQuery
from tgtrader.common import DataSource
# 设置读取数据库文件的db_query
data_source = DataSource.Akshare
db_query = DuckDBQuery(data_source)
# fetch_df:输入sql,输出dataframe
df = db_query.fetch_df("select * from t_kdata limit 10")
# fetch_all: 输入sql,输出list[dict]
data = db_query.fetch_all("select * from t_kdata limit 10")
1.3 使用sql,对dataframe进行分析
from tgtrader.utils.duckdb_query_df import DuckDBQueryDF
# 将dataframe传入到DuckDBQueryDF实例,构建一个查询器
duckdb_df_query = DuckDBQueryDF(df)
# 可用sql对df进行分析了,例如计算20日SMA
sql = """
SELECT
code,
date,
open,
low,
high,
close,
volume,
-- 计算 20 日 SMA
AVG(close) OVER (PARTITION BY code ORDER BY date ROWS BETWEEN 19 PRECEDING AND CURRENT ROW) AS sma_20
FROM df
"""
df_duck = duckdb_df_query.query(sql)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tgtrader-1.1.0.tar.gz.
File metadata
- Download URL: tgtrader-1.1.0.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47dba6a2772a872fbbd43a7a5451617d7172b671ab361dd46a6d4bac941a6c19
|
|
| MD5 |
de50fd028d51db323d5798e22230f832
|
|
| BLAKE2b-256 |
f2579b379f5a329c52788fe0833781971e5c0c53be797dce71bbcc3b056abe61
|
File details
Details for the file tgtrader-1.1.0-py3-none-any.whl.
File metadata
- Download URL: tgtrader-1.1.0-py3-none-any.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
390e037f54eaf9f46b4ca16879e327728323ec1bec34ac55e0988b93a5a26016
|
|
| MD5 |
0356ef1394b894668efd07d388e75dbe
|
|
| BLAKE2b-256 |
05fe5c59a0c32ef8ab15ef098dd6335824b44e60b8fe8f1938506afe31be173e
|