10年10倍,backtrader实现创业板动量策略,附完整python代码
不过,像定投,海龟这样需要精细化仓位管理,以及实盘,回测一体的话,bt框架就心有余而力不足了,传统量化框架里,backtrader还是最为成熟的。backtrader框架还能进行参数优化,网格搜索等,应该这么说,backtrader本身就是可以实盘的框架,它所有策略都可以实现。少折腾没有的事情,不仅内耗,浪费时间,关键是它在持续强化这种习惯,这就是“负复利”的逻辑了。对于轮动策略,bt框架是非常合
原创内容第954篇,专注量化投资,AGI和智能体落地、个人成长与财富自由。
对于轮动策略,bt框架是非常合适的,还有风险平价这样的策略,也是非常之方便,前面几篇文章咱们演示过。
不过,像定投,海龟这样需要精细化仓位管理,以及实盘,回测一体的话,bt框架就心有余而力不足了,传统量化框架里,backtrader还是最为成熟的。
今天的策略,给出动量策略在backtrader里的实现,大家可以与bt框架做一下对比,

# 在Jupyter Notebook中使用backtrader和pyfolio进行高级分析import backtrader as btimport pandas as pdimport numpy as npimport pyfolio as pf%matplotlib inlineimport backtrader as btimport pandas as pdclass RocStrategy(bt.Strategy):params = (('roc_period', 20), # ROC计算周期('buy_threshold', 0.08), # 买入阈值('sell_threshold', 0.0), # 卖出阈值)def __init__(self):self.roc = bt.indicators.RateOfChange(self.data.close, period=self.params.roc_period)self.order = Nonedef next(self):# 取消前一个未完成订单if self.order:self.cancel(self.order)self.order = None# 没有持仓且ROC突破买入阈值if not self.position:if self.roc[0] > self.params.buy_threshold:# 计算可用资金可买数量size = int(self.broker.getcash()*0.98 / self.data.close[0])if size > 0:self.order = self.buy(size=size)#print(f'{self.datetime.date()}: BUY {size} shares at {self.data.close[0]:.2f}')# 有持仓且ROC跌破卖出阈值else:if self.roc[0] < self.params.sell_threshold:self.order = self.sell(size=self.position.size)#print(f'{self.datetime.date()}: SELL {self.position.size} shares at {self.data.close[0]:.2f}')
# 设置回测cerebro = bt.Cerebro()cerebro.addstrategy(RocStrategy)cerebro.adddata(data)cerebro.broker.setcash(100000.0) # 设置初始资金cerebro.broker.setcommission(commission=0.001) # 0.1%佣金# 添加分析器cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='sharpe')cerebro.addanalyzer(bt.analyzers.DrawDown, _name='drawdown')cerebro.addanalyzer(bt.analyzers.Returns, _name='returns')# 添加PyFolio分析器cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')print('回测开始...')results = cerebro.run()print('回测完成!')# 获取策略实例strat = results[0]# 提取PyFolio分析结果pyfoliozer = strat.analyzers.getbyname('pyfolio')returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()# 打印分析结果print('\n===== 策略分析 =====')print(f"夏普比率: {strat.analyzers.sharpe.get_analysis()['sharperatio']:.3f}")print(f"最大回撤: {strat.analyzers.drawdown.get_analysis()['max']['drawdown']:.2f}%")print(f"年化收益率: {strat.analyzers.returns.get_analysis()['rnorm100']:.2f}%")
backtrader框架还能进行参数优化,网格搜索等,应该这么说,backtrader本身就是可以实盘的框架,它所有策略都可以实现。
但对于要实现风险平价,以及多因子机器学习这种呢,会略显麻烦,但可以做到。

我们也会带大家用backtrader来实现如上的策略。
吾日三省吾身
脑袋里奇奇怪怪的想法,尤其是负面的想法,你去分析来分析去,就会越来越强化。甚至你多看它一眼,都是错误。
你越无视,它来的频率,强度都会降低,就是这样。
少折腾没有的事情,不仅内耗,浪费时间,关键是它在持续强化这种习惯,这就是“负复利”的逻辑了。这是要坚决打断的。
找点真正有价值的事情做,如果没有,那就把情绪,把心情写下来。
人生没有什么所谓确定性的。你可以相信前面有好运等着你,但不必去担忧还没有发生的有的没有。担心也没有用,你不知道的事情多着呢。
守好人生的底线,做该做的事情。
我们终归是要失去一切的。
好的,不好的,体验一场,问心无愧。
但行好事,莫问前程。
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
年化收益200%+的策略集 | 实时板块资金热力图 「aitrader 5.0系统代码发布」
机器学习驱动的策略开发通过流程 | 普通人阶层跃迁的可能路径?
年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)
三秒钟创建一个年化28%,夏普比1.25的策略(python系统已开放源代码下载)
更多推荐



所有评论(0)