Skip to main content

TianGong Quantitative Investment Research Analysis Client

Project description

tgtrader天工量化投研分析客户端

  • 提供开箱即用的分析工具
  • 对于小白,可以直接使用可视化分析工具,零代码开启量化分析
  • 对于有一定经验的开发者,结合使用sdk开发,更加灵活

微信公众号: 天工量化

关注即可获取

  1. tgtrader的最佳实践:如何用好tgtrader以提高投研效率
  2. 研报复现:各大券商研报复现,源码公开
  3. 策略分享:基于tg量化工具集,实现各类策略
  4. 实盘跟踪:已上线的实盘策略持续跟进

源码地址

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/

alt text

更新日志

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 数据下载

点击“数据初始化”,进入下载页面。选择需要更新的数据以及时间段,进行更新。

数据下载了有什么用

  1. 可在数据查询页面用sql进行查询,进行探索性分析
  2. 后续因子计算,直接用本地数据进行计算,提升效率 alt text

1.2 数据查询

tgtrader底层使用duckdb存储数据,使用duckdb sql即可进行查询

为什么用duckdb

  1. duckdb sql与标准sql基本一致,使用sql进行数据分析效率更高,更加灵活
  2. duckdb性能非常高,同样的功能,duckdb比pandas性能要高数倍
  3. 可以与pandas完美结合,可以用sql对dataframe进行查询,效率翻倍提升
  4. 在量化交易中,需要频繁的对行情数据做时间序列和截面的计算,duckdb对此有比较好的支持。使用窗口函数,可以非常方便的进行各种时间和截面的计算 alt text

1.3 数据加工

可以在画布上拖拽来构建可视化的数据加工流程: alt text

二、策略模块

2.1 已支持的内置策略

策略名称 策略说明 适用场景
目标权重策略 根据预设的目标权重定期调仓,是最基础的资产配置策略 适用于有明确资产配置目标的场景,如60/40策略、风险等级配置等
风险平价策略 通过计算资产的风险贡献,使各资产的风险贡献相等,实现风险的平衡配置 适用于追求风险平衡、稳健收益的场景,特别是在市场波动较大时期
2.1.1 目标权重策略

目标权重策略 目标权重策略

2.1.2 风险平价策略

alt text

2.2 我的策略

策略回测完成之后,可以保存到“我的策略” alt text

进入“我的策略”,可以查看保存的策略列表 alt text

选中某个策略,并点击“查看”,可以查看策略的收益绩效。蓝色部分是回测收益曲线,红色部分是回测之后时间段的收益曲线。通过观察红线,可以了解策略仍然有效 alt text

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

get_data

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tgtrader-1.1.0.tar.gz (2.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tgtrader-1.1.0-py3-none-any.whl (2.7 MB view details)

Uploaded Python 3

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

Hashes for tgtrader-1.1.0.tar.gz
Algorithm Hash digest
SHA256 47dba6a2772a872fbbd43a7a5451617d7172b671ab361dd46a6d4bac941a6c19
MD5 de50fd028d51db323d5798e22230f832
BLAKE2b-256 f2579b379f5a329c52788fe0833781971e5c0c53be797dce71bbcc3b056abe61

See more details on using hashes here.

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

Hashes for tgtrader-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 390e037f54eaf9f46b4ca16879e327728323ec1bec34ac55e0988b93a5a26016
MD5 0356ef1394b894668efd07d388e75dbe
BLAKE2b-256 05fe5c59a0c32ef8ab15ef098dd6335824b44e60b8fe8f1938506afe31be173e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page