一个轻量清晰,容易上手的,数据/投研/交易集成框架
首先 QuantHub 是个圈地自萌的小社区,里面的人个个是人才,长得好看(❤´艸`❤),说话又好听。
其次 quanthub 是个体验感很好的量化集成框架,目前开源的是实际生产环境的一个简化版本,几乎涵盖了(数据/投研/组合/交易/分析)所有环节。
它足够简单,足够自由,你可以像搭积木一样,搭配自己喜欢的技术栈,让它成为最适合你的开发利器!
它的架构肯定是没有问题的,几乎可以说是很标准了,搭配合适的技术栈,是可以成为一个企业级的框架的;
最后,感谢这两年多来,不断支持 QuantHub项目成长,给予帮助和建议的朋友🍑🍑🍑~
-
自由,自由,还是***D 自由,你可以随心所欲的魔改 DIY,可扩展,可升级;
-
简单,简单,足够轻松上手的简单,这是一整套完整的体系,来源于实际的各生产环节;
quanthub包含以下几个部分(请原谅我是个取名废材,o(////▽////)q):
- 这是一个落地数据库,你可以直接把你想要的数据放到本地,并通过data_sync进行每日同步更新。
- 储存形式任意,你可以按照自己的喜好进行选择,目前我实际生产环境用的clickhouse+parquet+duckdb;
- 该数据库包含:股票,期货,期权,基金的历史行情数据,以及相应的实时数据;
- 数据的ETL相关代码,请查阅plutus.data 模块
- 该数据库还包含,各种另类数据和基本面数据,具体内容,请查看datahub 文档;
- 这是落地一个因子数据库,可以是你喜欢的任意形式,为方便上传,该项目采用的parquet文件存储;
- 也是一个因子回测框架,包含截面因子回测和时序因子回测两大类;
- 投研环境下,相关回测逻辑,请阅读plutus.research模块
- 生产环境下,批量计算因子,请查看plutus.factor模块
- 因子面板(更新中);
- 一个因子交换和交流平台(目前是以微信群的方式),有想加入的小伙伴,请私下联系;
- 具体内容说明,请查看factorhub文档;
- 这是落地一个信号数据库,是对因子数据的进一步处理,可以是你喜欢的任意形式,为方便上传,该项目采用的parquet文件存储;
- 生产环境下,批量计算信号,请查看plutus.signal 模块
- 交易信号面板(更新中);
- 大部分人可能用不到这个模块,如果不需要篮子交易的话;
- 具体内容说明,请查看signalhub文档;
- 这是落地一个账户持仓数据库,是对信号数据的进一步处理,可以是你喜欢的任意形式;
- 生产环境下,批量计算信号,请查看plutus.position模块
- 大部分人可能用不到这个模块,如果不需要篮子交易,或者需要多账户交易的话;
- 具体内容说明,请查看positionhub文档;
- 投研平台,本质是jupyter lab;
- 我对该模块的定义是存放,我们数据分析的各类notebook文件,以及各种测试代码;
- 具体内容说明,请查看researhub文档;
- 一个放资料的地方,包含各类视频和各种PDF等等文件,几乎你能在互联网上找到的所有可能有点用的学习资料
- 资料总大小大概200g 左右,分类如下:
- 股票
- 基金
- 期货
- 期权
- 资产配置
- 高频
- 债券
- 具体内容说明,请查看paperhub文档;
- 关于交易,我们的理念是,不同标的,不同策略,可能需要的交易框架是不一样的。你喜欢的,适合的就是最好的;
- 所以,我们直接集成了一些优秀的开源交易框架:
- wondertrader
- ctpbee
- fk_ctp
- tqsdk
- 期待能与更多的开源框架作者建立联系,感谢你们为开源社区做出的贡献~
- 具体内容说明,请查看tradehub文档;
- 一个方便同行进行招聘与求职的板块
- 目前是和以下金融ip小伙伴,同步更新,微信公众号,知乎等等自媒体;
- FOF小菜鸟;
- 期待能与更多的金融自媒体和IP建立联系
- 具体内容说明,请查看jobhub文档;
- 一个业内朋友一起打游戏的板块;
- 具体内容说明,请查看gamehub文档;
- 一个征婚交友的地方;
- 具体内容说明,请查看lovehub文档;
- plutus是另外一个小伙伴给起的名字,翻译为财神爷,哈哈,是不是凭这个就该关注下了呢
- 后台框架,该项目核心,分为以下模块和文件:
├─data
│ │ data_base.py
│ │ __init__.py
│ │
│ ├─data_backup
│ │ backup_data.py
│ │ __init__.py
│ │
│ ├─data_download
│ │ download_base.py
│ │ download_from_bs.py
│ │ download_from_ctp.py
│ │ download_from_sge.py
│ │ __init__.py
│ │
│ ├─data_prepare
│ │ prepare_base.py
│ │ prepare_center_data.py
│ │ prepare_his_parquet.py
│ │ prepare_rt_redis.py
│ │ preppare_his_redis.py
│ │ __init__.py
│ │
│ ├─data_pretreat
│ │ pretreat_base.py
│ │ pretreat_from_bs.py
│ │ pretreat_from_diy.py
│ │ __init__.py
│ │
│ ├─data_process
│ │ process_base.py
│ │ process_cn_future_index.py
│ │ process_cn_future_md.py
│ │ process_cn_future_master.py
│ │ process_cn_future_trade.py
│ │ process_cn_stock_master.py
│ │ process_cn_stock_trade.py
│ │ process_sg_future_md.py
│ │ __init__.py
│ │
│ ├─data_sync
│ │ __init__.py
│ │ sync_base.py
│ │ sync_data.py
│ │
│ ├─data_update
│ │ update_base.py
│ │ update_data.py
│ │ __init__.py
│ │
│ └─data_wrangle
│ resample_data.py
│ standard_data.py
│ __init__.py
│
├─execution
│ cal_factor.bat
│ cal_signal.bat
│ run_prepare_data.bat
│ run_update_data.bat
│
├─factor
│ │ factor_base.py
│ │ __init__.py
│ │
│ ├─factor_calculate
│ │ cal_cn_future_cs_1d.py
│ │ cal_cn_future_ts_1d.py
│ │ cal_factor_base.py
│ │ __init__.py
│ │
│ ├─factor_define
│ │ cn_future_cs_1d_mom.py
│ │ cn_future_ts_1d_mom.py
│ │ __init__.py
│ │
│ ├─factor_operator
│ │ cs_operator.py
│ │ ts_operator.py
│ │ __init__.py
│ │
│ └─factor_process
│ __init__.py
│
├─position
│ │ position_base.py
│ │ __init__.py
│ │
│ ├─position_calculate
│ │ cal_cn_future_cs_1d.py
│ │ cal_position_base.py
│ │ __init__.py
│ │
│ └─position_process
│ process_position.py
│ __init__.py
│
├─research
│ │ __init__.py
│ │
│ ├─backtest
│ │ │ backtest.py
│ │ │ statistics.py
│ │ │ __init__.py
│ │
│ ├─models
│ │ predict_model.py
│ │ train_model.py
│ │ __init__.py
│
├─signal
│ │ signal_base.py
│ │ __init__.py
│ │
│ ├─signal_calculate
│ │ cal_cn_future_cs_1d.py
│ │ cal_signal_base.py
│ │ __init__.py
│ │
│ ├─signal_portfolio
│ │ cal_portfolio_weight.py
│ │ __init__.py
│ │
│ └─signal_process
│ process_signal.py
│ __init__.py
│
├─trader
│ __init__.py
│
├─utils
│ │ __init__.py
│ │
│ ├─database
│ │ ck_control.py
│ │ dk_control.py
│ │ __init__.py
│ │
│ ├─exception
│ │ error.py
│ │ __init__.py
│ │
│ ├─tool
│ │ add_sys_path.py
│ │ configer.py
│ │ datetime_wrangle.py
│ │ decorator.py
│ │ email.py
│ │ freeze_requirement.py
│ │ logger.py
│ │ requirements.txt
│ │ __init__.py
│ │
│ ├─visualization
│ │ │ plot.py
确保服务器安装了 Git,否则需要先 安装 git 命令安装软件:
git clone https://github.com/jiangtiantu/quanthub.git
如果因为网络问题无法连接,可以使用国内镜像仓库,但是镜像仓库会有 30
分钟的延迟:
git clone https://gitee.com/jiangtiantu/quanthub.git
或者直接点击项目右上角下载;
根据你的经验,你的猜测,提出一个可能的投研思路,一个研究和交易的方向。 如果你没有任何想法,可以先看看paperhub中的资料,找找灵感
- 查看datahub面板数据,根据你的思路,选取你需要的数据。
- 在researhub里有为你准备好的大量投研demo,请查看reasearhub
- 正常情况下,先做单因子分析
- 如果已经有很成熟的因子库了,走factor,signal 批量生成和转化,将数据存放到factorhub,signalhub
- 这里会涉及到因子组合和信号组合两个问题,确定自己需要怎样的组合方式,将结果输出到positionhub
- 看看tradehub 中有没有你喜欢的交易框架,尽量少造轮子呀
- 当然,非常欢迎大佬提交自己的框架,多多宜善
- 一个循环...
ok,走过了上面的流程,你已经掌握了量化投资的基本套路了。
接下来,或自己,或和小伙伴,开启新的升级打怪之路了!!!!
这个行业真的是太jer卷了,例如期货市场,本质上就是一个零和博弈的市场。
在这个赌场里,如果你不能跟随市场成长和进化,那么你就是那只被抓的🐟🐋🐳🐬;
如果你不知道怎么避免成为一个韭菜,那么你就是那个韭菜!
所以,做好一直卷下去的准备吧;
如果你准备好了,那就去尝试吧,每次失败的经验,都将帮助你逼近那些正确的方向!
但一定一定,切记,投资有风险,入市需谨慎;活下来,比什么都重要!
# 生活不易,猫猫叹气,加油(ง •_•)ง!
- 要做的东西太多了,本项目应该会处于长期快速迭代更新;
- 我们欢迎所有的贡献者,也期待能结识更多金融圈开源小伙伴,你可以将任何想法作为 pull requests 或 GitHub issues 提交。关于代码如果有任何疑惑的地方,可以先看下,name_rule是否能解决问题。顺颂商祺 :)