量化投资回测教学之掌握矢量化回测

量化投资回测教学之掌握矢量化回测

1. 什么是回测?

回测用于模拟交易策略的过去表现。

回测的核心概念是通过回溯时间来模拟给定的交易策略,并像过去一样执行交易。产生的利润通常通过一些指标(例如最大回撤、夏普比率、年化回报等)与基准表现进行比较。根据策略的性质,应该使用不同的基准和指标,但这本身就是一个完整的主题,所以我不会在这里详细介绍。

回测用于模拟交易策略的过去表现。回测的核心概念是通过回溯时间来模拟给定的交易策略,并像过去一样执行交易。产生的利润通常通过一些指标(例如最大回撤、夏普比率、年化回报等)与基准表现进行比较。根据策略的性质,应该使用不同的基准和指标,但这本身就是一个完整的主题,所以我不会在这里详细介绍。

回测不是过去表现的准确指标,不应该用作研究工具,尤其是在没有经验的手中。有趣的是,回测并不是一个很好的指标,如果你能回到过去,你今天会有多富有。抛开时间旅行不谈,几乎不可能准确地复制过去的表现,因为有许多因素过于复杂而无法准确建模(滑点、交易的市场影响等)。

2. 回测不是什么

回测不是过去表现的准确指标,不应该用作研究工具,尤其是在没有经验的手中。

有趣的是,回测并不是一个很好的指标,如果你能回到过去,你今天会有多富有。抛开时间旅行不谈,几乎不可能准确地复制过去的表现,因为有许多因素过于复杂而无法准确建模(滑点、交易的市场影响等)。此外,在没有经验的人中,回测可能充满偏差(例如,前瞻偏差、幸存者偏差等),这会使策略看起来比实际情况好得多(参见第 5.3 节)。
最后,回测不是研究工具。不要仅仅因为在回测中看起来更好就随意更改您的策略参数。您应该将市场的历史表现视为随机变量的许多可能实现之一。在没有合理经济逻辑的情况下将您的参数拟合到回测将不可避免地导致过度拟合。

3. 事件驱动与向量化回测

矢量化回测比事件驱动回测快得多,应该用于策略研究的探索阶段。
回测策略有两种主要方法:
(i)事件驱动

事件驱动的回测通常涉及使用随时间迭代的循环,模拟根据市场信号发送订单的代理。这种基于循环的方法非常灵活,允许您模拟订单执行中的潜在延迟、滑点成本等。

(ii)矢量化。

相反,矢量化回测收集策略相关数据并将它们组织成向量和矩阵,然后通过线性代数方法(您的计算机非常擅长的东西)进行处理,以模拟过去的表现。由于线性代数的表达能力,向量化回测比事件驱动回测快得多,尽管它缺乏灵活性。通常,矢量化回测更适合初始探索性策略分析,而事件驱动回测适合更深入的分析。

Pandas 回测交易策略 — 矢量化回测

1-读取股票数据

df = pd.read_csv('000001.csv',index_col=0)

计算日收益率

计算交易信号 和 收益率

w1=22
w2=55
df['close'] = df['收盘']
df['SMA1'] = df['收盘'].rolling(w1).mean()
df['SMA2'] = df['收盘'].rolling(w2).mean()

这里我们使用收益率

w1=22
w2=55
df['return'] = df['收盘'].pct_change()
df['asset_return'] = df['收盘'].pct_change()
df['SMA1'] = df['收盘'].rolling(w1).mean()
df['SMA2'] = df['收盘'].rolling(w2).mean()

# 资产的收益率
df['asset_return'] = df['asset_return'].fillna(value=0)# 资产的收益率

计算持仓

df['position'] = np.where(df['SMA1'] > df['SMA2'], 1, 0)

关于前瞻偏差的快速说明

在上面的例子中,位置向量/矩阵总是移动 1 个时间步长。这样做是为了避免前瞻性偏差,这会使策略看起来比现实好得多。这个想法是:在时间t,您有一个包含直到并包括t信息的信号,但您只能在t+1时实际交易该信号(例如,如果您的信号包含周一晚上发布的公司的收益信息,那么您只能在周二早上交易该信息)。

如下所示,前瞻性偏差会使策略看起来比现实更有希望(尤其是对于“动量”策略)。
在这里插入图片描述

这里我们获取到了净值曲线

在这里插入图片描述

模拟手续费

rate = 0.00025 # 万一手续费

有无手续费的对比

在这里插入图片描述

评估延迟的稳健性

使用矢量化回测,更容易评估策略对延迟的鲁棒性(即在信号后 T 个时间步长打开您的交易)。然而,这是一种在高频交易级别更有用的分析,其中延迟会严重影响性能。

在这里插入图片描述

StudyQuant介绍

StudyQuant - 站在巨人的肩膀学习,项目制的在线量化投资学院。本学院基于新颖技术和人工智能,打造量化交易体系和多元化量化投资策略,并在多个交易市场进行自营交易。我们旨在帮助零基础的学员,通过几个月的时间,系统掌握量化投资的专业技能,助力拿到高薪Offer。

谢谢大家收看免费进量化群 V: studyquant88

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回测投资策略是通过历史数据模拟和评估投资策略的效果。以下是使用Matlab进行回测投资策略的一般步骤: 1. 数据获取:首先,从可靠的数据源获取历史股票价格数据和相关指标数据。可以使用Matlab提供的数据接口或者下载CSV格式的数据进行导入。 2. 策略规则定义:根据投资策略的原则和规则,编写相应的代码。例如,可以定义股票买入和卖出的条件,设置止损和止盈条件等。 3. 回测框架搭建:在Matlab中,可以使用时间序列数据和策略规则定义一个回测模型。使用backtest函数,传入历史数据和策略规则,并设定投资组合的初始资金等参数。 4. 交易回放:根据历史数据的时间顺序,按照策略规则进行模拟交易。在每个交易时间点,根据买入和卖出条件执行相应的操作,并计算持仓和收益等数据。 5. 绩效评估:在回放完成后,可以通过计算各项指标来评估策略的绩效,包括收益率、年化收益、最大回撤等。可以使用Matlab提供的性能测量和回撤绘制函数来计算和可视化绩效指标。 6. 参数调优和验证:根据绩效评估的结果,可以对投资策略进行参数调优。可以尝试不同的参数组合,并比较其绩效指标,选择最佳的参数组合。 7. 结果分析和优化:对回测结果进行分析,理解策略的优点和不足,并进行优化和改进。可以根据实际情况,进一步研究和改进投资策略。 总之,使用Matlab回测投资策略的关键是获取历史数据、定义策略规则、构建回测框架、评估绩效和进行参数调优。通过不断地回测和优化,可以提高投资策略的效果和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值