原 掘金量化3参数优化(使用掘金3的操盘员必读)

参数优化目的

​ 我们在进行策略编写时,很容易受到参数调整的困扰,比如说双均线策略,到底长短均线的周期怎么来定义?“5日线”和“10日线”组合一定是最好的吗?如果多次回测,怎么记录回测结果?

​ 带着这些疑问,我们来共同探讨掘金量化3的参数优化示例程序。

参数优化思想

​ 我们将心目中的参数进行循环遍历回测,记录每次回测结果和参数,然后就可以根据某种规则将回测结果排序,这样就可以找到最好的参数了,当然,建议不要用“最好”的参数,因为可能会出现“过拟合”问题。

参数优化实现步骤

基础配置

  • 首先,需要有个策略(init函数和on_bar(tick)函数或algo函数),策略里面有参数可以调整(废话)。

  • 将两个策略函数复制进示例程序中替代示例策略。

  • 调整run里面回测的各个参数。

记录每次回测结果

def on_backtest_finished(context, indicator):report=[indicator['pnl_ratio'],indicator['pnl_ratio_annual'],indicator['sharp_ratio'],indicator['max_drawdown'],context.short,context.long]context.list.append(report) on_backtest_finished(context, indicator):report=[indicator['pnl_ratio'],indicator['pnl_ratio_annual'],indicator['sharp_ratio'],indicator['max_drawdown'],context.short,context.long]context.list.append(report)

定义on_backtest_finished函数,report里面需要添加你想看到的回测报告指标以及输入的参数,context.short,context.long为参数。

回测报告指标主要有:

名称 含义
account_id 策略ID
pnl_ratio 累计收益率
pnl_ratio_annual 年化收益率
sharp_ratio 夏普比率
max_drawdown 最大回撤率
open_count 开仓次数
close_count 平仓次数
win_count 盈利次数
lose_count 亏损次数
win_ratio 胜率

循环输入参数回测

这里我们以双均线策略为例:

for short in range(5,10,2):
    for long in range(10,21,5):
       process=multiprocessing.Process(target=run_strategy, args=(short,long,a_list))

shortlong长短周期参数的调整需要循环嵌套,输入进args中,a_list是用来记录回测报告数据的list,必须保留!

def run_strategy(short,long,a_list):from gm.model.storage import contextcontext.short=shortcontext.long=longcontext.list=a_listrun(strategy_id='set_strategy_id',filename='参数优化.py',mode=MODE_BACKTEST,token='set_token',backtest_start_time='2017-05-01 08:00:00',backtest_end_time='2017-10-01 16:00:00',backtest_adjust=ADJUST_PREV,backtest_initial_cash=50000,backtest_commission_ratio=0.0001,backtest_slippage_ratio=0.0001) run_strategy(short,long,a_list):from gm.model.storage import contextcontext.short=shortcontext.long=longcontext.list=a_listrun(strategy_id='set_strategy_id',filename='参数优化.py',mode=MODE_BACKTEST,token='set_token',backtest_start_time='2017-05-01 08:00:00',backtest_end_time='2017-10-01 16:00:00',backtest_adjust=ADJUST_PREV,backtest_initial_cash=50000,backtest_commission_ratio=0.0001,backtest_slippage_ratio=0.0001)

传入参数时,需要修改策略运行函数的输入参数,并通过context将参数传入策略中,原策略中的参数定义语句需要删除!

结果分析

首先,我们需要把回测报告结果转换成Dataframe格式:

 =np.array(a_list)
final_report=pd.DataFrame(a_list,columns['pnl_ratio','pnl_ratio_annual','sharp_ratio','max_drawdown','short','long'])

其中columns需要与之前所获取的回测参数保持一致。

然后,将回测结果按照某种原则进行排序:

final_report=final_report.sort_values(axis=0, ascending=False, by='pnl_ratio')=final_report.sort_values(axis=0, ascending=False, by='pnl_ratio')

我们这里以'pnl_ratio'降序排列为例,如果想升序排列,可将ascending=False改为ascending=True

文章来源:掘金量化 转载请注明出处!


《算法导论 第三版英文版》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版

《Python科学计算》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版


