利用Backtrader进行期权回测之三:导入期权数据

本文详细介绍如何使用Backtrader进行期权回测,包括从PandasDataFrame加载数据、定义额外数据指标、处理多个期权数据及解决期权开始日期不一致的问题。

在前面的例子里,我使用的是从雅虎财经获取的股票数据。要回测期权的话,需要导入从通达信获取的数据。如何下载和解析通达信期权数据请参考:利用BackTrader进行期权回测之一:获取期权数据

为了加载自己的数据,Backtrader提供了两种常用方法:

  • 从CSV文件加载
  • 从Pandas DataFrame加载数据

从DataFrame加载数据

如果我已经有了如下图这样一个dataframe:
图1:期权数据dataframe
注意,backtrader要求至少有6列数据,包括:日期,最高价,最低价,开盘价,收盘价,成交量。

有个这个dataframe以后,加载数据就可以通过创建一个PandasData实例来实现:

from backtrader.feeds import PandasData

# 从dataframe加载数据
data = PandasData(dataname=df, datetime=-1)

# 添加数据到回测引擎
cerebro.adddata(data)

在创建PandasData的时候,参数datetime=-1表示“交易日期”通过列名自动识别。如果在dataframe中日期列的名称不是“datetime”,除了修改dataframe列名以外,还可以使用下面的方法。

  • 通过一个字符串指定日期列的名称:
# 日期列的名称是“col_name”
data = PandasData(dataname=df, datetime='col_name')
  • 或通过一个整数指定日期列在第几列:
# 日期列在第1列
data = PandasData(dataname=df, datetime=1)

如果datetime参数没有指定(相当于datetime=None),PandasData会尝试从dataframe的索引中获取日期。

其它列与之类似,可以使用标准的列名high,low,open,close,volume;也可以指定列的名称和位置。如果没有指定,则会自动根据列的名称去匹配。

加载数据以后,就可以在策略类中访问数据了。

添加额外的数据指标

对于期权来说,通常除了价格和成交量以外,还需要增加一些重要的指标,比如期权到期时间等。那么应该怎么办呢?

通过扩展一个新的数据加载类,可以很方便地在这个类中定义新增的数据。

现在我dataframe中新增了两列数据,分别是ttm(到期时间)和impvol(隐含波动率),如下图所示:

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值