当前位置: 首页 > news >正文

如何构建加密货币分钟级回测系统(整体设计说明)

回测框架代码见 加密货币分钟级多因子回测框架

如何构建加密货币分钟级回测系统

整体设计思想和 (Pro)A股选股框架回测系统 类似,设计上的主要区别是有多空持仓与分钟级回测功能。

系统整体设计

1.从数据集根据选定交易对,按时间interval进行采样,选出对应交易对的信息(可分钟级可小时级),可以加入自定义因子字段
2.对每个时间点所有交易对,生成相应的因子信号,进行信号排序(多空可分离)
3.每个时间点选出前若干排名进入候选池
4.模拟交易,根据设置的持仓周期或者平仓信号进行相应的清仓,发生清仓后资金闲置后将在后续候选池中进行对应交易对的购买
5.生成相应的图表参数
6.生成相应的分组对比图(如果有多组选择)
在这里插入图片描述
设计上实现只需要修改config.py和custom_factors.py这两个python文件,免去写代码即可进行策略回测这一需求
在这里插入图片描述
main.py为主函数,为框架运行的入口。

config.py和custom_factors.py放在和main.py同一层级下
在这里插入图片描述
生成的各临时文件与分析文件的整体结构图

系统整体数据流

1.根据file_path读入数据目录下的所有需要的交易对(排除blacklist),进行数据采样,并对空余部分进行填补,生成all_data.pkl
2.读入all_data.pkl,进行自定义因子计算,custom_factors.py中可进行自定义因子计算,生成processed_all_data.pkl
3.读入processed_all_data.pkl,根据filter进行一轮过滤,把剩余的交易对按ranking_factors的规则进行排序,如果有long则生成ranked_all_data_long.csv,如果有short则生成ranked_all_data_short.csv
4.根据ranked_all_data_long.csv和ranked_all_data_short.csv,结合target_holding_count生成selected_stocks_long.csv和selected_stocks_short.csv
5.进行simulation仿真,每天根据目标持仓数依次选择对应选币排行csv,根据sell_conditions进行卖出(holding_period,take_profit,stop_loss,should_sell_normal_numeric_factors)生成持仓表,资金曲线,交割单等csv
6.结合simulation渲染出pro_backtest_report.html,形成可视化
7.如果有多组target_holding_count,则渲染生成相应的分组对比图

在这里插入图片描述
各步骤详细说明

1.数据读取

读取所有需要的交易对(可现货可合约,可小时级,可分钟级)

以下为一些可用的数据集,可以接现货/合约,可为小时级/分钟级数据
https://quantkt.com/informationDetail?id=73 欧易各现货小时级数据下载地址
https://quantkt.com/informationDetail?id=74 欧易各合约小时级数据下载地址
https://quantkt.com/informationDetail?id=69 币安各现货小时级数据下载地址
https://quantkt.com/informationDetail?id=70 币安各合约小时级数据下载地址
也可以根据需要接入自己的数据,最终也会读里面BTC和ETH的数据作为基准收益进行对比
在这里插入图片描述
配置一下本地相应的数据文件夹
在这里插入图片描述
文件夹内部的格式类似上面

2.计算因子custom_factors.py

calculate_custom_factors为整体函数,可以自行写各种自定义因子函数,然后在整体函数中调用。
计算出来的字段将可在config.py中自由使用

下图为calculate_custom_factors加入自定义因子的示例

在这里插入图片描述
3.生成候选池

先对每个时间的标的按filter进行筛选,False为强制不选过滤,True为强制要求满足,不选的直接把rank标为10000
后续不被处理
对于filter之后的结果(非rank10000的)
进行ranking_factors,其中factor为因子名称,
ascending为是否升级
weight为因子权重
生成对应的ranked_all_data_long.csv和
ranked_all_data_short.csv
在这里插入图片描述
4.选出每个k线的候选

根据config.py中的target_holding_count
,支持[1,10],[‘10%’,‘20%’]格式
每组都会生成对应的每个时间的选币
在这里插入图片描述
在这里插入图片描述
5.回测仿真

根据config.py的配置
会读取对应的selected_stocks_long.csv和selected_stocks_short.csv中每个时间的选择,再结合target_holding_count表示的每个时间的目标持仓量,不断开仓平仓
1.config.py中的refresh_holding_recommendation表示持仓币再次出现推荐时,是否刷新持有周期继续持仓,默认为True
2.卖出条件取决于sell_conditions,分为持有周期,止盈止损,择时平仓

最终生成对应的资金曲线(equity_curve.csv),每个时间的持仓(position_history.csv),所有的交割单(transactions.csv)
同时对应的config.py会根据当前的时间戳在对应路径下形成一个备份

关于卖出的触发

注意should_sell_normal_numeric_factors,里面可以写多个条件,表示对应字段在当前时间满足条件时,则触发平仓信号(可支持多个条件,为或的关系,字段也可自带,也可为custom_factors.py中计算的自定义因子
在这里插入图片描述
6.回测结果生成

生成主要资金曲线与BTC和ETH的基准,并计算年化收益,前三大回撤。

在这里插入图片描述
每日持仓数量分析

分为多头与空头持仓数量变化
在这里插入图片描述
在这里插入图片描述
月度收益图
各类指标
各类指标
在这里插入图片描述
收益分析
在这里插入图片描述
盈亏交易排行

盈利排名一般可用于检查当前的策略逻辑是否符合预期,是否有没考虑到的bug
在这里插入图片描述
亏损排名一般用于发现策略的潜在问题,用于优化策略
在这里插入图片描述
7.分组对比图

分组对比,可以查看不同组别的收益曲线与各类指标对比

在这里插入图片描述
最终收益对比与年度热力图对比

在这里插入图片描述
各类常见指标对比
在这里插入图片描述

http://www.dtcms.com/a/594712.html

相关文章:

  • 手术相关公开数据集收集报告
  • 智能座舱知识图谱技术架构方案
  • 怎么用polylang做网站娶妻为什么不娶外贸女
  • 做网站和推广的公司哪家好网站跳出率一般是多少
  • 用什么做网站开发苏州网站开发公司哪里济南兴田德润简介
  • 湖北网站seo设计兰州模板型网站建设
  • 彩虹网站建设营销技巧电影
  • ROS2学习记录——TF坐标变换工具(二)
  • wordpress音乐站源码国内知名展示设计公司
  • 坂田建设网站做网站首页应该考虑什么
  • 怎么样搭建qq号网站网站怎样排版
  • Redis实现未读消息计数
  • 制作属于自己的网站伪静态网站入侵
  • 企业站用什么程序做网站运城网站建设
  • 景区智慧旅游网站建设多网站怎么做seo
  • html5 网站后台建筑用工平台
  • 画世界笔刷免费合集:含导入教程与全风格推荐
  • Cache-Aside模式下Redis与MySQL数据一致性问题分析
  • 做任务 网站随州网站制作
  • 2025-11-10
  • 网站艺术设计redis wordpress 设置
  • 建立外贸英文网站应该怎么做英文网站注册
  • 芝罘网站建设设计手机网站软件
  • 11.10 脚本算法 五子棋 「重要」
  • 揭阳做网站公司北京响应式网站制作公司
  • 做网站都要买出口带宽吗嘉祥网站建设哪家好
  • sql查询 笛卡尔积 子查询
  • 可做笔记的阅读网站成都市微信网站建设报价
  • 【LLIE技术专题】基于成对低光图像学习自适应先验方案代码讲解
  • 瑞金网站建设推广自助建站吧