掘金量化3参数优化(使用掘金3的操盘员必读)相关推荐

  1. 掘金量化3参数优化(使用掘金3的策略师必读)

    原 掘金量化3参数优化(使用掘金3的策略师必读) 参数优化目的 ​ 我们在进行策略编写时,很容易受到参数调整的困扰,比如说双均线策略,到底长短均线的周期怎么来定义?"5日线"和&q ...

  2. 分享掘金量化实现参数优化的过程步骤

    掘金量化主要是为了打造功能齐备的终端,集合了策略开发到实盘的功能,便于使用,具备可靠的性能,帮助投资者提高开发策略的效果,降低IT成本. 小编来分享一下掘金量化实现参数优化的过程步骤,将参数进行回测, ...

  3. 分析股票量化交易实盘接口和人类操盘手的优缺点

    股票量化交易,就是将股票市场所有的股票信息,比如股票的涨跌历史数据,成交量历史数据,股票的基本面历史数据,指数涨跌历史数据等等全部输入计算机,进行大数据分析,之后根据大数据选择出炒股成功率最高的方案, ...

  4. 掘金量化 | 短周期量价策略(附源码)

    可能不少朋友都有阅读过国泰君安<基于短周期价量特征的多因子选股体系>这篇研报,对其内多达191个量价因子印象深刻.该研报是在2017年中旬发布的,时至今日已过去四年时光,为此大家可能会好奇 ...

  5. 掘金量化诚聘技术伙伴,欢迎大佬、优秀的萌新投递!

    关于掘金量化: 关键词:量化投资领域.业内数一数二.产品toB也toC.工作氛围轻松.做事以结果为导向 公司成立于2013年,总部和研发中心位于深圳.是一家创新型FinTeTech金融科技公司,致力于 ...

  6. 掘金量化是什么?有哪些特点?

    掘金量化是为专业量化投资打造的一款功能齐备的落地式终端,集成了策略开发到实盘的模块化功能,打通研究.仿真和绩效链路.兼容多种编程语言,易于使用.性能可靠,能够帮助量化投资者提高策略开发效率.减少IT投 ...

  7. 金融平台(掘金量化)量化PYTHON(二)-量化回测框架介绍

    策略创建运行流程 1.创建运行策略 1.1创建策略 打开"掘金量化3.0"客户端,进入"我的策略"-"新建策略",如下所示: 平台本身提供了 ...

  8. python生产者消费者 掘金_帮助中心--掘金量化Python API文档

    快速开始 下载SDK 掘金量化平台提供策略开发服务包(SDK)用于策略开发者实现自己的策略.SDK下载地址请点击这里. Python SDK支持Windows + Python2.7/3.6 + 32 ...

  9. 掘金量化回测平台 - 1

    掘金量化平台初探 python 量化分析包括:策略研发.策略回测.仿真交易.实盘交易.实盘盘后优化. 主要想使用掘金的平台来做策略回测和仿真交易两个环节的功能. 对比了下主流的云平台JoinQuant ...

最新文章

  1. [分享]C# 获取Outlook帐号和密码
  2. android实现计算器功能吗,利用Android实现一个简单的计算器功能
  3. 博士论文:教你如何给女朋友送礼物
  4. Quagga的安装碰到的问题
  5. AI算法连载08:统计学之贝叶斯
  6. 【Docker】OCI runtime exec failed: exec failed: container_linux.go:348: starting container process cau
  7. JS 将图片编码BASE64
  8. Java 通过JDBC连接Mysql数据库
  9. git 设置全局代理_git 代理配置
  10. 厚着脸皮求领导写了一篇java小白进阶大牛之路!!!
  11. 2021牛客暑期多校训练营#5:C-Cheating and Stealing
  12. java高德地图算距离_根据高德地图得出的坐标算出两点之间的距离 java
  13. 不允许指针指向不完整的类类型
  14. 【保密知识】排查失泄密隐患 防控保密风险点
  15. 微信小程序上传和下载文件
  16. 却话文心一言(Chatgpt们),存算一体真能突破AI算力“存储墙”|“能耗墙”|“编译墙”?
  17. HBase基础【HBase简介、HBase安装、HBase shell操作】
  18. Jenkins Pipeline中的自定义环境变量
  19. html+css+javascript满屏雪花爱心520表白网站 (含音乐)520告白/七夕情人节/生日礼物/程序员表白必备...
  20. Lodop 动态加载模板,动态加载数据

热门文章

  1. 【双碳系列】LEAP碳排放预测、LCA生命周期、GAMS电力、CGE一般均衡模型
  2. 在线音乐付费用户达6090万再创新高、付费率近10%,腾讯音乐娱乐集团Q1财报多项业务获显著突破
  3. 用PHP实现单向链表结构
  4. Linux学习笔记19——XFS 文件系统的备份与还原、光盘写入工具、其他常见的压缩与备份工具
  5. import apex出错,apex标红解决办法
  6. 算法之美——算法复杂性
  7. gnu radio学习(三)Message Passing消息传递详解
  8. oracle sqlunldr 导出csv乱码
  9. 实验3 路由器的基本配置和远程登录
  10. 故障特效AE视频模板 Modern Glitch Intro