原创内容第699篇,专注量化投资、个人成长与财富自由。
上周发了一个策略:基于backtrader实现人工智能LOF的择时,optstrategy实现最优参数搜索(年化从9%提升至15.4%)
星球里有同学问我,为何选择人工智能LOF,是有什么深意吗?言下之意是你不会挑一个本身就涨得好的吧?
其实就是随手挑。或者这么多当下人工智能很火吧,选择一个好的ETF总没有错。
为避免误会,咱们就从传统宽基来看参数调优过程。
创业板的动量策略:
import sys from matplotlib import rcParams rcParams['font.family'] = 'SimHei' import backtrader as bt import pandas as pd class roc_trend(bt.Strategy): # 参数定义 params = dict( period=20, # 动量周期 upper=8, lower=0, ) def __init__(self): self.roc = bt.indicators.ROC(self.data, period=self.p.period) def next(self): if not self.position: # not in the market if self.roc[0] > self.p.upper / 100.0: self.order_target_percent(self.data, 0.99) # enter long # self.buy() # enter long elif self.position.size > 0 and self.roc[0] < self.p.lower / 100.0: # in the market & cross to the downside self.close() # close long position from backtrader_extends.engine import Engine symbol = '159915.SZ' e = Engine(symbols=[symbol]) if __name__ == '__main__': e.run_strategy(roc_trend,period=20,upper=8,lower=-0) # e.optstrategy(roc_trend, period=range(6, 30, 2), upper=range(1, 10, 1), lower=range(-5, 0, 1)) e.show_result_empyrical()
年化17.5%:
之前的参数设定为(20,8, 0)已是比较优的参数。
经过充分调优参数,最优参数为:(20,3,-2),年化收益19.2%。
咱们的模板里我已经带了多线程调参,所以单标的择时的话,性能还是可以的。当然决定你需要搜寻的参数空间。
AI量化实验室 星球,已经运行三年多,1200+会员。
quantlab代码交付至6.X版本,含几十个策略源代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持backtrader和bt引擎,每周五迭代一次,代码和数据在星球全部开源。
作者:AI量化实验室(专注量化投资、个人成长与财富自由)
当下调侃最令人无力的一句话:“读了那么多书,懂那么多道理,却过不好这一生“。
这里潜台词是自己已经很努力了,就怪外界环境,或者运气不好,出身不好等等。
这句话看似很在理,实则有根本性的逻辑错误。
读书,懂道理是向在归因,你希望自己成长。过不过得好这一生,即所谓成功,是向外归因,就赖他们。
听了几本书,刷了几个短视频,觉得自己好努力,看了几个观点,觉得自己天上地下无所不知了。
——这里读了和读懂是有区别的,看起来懂和真的懂,懂了会用,会用真的去用是天差地别的。
我确实见过读了不少历史书的爱好者,但他读的都是故事,你要聊某一个细节,正史野史他张口就来。
但他说不出所以然,没有规律总结,更谈不好用什么样的历史观去读历史。信息越多,反而越混乱。
知识需要生长在自己的认知体系上,然后反复去践行,反复修正认知。——人至践,则无敌。
成长到成功之间的鸿沟就是做,持续做对的事情。
我们总高估1-2年的成就,却低估3年,5年,10年的收获。
暴躁是因为能力不足,劳苦是因为方法不对。
扩展 • 历史文章
• 如何把一个9.5%的策略优化至年化19%?| quantlab6.1代码发布:backtrader择时策略模板
▼点击阅读原文,访问“AI量化实验室”策略集合
(http://www.ailabx.com/mall)。