ファイナンス機械学習: ベットサイズの決定 練習問題 一様分布乱数を用いる

範囲[0.5,1]の一様分布の乱数を10,000個発生させ、$${||X||=2}$$のベットサイズmを得る変数probとする。
 このベットサイズには、カレンダー上の連続する10,000日を割り当てる。さらに、範囲[1,25]の一様分布の乱数10,000個から、この乱数日数だけ前方シフトされたt1列を作る。
後のために、sideの変数も乱数を用いて入れておく。

SampleSize = 10_000
X=2
minP=1./X
maxP=1.

prob = np.random.uniform(minP,maxP,SampleSize)

startDate = datetime(2000, 1, 1)  # Starting at 01-JAN-2000
dateStep = timedelta(days=1)
dates = np.array([startDate + i*dateStep for i in range(SampleSize)])

shiftList = np.random.randint(1, 26, SampleSize)
shiftDt = np.array([timedelta(days=np.float64(d)) for d in shiftList])
datesShifted = dates + shiftDt
t1 = pd.Series(data=datesShifted, index=dates)

Events = pd.DataFrame({'t1': t1, 'prob': prob})

Events['side'] = 2*np.random.randint(low = 0, high = 2, size = SampleSize)-1

Events
乱数を用いたダミーのトリプルバリアイベント

このprobを用いてベットサイズを計算し、平均アクティブなベットサイズを計算する。

Events['z']=Events["prob"].apply(lambda prob: (prob - 1/2) / (prob * (1 - prob))**0.5)
Events["signal"] =Events["z"].apply(lambda z: 2 * norm.cdf(z) - 1)
Events['avgSignal']=avgActiveSignals(Events)
Events.describe() 
一様乱数から得られたベットサイズとその平均サイズ


この記事が気に入ったらサポートをしてみませんか?