Python回测教程:5分钟学会用Backtrader测试你的策略

为什么需要回测?

在实盘之前,你得知道策略在过去的表现怎么样。这就是回测(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 

结果解读

  • 年化收益
  • 最大回撤
  • 胜率

注意事项

  1. 历史数据不代表未来
  2. 要考虑手续费和滑点
  3. 过拟合是大坑

下期讲如何优化策略参数。


免责声明:本文仅供技术学习交流,不构成任何投资建议。股市有风险,投资需谨慎。

发表评论