【Python】均值回归策略回测(日内高频数据)

该博客介绍了一种基于Python的均值回归交易策略,使用3日简单移动平均线(SMA)作为均值参考,当收盘价偏离均线超过2%时进行买卖操作。文章使用Tick高频数据,但也可适配日收盘价数据。通过观察偏离度和阈值变化,作者展示了策略的交易次数,并计算了盈亏情况,策略在震荡市场中表现出色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章采用均值为SMA(close, time_period = 3日),利用(收盘价 - 三日均线)计算偏离程度。

如果大于阈值(首个收盘价的2%)则开仓买入(卖出)

如果收盘价穿过均线说明均值偏离情况消失平仓。

文章采用Tick高频数据、也可以切换日收盘价数据进行改写。

话不多说上代码:

导出必要包和数据

import pandas as pd
import numpy as np
import datetime
import talib as tl
import warnings
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Kline,Line, Bar, Grid,Scatter

warnings.filterwarnings("ignore")

data = pd.read_csv('你的数据路径')

使用Ta-Lib库计算SMA均线(本文采用Tick数据,如果换成日数据请注意修改参数)  

查看一下偏离度与阈值的变化情况

data = x
data['month'] = data.index.map(lambda x: x.strftime('%Y.%m'))
data['time'] = data.index.map(lambda x: x.time())

# 选取 阈值
threshold = data.close[0]*0.02
data['SMA'] = tl.SMA(data.close, len(data[(data.index.date==data.index.date[0])])*3)
data['distance'] = data['close'] - data['SMA']
data['threshold'] = threshold

df = data[['threshold', 'distance']].resample('1D').last().round(2)
df = df.dropna()
L_ = (
    Line(init_opts=opts.InitOpts(theme=ThemeType.MACARONS, width='900px', height='500px'))
    .add_xaxis(df.index.tolist())
    .add_yaxis("距离",df['distance'].tolist())
    .add_yaxis("下轨",(df['threshold']*-1).tolist())
    .a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Yolimia

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

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

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

打赏作者

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

抵扣说明:

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

余额充值