Backtesting.py 恒生指数
简介
主要是使用backtesting.py做了个回测,对象是恒生指数,数据源是yahoo finance,策略是基于夏普率的Z-score 配合给定阈值,然后目标是计算9格平均夏普率的夏普率
载入packages
import numpy as np
import pandas as pd
from datetime import datetime
%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
from backtesting import Backtest, Strategy
from backtesting.lib import SignalStrategy
from backtesting.lib import crossover, compute_stats
from backtesting.test import SMA
from yahoo_fin.stock_info import get_data
读取数据
data = get_data("^HSI", index_as_date = True, interval = "1d")
df = data.dropna()
df = df[['open', 'high', 'low', 'close']]
df.columns = ['Open','High','Low','Close']
策略遍历,选择夏普率最高的阈值和周期
SR = []
SR1= []
period = (list(np.arange(5,1000,5))) #4年
threshhold_list = np.arange(0.25,2.75,0.25) #阈值为0.25~2.5,0.25为一跳
for i in threshhold_list:
for j in period:
class Strategy(SignalStrategy):
threshold = i
n = j
def init