backtrader策略库:基于bt外调仓表的多因子选股策略

扫地僧教程中的多股操作定期再平衡案例,是一种多因子选股策略,它是在backtrader内部,定期选股,确定各股权重(采用的是等权法)。

另外一个思路是,将选股和确定权重的逻辑在backtrader外部做,形成类似如下的调仓表,该表按月调仓(再平衡),并给出了各选定股票的权重:

然后再将调仓表传给 Backtrader ,让 Backtrader 读取调仓表上的信息,进行策略回测。调仓表上存的选股结果,其实就是每个调仓日应该持有哪些股票以及对应的持仓权重。

以下给出策略源码,核心思想是:

  • 在 __init__() 中一次性读入调仓表,从调仓表中提取出调仓日期;
  • 在 next() 中判断当前回测时间点是否为调仓日:如果是调仓日,对被剔除的标的进行平仓,买入新增的标的;如果是非调仓日,不触发下单操作。

 

import backtrader as bt
import pandas as pd
import datetime

# 回测策略
class StockSelectStrategy(bt.Strategy):
    '''多因子选股 - 基于调仓表'''
    def __init__(self):
        # 读取调仓表,表结构如下所示:
        #       trade_date  sec_code    weight
        # 0     2019-01-31  000006.SZ   0.007282
        # 1     2019-01-31  000008.SZ   0.009783
        # ...   ...         ...         ...
        # 2494  2021-01-28  688088.SH   0.007600
        self.buy_stock = pd.read_csv("./data/trade_info.csv", parse_dates=['trade_date']) 
        # 读取调仓日期,即每月的最后一个交易日,回测时,会在这一天下单,然后在下一个交易日,以开盘价买入
        se
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值