bt_创业成长红利低波_动量轮转年化237最大回撤348

一.效果

bt_创业成长红利低波_动量轮转年化237最大回撤348

二.实现

1.按bt轮转框架格式,每列都是标的代码,获取数据

bt_创业成长红利低波_动量轮转年化237最大回撤348

2.回测

2.1添加策略进行回测

import bt
from bt_algos_extend import SelectTopK
signal = data.pct_change(20)
# signal.dropna(inplace=True)
all = []
for K in [
    1,
]:
    s = bt.Strategy(
        "bt_创业成长+红利低波_动量轮转K={}".format(K),
        [
            SelectTopK(signal, K),  # 先选最好的k个
            bt.algos.WeighEqually(),  # 等权
            bt.algos.Rebalance(),  # 重新平衡
        ],
    )
    all.append(s)
stras = [bt.Backtest(s, data) for s in all]

2.2也可以添加比较基线

for bench in ["000300.SH"]:
    data = CSVDataloader.get([bench])
    s = bt.Strategy(
        bench,
        [
            bt.algos.RunOnce(),  # 执行一次
            bt.algos.SelectAll(),  # 选择所有
            bt.algos.WeighEqually(),
            bt.algos.Rebalance(),
        ],
    )
    stra = bt.Backtest(s, data)
    stras.append(stra)
res = bt.run(*stras)

3.获取回测数据进行分析

# 获取每日收益
returns = res['bt_创业成长+红利低波_动量轮转K=1'].returns
import empyrical
print("累计收益:", round(empyrical.cum_returns_final(returns), 3))
print("年化收益:", round(empyrical.annual_return(returns), 3))
print("最大回撤:", round(empyrical.max_drawdown(returns), 3))
print("夏普比", round(empyrical.sharpe_ratio(returns), 3))
print("卡玛比", round(empyrical.calmar_ratio(returns), 3))
import quantstats as qs
qs.reports.basic(returns)
bt_创业成长红利低波_动量轮转年化237最大回撤348

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/281597
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 1小时前
下一篇 1小时前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注