借助akshare数据源,通过numpy.where函数进行量化回测。

import akshare as ak
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
from datetime import timedelta
import  warnings
warnings.filterwarnings('ignore')
import matplotlib.pyplot as plt
%matplotlib inline

end =datetime.now().strftime('%Y-%m-%d')
start = (datetime.now()-timedelta(days=10000)).strftime('%Y-%m-%d')
stock = '603719'

data =  ak.stock_zh_a_hist(symbol=stock, period="daily", start_date="19900301", end_date='20230218', adjust="")
data['日期'] = pd.to_datetime(data['日期'], format='%Y-%m-%d')
data.rename(columns= {'日期':'date','开盘':'open','最高':'high','最低':'low','收盘':'close','成交量':'volume'},inplace=True)
data.set_index('date',inplace=True)

plt.figure(figsize=(16,9))
data['close'].plot()
plt.grid()
plt.show()

 

import matplotlib.pyplot as plt
%matplotlib inline

initial_cash = 100000.00
trading_signal['stock'] = trading_signal['order']*trading_signal['price']
trading_signal['cash'] = initial_cash-(trading_signal['order'].diff()*trading_signal['price']).cumsum()
trading_signal['total'] = trading_signal['stock'] + trading_signal['cash']+trading_signal['cost']
#trading_signal.fillna(0,inplace=True)
plt.figure(figsize=(16,9))

plt.plot(trading_signal['total'],label='total asset')
plt.plot(trading_signal['order'].cumsum()*trading_signal['price'],'--',
        label='stock value')

#plt.xticks([0,120,240])
plt.grid()
plt.legend(loc='best')
plt.show()

 

Logo

专业量化交易与投资者大本营

更多推荐