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

掘金量化—Python SDK文档—1.快速开始 掘金量化支持python、matlab、C++、C#四种编程语言,需在安装专门的掘金SDK后方能进行回测、仿真等,以下为Python SDK的介绍内容,供初学者参考使用 阅读详情

原 掘金量化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)) 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 context
    context.short=short
    context.long=long
    context.list=a_list
    run(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 context
    context.short=short
    context.long=long
    context.list=a_list
    run(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编程:从入门到实践》_高清中文版


分享掘金量化实现参数优化的过程步骤 掘金量化主要是为了打造功能齐备的终端,集合了策略开发到实盘的功能,便于使用,具备可靠的性能,帮助投资者提高开发策略的效果,降低IT成本。小编来分享一下掘金量化实现参数优化的过程步骤,将参数进行回测,并且记录每一次的回测结果和参数。 以双均线策略为例,循环输入参数回测: 和长短周期参数的调整需要循环嵌套,输入进中,是用来记录回测 在传入参数的时候,同时还要修改策略运行函数的输入参数,并且通过context把参数传入策略。通过记录回测结果和参数,根据规则来排序回测的结果,这样可以找到最好的参数。当然 阅读详情

相关推荐

掘金量化—Python SDK文档—5.API 介绍(1)

init - 初始化策略初始化策略, 策略启动时自动执行。可以在这初始化策略配置参数。参数名类型说明contextcontext上下文,全局变量可存储在这# 订阅bar# 增加对象属性,如:设置一个股票资金占用百分比回测模式下init函数不支持交易操作,仿真模式和实盘模式支持schedule - 定时任务配置在指定时间自动执行策略算法, 通常用于选股类型策略参数名类型说明function策略定时执行算法date_rulestr。

量化交易研究 3452

二十、欢迎来到掘金量化

回溯测试的原理,简单的说,就是用完全真实的历史行情数据,构造出一个模拟的交易环境(回溯环境),让策略在其中运行,像时空穿越一样,回到历史上的某个时间节点,重头开始运行一遍。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。在主界面中选择“策略研究”,点击新建策略,这提供了多个不同类型的策略研究页面,可选择最合适的模块开始编,如果都不匹配,可选择“空策略”来构建全新的策略,如下图6-27所示。

微信号:RunsenLiu 3863

掘金量化—Python SDK文档—5.API 介绍(2)

Python SDK文档 5.API介绍 5.6通用数据函数(免费) python 通用数据 API 包含在 gm3.0.148 版本及以上版本,不需要引入新库 get_symbol_infos- 查询标的基本信息 获取指定(范围)交易标的基本信息,与时间无关. 此函数为掘金公版(体验版/专业版/机构版)函数,券商版以升级提示为准 函数原型: get_symbol_infos(sec_type1, sec_type2=None, exchanges=None, symbols=

量化交易研究 4311

掘金量化 网格交易代码 个人练习使用

最近在家没啥事,量化的代码,下面的代码全部复制了放在掘金量化的一个新建的策略就能运行,main函数的token 换成你自己的token就行,在系统设置有token。可以调参试试,也许可以增加收益。大致思路是:网格交易 下降买的多 上升卖得少 且ATR高减仓。ATR有点鸡肋,好像一直都很低,没有帮助提高收益,去掉也行。总之年化17%左右,还是不错滴,仅供参考。

qq_19557899的博客 2746

量化交易简介

目录标题1 是什么2 为什么3 开源量化交易项目中国德国美国4 商业版交易平台5 量化界大佬3.1 先驱者3.2 其他知名人物 1 是什么 借助数学方法,利用计算机技术进行交易的证券投资技术。 一般流程 想到一种策略。例如股价大于5日均价则卖出,股价小于5日均价则买入。 把策略细化成可操作的步骤 用代码实现策略的细化操作步骤 检验策略效果 用历史数据回测。在历史数据上模拟执行该策略,看经过给定的一段时间之后的收益情况如何。 模拟交易。用真实市场数据来模拟执行策略,看经过一段时间之后的收益情况如何。

终回首的博客 2564

掘金使用技巧7】如何从通达信等迁移到掘金

引言 一些用户是从通达信等软件上切换过来的,对于掘金框架及python语言不是很了解,很难上手。对此,小编整理了一些基本要点以及一些简单的示例,希望对大家有帮助。 从结构开始说起 通达信这类软件在编公式之前首先要确定一个频率,是日线级别、分钟级别还是其他级别,然后再定义公式,这个选择的过程对应掘金python语句中的订阅函数(subscribe)。如果在通达信中选择日线频率,在掘金中就订阅’1d’频率。(特别说明,掘金除了bar数据,还支持tick级别的数据,用户可以在更高频率下编策略)。

weixin_57522153的博客 628

米筐量化vs掘金量化:哪个更适合小白?全面测评!

如果你是刚接触量化炒股的小白,希望快速上手并体验量化交易的乐趣,米筐量化可能更适合你。它的界面友好,操作简单,学习资源也足够。但如果你对量化投资有更深的兴趣,想要探索更多的策略和功能,掘金量化无疑是更好的选择。虽然它的学习曲线稍微陡峭一些,但提供的资源和功能绝对值得你投入时间和精力。最后,量化炒股是一个不断学习和实践的过程,无论你选择哪个平台,关键是要不断实践,不断学习,这样才能在股市中游刃有余。希望这篇文章能帮助你做出选择,如果有任何疑问,欢迎在评论区留言讨论。量化炒股的路上,我们一起成长!

云策量化的博客 1942

掘金量化—Python SDK文档—5.API 介绍(3

以下接口在终端版本号大于 3.17.0.0 的版本不再维护,请切换到新的通用接口- 查询基本面数据获取基本面数据此函数掘金公版(体验版/专业版/机构版)不支持,请切换到stk_get_fundamentals_balance - 查询资产负债表数据等新接口参数名类型说明tablestr表名,只支持单表查询. 具体表名及 fields 字段名及 filter 可过滤的字段参考财务数据文档symbols标的代码, 多个代码可用(英文逗号)分割, 也支持这种列表格式,使用时参考symbol。

量化交易研究 3227

掘金量化实盘开发分享

掘金量化实盘策略介绍

wuyan8866的博客 2194

如何使用掘金进行量化策略绩效分

原 如何使用掘金进行量化策略绩效分析? 自掘金量化绩效分析推出后,受众多掘金用户的热烈反响,今天掘金小Q给大家整理下掘金绩效分析的使用指引,帮助大家快速入手使用。 一、掘金绩效分析功能特点 1.专业分析引擎 用高仿真清算模型,清算准确,处理效率高,完整重现交易场景 2.可交互分析图表 提供动态可交互的模型界面,让投资细节和全局一目了然 3.分析全面 绩效分析包含多指标、多模型,能够全面剖析交易特点...

塞尔达的传说 2584

从小市值因子策略入手,带你入门量化投资 (附年化收益率77.83%策略)

随着量化投资在国内的兴起,越来越多的人开始研究量化投资。可其中有不少人在学习代码、研究策略的过程中败下阵来,但量化投资其实也可以很简单。 今天,我们以经典的小市值因子策略为例,为大家演示如何借助掘金量化终端(以下简称“掘金终端”)入门量化投资! 开始编前,先确认我们的交易标的、交易时间以及交易逻辑,这设置如下: 交易标的:全市场A股股票(剔除停牌、ST股、次新股) 交易时间:每月第一个交易日,调仓换股 交易逻辑:等权买入市值最小的N只股票 接着,打开掘金终端,在“量化研究”的板块下新建一个策略。

量化交易研究 4496

【原创】关于自身表的外键触发器实现

    目前遇到这样一个外键定义: `t_girl`.`tb1`   CONSTRAINT `fk_1` FOREIGN KEY (`r_id`) REFERENCES `tb1` (`id`) ON DELETE CASCADE   目的是对于自己的另外一个字段进行约束, 其实这样看来, 后面的级联删除就没有必要了,因为针对的是同一张表的同一条记录。 /* Trigger stru...

weixin_33801856的博客 175

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

策略创建运行流程 1.创建运行策略 1.1创建策略 打开“掘金量化3.0”客户端,进入“我的策略”-“新建策略”,如下所示: 平台本身提供了很多经典策略,选择“空策略”,命名为“量化策略示例”,代码如下: # coding=utf-8 from __future__ import print_function, absolute_import from gm.api import * # 策略中必须有init方法 def init(context): pass ...

weixin_38496610的博客 6569

laravel只读取指定的$request数据

只获取指定$request数据可以用 $request->only() 或者只排除指定数据 $request->except() public function goods(Request $request) { //获取全部数据 $all = $request->all(); //只获取name和type $only = $request->only('name','type'); //获取除了type的所有数据

lion的博客 983

使用.NET搭建基于掘金平台的量化交易框架

以下我就按照最简单的,做一个策略,每天下午14点55分执行一次判断,需要订阅数据推送,订阅的数据,需要在重OnTick函数面接收,然后在尾盘55分时候执行判断是不是符合规则。如果你需要通过程序化进行交易,你需要先和你的券商客户经理了解,有没有和掘金量化平台合作,有合作的话,自行申请量化交易权限以后,再找掘金平台提供指定券商的股票版本进行使用,不然是没办法盘中程序化交易的。合规说明:本文章仅供学习交流使用,文中涉及到的投资策略、操作方式、提及的个股等等,均是技术性演示使用,仅供技术性学习参考,

dotNET跨平台 557

量化交易系统开发-实时行情自动化交易-8.12.掘金Myquant平台

掘金(MyQuant)是一个强大的量化交易平台,支持从策略开发、回测到实盘交易的全流程操作。其特点包括灵活的Python编程接口、多市场支持(股票、期货、外汇等)、高效的数据处理和回测引擎,以及一键部署实盘交易的能力。

fengbuyu的博客 3350

量化交易策略专题一】之-----双均线结合通道突破择时策略

量化交易策略专题一】之-----双均线结合通道突破择时策略

qq_73684871的博客 3893
上一篇: 收藏上全募金资模式及策略
下一篇: 投资中的N种知差有款败
与大
博客等级 码龄7年 57粉丝 195原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值