ファイナンス機械学習:人工データを使ったバックテスト 練習問題 ショートポジションの最適戦略

価格100で開始したショートポジションを90の利益確定と105の損切りを条件にしまう最適戦略を、OU過程を使い、閾値レベルの妥当性と、それに合うパラメータを探す。

 長期期待リターン$${E_0}$$と半減期の$${\tau}$$を、最長保持期間$${maxH}$$と分散$${\sigma}$$を変えて、シャープレシオをヒートマップで示した。

E0=np.linspace(80,106,27)
tau=np.linspace(4,20,9)
sig=[0.6,0.8,1.0,1.2,1.6]

p0=100
T=1
maxH=[5,10,20,30]
rPT=105-p0
rSLm=-(90-p0) # this is rPT for short position 

columns=['E0','tau','mean','std','sr']

for mh in maxH:
    for sigma in sig:
        output=strt_ET(E0,tau,sigma,paths=1e5, maxH=mh,dt=dt,rPT=rPT,rSLm=rSLm,p0=p0)
        df=pd.DataFrame(output,columns=columns)
        sr=df.sort_values(by=['E0','tau'])['sr']
        sr=-1*sr.to_numpy().reshape(len(E0),-1) #Note this is short position
        plt.imshow(sr.T,cmap='viridis', extent=(E0[0], E0[-1], tau[0], tau[-1]), 
              aspect='auto',interpolation='nearest',origin='lower')
        plt.title(f'maxH:{mh}, sigma{sigma}')
        plt.xlabel('E0')
        plt.ylabel('tau')
        plt.colorbar()
        filename=f'./ShortP_maxH{mh}_sig{sigma}.pdf'
        plt.savefig(filename)
        plt.show()
        plt.clf()
$${\sigma=0.6}$$の時の最大保有期間を変えてのヒートマップ
$${\sigma=1.0}$$の時の最大保有期間を変えてのヒートマップ
$${\sigma=1.6}$$の時の最大保有期間を変えてのヒートマップ


いいなと思ったら応援しよう!