파이썬으로 주가를 시뮬레이션 해 보았습니다.
Python, 주식의 이야기입니다만, 거기까지 어려운 내용까지는 밟지 않으므로 부담없이 읽어 주시면 좋겠습니다.
배경
마지막 기사에서 다음을 알았습니다.
이 지식을 바탕으로 상장 지수 펀드 TOPIX의 미래 주가를 시뮬레이션합니다.
시뮬레이션을 위한 함수 만들기
먼저 위의 지식을 바탕으로 시뮬레이션을 위한 함수를 작성합니다. 이 함수를 실행하면 분포에 따른 주가의 전일 비율이 반환됩니다.
# 関数を定義
def make_return():
loc1 = 1.0005478168389164
loc2 = 0.9971137713072488
scale1 = 0.01024285501985374
scale2 = 0.029152921438795287
# 5%の確率で異常状態の正規分布からサンプリング
if np.random.rand() < 0.05:
a =np.random.normal(loc2,scale2)
svm_result = -1
# 95%の確率で正常状態の正規分布からサンプリング
else:
a = np.random.normal(loc1, scale1)
svm_result = 1
return a, svm_result
이 함수를 10000번 실행한 결과를 시각화합니다. 정상·이상의 2개의 정규 분포를 작성할 수 있는 것을 확인할 수 있었습니다.
# 10000回シミュレーションを実行
return_list = []
svm_list = []
for i in range(10000):
a, svm_result = make_return()
return_list.append(a)
svm_list.append(svm_result)
return_list = np.array(return_list)
df_sim =pd.DataFrame({'return':return_list, 'svm':svm_list})
# シミュレーションの結果確認
plt.hist(df_sim[df_sim['svm'] == 1]['return'], bins = 30)
plt.hist(df_sim[df_sim['svm'] == -1]['return'], bins = 30)
plt.show()
시뮬레이션 실행
20년간의 시뮬레이션을 1000회 실행합니다.
# 結果の箱を作成
df_sim1 = pd.DataFrame()
from tqdm import tqdm
# 1000回シミュレーションを実行
for j in tqdm(range(1000)):
return_list = []
#1年間を240日と考えて、20年後までをシミュレーションする
for i in range(240 * 20):
a,svm_result = make_return()
return_list.append(a)
return_list = np.array(return_list)
df_sim1[j] = return_list
# 累積リターンを計算
df_sim2 = df_sim1.cumprod()
df_sim2.head()
시뮬레이션 결과 시각화
우선 1년간의 시뮬레이션 결과를 시각화합니다. 가로축이 몇일 후인지를 나타내고, 세로축이 주가가 몇 배가 되는지를 나타냅니다. 1년 후에 1배를 밑돌아 버려, 손실이 되어 버리는 그래프의 색은 적색으로 하고 있습니다.
# 結果を可視化
plt.figure(figsize = (15, 4))
num = 0
for i in df_sim2.columns:
# 1年後までを可視化
temp=df_sim2[i].iloc[:240 * 1]
# 最終結果が1以下の場合はグラフを赤色に変更
if temp.iloc[-1] < 1:
plt.plot(temp.index, temp, alpha = 0.2, c = 'r')
num += 1
else:
plt.plot(temp.index, temp, alpha = 0.2, c = 'g')
print("損失が出る確率:{}/1000".format(num))
print("中央値:{:.3f}倍".format(df_sim2.iloc[240 * 1 - 1].median()))
plt.title('シミュレーション結果(1年間)')
plt.ylabel('倍')
plt.xlabel('日')
plt.show()
1000회 시뮬레이션의 결과, 1년 후에 손해를 입을 확률은 34.1%, 중앙값에서는 주가가 1.078배, 즉 리턴이 7.8%인 것을 알 수 있습니다.
마찬가지로 5년 후, 10년 후, 20년 후까지의 시뮬레이션을 그래프로 하면 다음과 같이 됩니다.
20년 후에는 손해를 입을 확률은 5.2%까지 떨어지고, 1000회 시뮬레이션한 경우의 중앙값에서는 주가가 4.125배, 즉 리턴이 312.5%인 것을 알 수 있습니다.
요약
파이썬과 기계 학습을 사용하여 장기 투자의 이점을 보여줄 수있었습니다!
Reference
이 문제에 관하여(파이썬으로 주가를 시뮬레이션 해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Mukai1/items/8b57e9ecc6b01960ef55텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)