的中率とシャープレシオの関係

「ディープラーニングで株価予測的中率が70%!」みたいな情報をあちこちで見かける。その真偽は置いておいて、的中率が何%というのはシャープレシオに置き換えるとどのくらいなのかということを考えてみる。

単純化のために、ここでいくつかの仮定を置く。

先ず、ボラティリティは1.0で固定とする。固定でさえあれば、実際にはどの数値でも結果は変わらない。

次に1年当たりのトレード数を260回とする。これは数値を変えると結果も変わるので動かせない。この数値は1年当たりの営業日が260日であることに基づく。また、ディープラーニングや機械学習で株価予測を試みる人はデータとして日足を使っていることが多いように思われる。したがって、260回という数値を使うのは妥当だと考える。イメージとしては毎日、上がるか下がるかを予測して売買し、1日の損益の絶対値は常に一定、と考えればいい。

最後にコストは考慮していない。

さて、検証結果によると

シャープレシオ = 32.2490309932 * 的中率 + (-16.1245154966)

という関係にあるようである。

上の計算式を見れば分かるが、的中率が5%上昇するだけでシャープレシオは約1.61上昇する。的中率で見ると、5%くらい大した違いではないように思うかもしれないが、これは大変な改善なのである。もし的中率が70%であったら、

シャープレシオ = 32.2490309932 * 0.7 + (-16.1245154966) = 6.4498061986399975

となる。

シャープレシオが3.0に達するなら、それは素晴らしい戦略だろう。6.0を超えるとなると、もはや尋常ではない。言い換えれば、的中率が70%に達するというのは尋常ではないのである。

他人が主張する的中率を信じるか否かはお任せする。だが、それが本当なのだろうかということはじっくりと考えて欲しいものである。

サンプルプログラム

○以下のコマンドをSpyderの「IPython console」にコピー&ペーストして「Enter」キーを2回押す。

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit

def create_model(accuracy, slope, intercept):
    return slope * accuracy + intercept

start = 50
end = 105
step = 5
n = int((end - start) / step)
accuracy = np.array(range(start, end, step)) / 100
sharpe_ratio = np.empty(n)
volatility = 1.0
trades = 260
for i in range(n):
    ret = (((volatility * accuracy[i]) - (volatility * (1.0 - accuracy[i])))
        * trades)
    risk = volatility * np.sqrt(trades)
    sharpe_ratio[i] = ret / risk
popt, pcov = curve_fit(create_model, accuracy, sharpe_ratio)
slope = popt[0]
intercept = popt[1]
ax=plt.subplot()
plt.plot(accuracy, sharpe_ratio, label='Actual Value')
plt.title('Sharpe ratio and Accuracy')
plt.xlabel('Accuracy')
plt.ylabel('Sharpe ratio')
plt.xlim(0.5, 1.0)
plt.text(0.05, 0.9, 'Slope = ' + str(slope), transform=ax.transAxes)
plt.text(0.05, 0.85, 'Intercept = ' + str(intercept), transform=ax.transAxes)
plt.legend(loc="lower right")
plt.savefig('sharpe_ratio_accuracy.png', dpi=150)
plt.show()
plt.close()
print('Slope = ', slope)
print('Intercept = ',intercept)
(2016/12/04更新)

コメント

非公開コメント