为什么需要回测?
在实盘之前,你得知道策略在过去的表现怎么样。这就是回测(Backtest)的意义。
工具选择
Python最流行的回测框架是Backtrader,简单好上手。
环境安装
pip install backtrader
pip install pandas
pip install akshare
完整策略代码
import backtrader as bt
import akshare as ak
import pandas as pd
# 获取数据
df = ak.stock_zh_a_hist(symbol="000001", period="daily",
start_date="20200101", end_date="20231231")
df["datetime"] = pd.to_datetime(df["日期"])
df.set_index("datetime", inplace=True)
# 简单均线策略
class SMAStrategy(bt.Strategy):
params = (("ma_short", 10), ("ma_long", 30),)
def __init__(self):
self.sma_short = bt.indicators.SimpleMovingAverage(
self.data.close, period=self.params.ma_short)
self.sma_long = bt.indicators.SimpleMovingAverage(
self.data.close, period=self.params.ma_long)
def next(self):
if self.sma_short > self.sma_long and not self.position:
self.buy()
elif self.sma_short
结果解读
- 年化收益
- 最大回撤
- 胜率
注意事项
- 历史数据不代表未来
- 要考虑手续费和滑点
- 过拟合是大坑
下期讲如何优化策略参数。
免责声明:本文仅供技术学习交流,不构成任何投资建议。股市有风险,投资需谨慎。