年化15.73%:创业板指数布林带突破Backtrader策略(代码+数据)

发布于: 雪球转发:0回复:0喜欢:0

原创文章第582篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。

昨天咱们使用backtrader,重写了创业板动量趋势择时:年化19.2%:backtrader+quantstats实现创业板动量择时(代码+数据)

今天咱们换一个通道指标:布林带——backtrader内置的指数,不需要自己实现,使用默认参数20,2。

# 参数定义
params = (
('period', 20),
('devfactor', 2)
)
def __init__(self):
self.bbands = bt.indicators.BollingerBands(period=self.params.period, devfactor=self.params.devfactor)
self.order = None

下面是策略逻辑——收盘价突破上轨时买入,突破下轨时平仓:

def next(self):
if self.order:
return
if self.data.close[0] > self.bbands.lines.top[0]:
if self.position.size == 0:
commission_info = self.broker.getcommissioninfo(self.data)
cash = self.broker.get_cash() - commission_info.getsize(1, self.data.close[0])
size = cash // self.data.close[0]
self.buy(size=size)
# print(f'BUY: {size} shares')
elif self.data.close[0] < self.bbands.lines.bot[0]:
if self.position.size > 0:
size = self.position.size
self.close(size=size)
# print(f'SELL: {size} shares')

使用empyrical来计算风险、收益指标:

import empyrical as em
max_drawdown = em.max_drawdown(returns)
print('夏普比:%.2f'%em.sharpe_ratio(returns))
print('最大回撤:%.2f'%max_drawdown)
print('年化收益:%.2f'%em.annual_return(returns))

代码所在位置:

代码下载:

AI量化实验室——2024量化投资的星辰大海

empyrical的年化收益计算逻辑:

num_years = len(returns) / ann_factor
# Pass array to ensure index -1 looks up successfully.
ending_value = cum_returns_final(returns, starting_value=1)
return ending_value ** (1 / num_years) - 1

而quantstats——区别在于这个years,它计算的是日期区间,比如20100101-20101231,那就是365天——这里应该取len(returns),它的years偏大,计算出来的年化收益率偏小。

years = (returns.index[-1] - returns.index[0]).days / periods
res = abs(total + 1.0) ** (1.0 / years) - 1

投资,含投机,获利的本质逻辑,是建立概率优势。

结果还是不确定的,但重复博弈结果是有正收益的,这就是一个好的交易系统。

然后咱们再来聊,基本面价值投资(成长型投资),技术分析,量化投资,套利,高频交易等。

普通人做所谓价值投资我是不太看好的。

价值发现的时间,可能是数年甚至更久。这期间会发生什么事情,普通人是没有渠道获知的。

普通人根本判断不了什么是好公司,好的商业模式。

——替代方案是大类资产配置,选择低相关性的长期向上指数,动态再平衡即可。

然后就是偏短线的量化,价量为主,辅以其他一些数据——量化投机。

以控制回撤为前提,获取市场alpha。

从这个意义上看,期货就是一个挺好的选择。

吾日三省吾身

“没有实力做支撑的愤怒毫无意义”。

“你生气,说明你没有赢它的把握”。

不必愤怒,而是持续,抓紧一切机会提升自己,然后潇洒离开那些烂人烂事。

历史文章:

年化19.2%:backtrader+quantstats实现创业板动量择时(代码+数据)

网页链接{年化达21%(K=1),最大回撤35%,K=3时,卡玛比最优,最大回撤20%(年化15.2%)| Quantlab5.0代码发布}

Alpha2:使用深度强化学习挖掘公式化的超额收益因子(附论文及源代码)

AI量化实验室——2024量化投资的星辰大海