Python量化交易:如何用不到20行代码实现回溯检验

本文介绍了Python量化交易中如何通过不到20行代码进行回溯检验,探讨了向量化和事件驱动回测的区别,强调了对数收益率在策略分析中的作用。文中提供了一个简单的趋势跟随策略示例,展示了参数优化的重要性,并指出回溯检验的价值在于快速策略评估和初步分析。
摘要由CSDN通过智能技术生成

假设您有了一个交易策略,接下来怎么做?实盘交易测试策略的有效性?不,在使用资金进行冒险前,应该先对策略进行回溯检验,在历史数据上测试策略是否有效。

什么是回溯检验?

回溯检验(backtest):在历史数据上测试策略的有效性。通过模拟进场,平仓和资金管理,然后计算夏普比率和最大回撤等业绩指标,获取策略表现的相关信息。

回溯检验并不是完美地复制过去,有很多因素导致无法精确建模,例如无法准确估计滑点和自有订单对市场的冲击等,研究员也可能因为经验不足而犯下一些错误,例如前瞻性偏差和过度拟合,最终导致策略的表现比真实好得多。

向量化回测 vs 事件驱动回测

回溯检验有两种方式:向量化(vectorized)和事件驱动(event-driven)。

事件驱动回测涉及到模拟市场价格和策略信号的交互,例如在新的tick或K线形成时计算指标和信号,然后模拟订单成交。这种方式更逼近现实,但会花费更多时间。

相反向量化回测只需要收集与策略相关的数据,并将它们组织成向量和矩阵,然后通过简单的线性代数进行处理,模拟过去的表现。因为只需要进行简单的矩阵计算,向量化回溯比事件驱动回测要快得多,但它缺乏灵活性,无法模拟订单成交等细节。

向量化回测用于探索性策略分析,事件驱动回测适用于深入分析。当您有一个初步想法时,可以先进行向量化回测,快速评估模型是否盈利,只有探索分析的结果令人满意,才值得花时间深入研究。

对数收益率

在开始写代码前,还需要明白一个概念:对数收益率(log-return),我们会使用对数收益率计算策略收益。

对数收益率计算公式为:
在这里插入图片描述

假设3个交易日的对数收益率分别为 r 1 , r 2 , r 3 r_1, r_2, r_3 r1,r2,r3,那么第三个交易日的累计收益率是多少?只需要把3天的对数收益率相加即可,推导如下:

在这里插入图片描述

1. 准备数据

从蜂鸟数据下载黄金的日图历史价格。大家可以到蜂鸟官网注册,获取API密钥,免费获取金融数据。

import os

import requests
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import talib

%matplotlib inline

plt.style.use("ggplot")
params = {
   
    "symbol": "XAUUSD",  # 现货黄金ID
    "start_date": "2003-01-01",
    "end_date": "2020-08-05",
    "apikey": os.getenv("TROCHIL_API")  # 使用您的API密钥
}
resp = requests.get("https://api.trochil.cn/v1/forex/history", params)
data = pd.DataFrame.from_records(resp.json(
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值