![見出し画像](https://assets.st-note.com/production/uploads/images/143910845/rectangle_large_type_2_2deeb45d9e2f71d4ae671041f445ad9e.png?width=800)
日本の自動車メーカーの株価を分析してみよう3
背景
前回まで
親戚に公立学校の教員がいる。今の公立校では「金融教育」とやらを教えてるらしい。その中に投資はポートフォリオをすべしってのがあるらしいが、ポートフォリオとは複数の銘柄(債券なども入るが)に分散投資することですよね?
その親戚の教員は「分散投資すればいいのでしょう?」って、まあ学校の先生は国の教育方針を疑わないですからね。
で、ポートフォリを行ったらどのくらいリスクが減るのか?ホンダの株と組み合わせるべき銘柄は何になるのだろうか。
スクリプト
そのうち公開します。
import yfinance as yf
import numpy as np
import seaborn as sns
import japanize_matplotlib
import matplotlib.pyplot as plt
import random
import math
import statistics
# ダウンロードしたい株式のティッカーシンボル
import nk225dict
keys = nk225dict.my_dict.keys()
# 日経225すべてを読み込む
ticker = list(keys)
print("input ticker = ")
#print(ticker)
# データをダウンロード
data = yf.download(ticker, start='2016-01-01', end='2023-01-01', interval = "1wk")['Adj Close']
print(type(data))
d_fist = [0] * len(ticker)
for i in range(len(ticker)):
d_fist[i] = data.iat[0, i]
# 最下段列の値
d_tail = [0] * len(ticker)
for i in range(len(ticker)):
d_tail[i] = data.iat[-1, i]
# 通算リターン
freturn = [0] * len(ticker)
for i in range(len(ticker)):
freturn[i] = d_tail[i] / d_fist[i]
# 3銘柄をポートフォにした場合は
pf_samplenum = 10000
preturn = [0] * pf_samplenum
for i in range(pf_samplenum):
m1 = random.randrange(0, len(ticker))
m2 = random.randrange(0, len(ticker))
m3 = random.randrange(0, len(ticker))
#print(m1 ,m2, m3)
preturn[i] = d_tail[m1] / d_fist[m1] + d_tail[m2] / d_fist[m2] + d_tail[m3] / d_fist[m3]
preturn[i] = preturn[i] / 3
# 株価データのClose列を辞書で置換
data.rename(columns=nk225dict.my_dict, inplace=True)
print(data)
# 1.0で正規化
data = data / d_fist
print(data)
# プロット
data.plot(kind="line", figsize=(26, 12), grid=True)
plt.show()
#nanを除去
cleaned_data1 = [x for x in freturn if not (isinstance(x, float) and math.isnan(x))]
cleaned_data2 = [x for x in preturn if not (isinstance(x, float) and math.isnan(x))]
# 3.0以上の要素を排除
cleaned_data1 = [x for x in cleaned_data1 if x < 3.0]
cleaned_data2 = [x for x in cleaned_data2 if x < 3.0]
# 平均を計算
average1 = statistics.mean(cleaned_data1)
average2 = statistics.mean(cleaned_data2)
# 分散を計算
var_score1 = statistics.pvariance(cleaned_data1)
var_score2 = statistics.pvariance(cleaned_data2)
# print
print("単一銘柄の平均:", average1, "です。")
print("単一銘柄の分散は", var_score1, "です。")
print("3PFの平均:", average2, "です。")
print("3PFの分散は", var_score2, "です。")
#ヒストグラム
x1 = freturn
x2 = preturn
#plt.hist(x1, range=[0.1, 3], bins=100, alpha=0.5, label="non PF", color='c')
plt.hist(x2, range=[0.1, 3], bins=100, alpha=0.5, label="3 PF", color='c')
plt.legend(loc="upper left")
plt.title('Asset Growth')
plt.show()
#End
結果
最初に、アベノミクス中盤の2016年から2023年までで、2016年に購入し2023年に売却したとしたとして、リターンを計算する。
日経225すべての銘柄の値動き
![](https://assets.st-note.com/img/1718381554327-ESCUyVpsT6.png?width=800)
分析
分散投資を行わなかった場合の、リターンのばらつきを見てみよう。
1.0〜1.5の間が多いようですね。資産額が1.5倍くらいになったのが多かったということです。
![](https://assets.st-note.com/img/1718382011876-PHe0RN6yAy.png?width=800)
ポートフォリオの効果
3銘柄をランダムに組み合わせるとしよう。資産の割合は各33パーセント。10000通りの組み合わせのポートフォリをについて計算した。(全部では(225C3)=1,873,200通りですよね)
単一銘柄の場合とそれほど分布の形が変わらないですよね。
意味なしってこと?
![](https://assets.st-note.com/img/1718382073736-i8RyZQIYZF.png?width=800)
山の形は変わらない?
では、平均と分散を計算しましょう。Growth > 3.0以上の組み合わせは除いてます。
単一銘柄の平均: 1.331675434450855 です。
単一銘柄の分散は 0.31069753833616925 です。
3PFの平均: 1.5024910084263714 です。
3PFの分散は 0.21971996454149367 です。
やはり、平均も分散はそれほど変わらないようです。
(この分散の数値は合ってるのか?)
調べました。
と、いうことです。
上がる株と下がる株を組み合わせ得ないと意味がない?
つまり、相関が重要だってことですよね?(投資素人の私の言葉)
FP3級の教科書にも書いてありました。「相関がマイナスの資産と組み合わせてリスクを軽減する」と。
親戚の教員はそこまでは知らなかったのでしょうね。
2016〜2023の日経225銘柄で計算したファクトとして、適当に3銘柄を選択して投資するのは、一つの銘柄に一点投資するのと「期待値」は変わらないってことです。
「住友商事と神戸製鋼と・・コレもアレもの株を持てって」と語るのを見かけますが、一点投資した場合と期待されるリターンは変わらない?
(投資素人の私の考えです)
ホンダ株と組み合わせる銘柄は?
色々考える、ホンダの株価は右肩上がりでしたから、相関がマイナスの株銘柄と組み合わせたらリターンが下がるのでは・・・
ではどうすれば?
続くのか・・・
この記事が気に入ったらサポートをしてみませんか?