見出し画像

日本の自動車メーカーの株価を分析してみよう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すべての銘柄の値動き

nikkei225すべて

分析

分散投資を行わなかった場合の、リターンのばらつきを見てみよう。
1.0〜1.5の間が多いようですね。資産額が1.5倍くらいになったのが多かったということです。

日経225のパフォーマンス分布

ポートフォリオの効果

3銘柄をランダムに組み合わせるとしよう。資産の割合は各33パーセント。10000通りの組み合わせのポートフォリをについて計算した。(全部では(225C3)=1,873,200通りですよね)
単一銘柄の場合とそれほど分布の形が変わらないですよね。
意味なしってこと?

3銘柄ポートフォリオ

山の形は変わらない?
では、平均と分散を計算しましょう。Growth > 3.0以上の組み合わせは除いてます。

単一銘柄の平均: 1.331675434450855 です。
単一銘柄の分散は 0.31069753833616925 です。

3PFの平均: 1.5024910084263714 です。
3PFの分散は 0.21971996454149367 です。

出力

やはり、平均も分散はそれほど変わらないようです。
(この分散の数値は合ってるのか?)
調べました。

と、いうことです。
上がる株と下がる株を組み合わせ得ないと意味がない?
つまり、相関が重要だってことですよね?(投資素人の私の言葉)
FP3級の教科書にも書いてありました。「相関がマイナスの資産と組み合わせてリスクを軽減する」と。
親戚の教員はそこまでは知らなかったのでしょうね。
2016〜2023の日経225銘柄で計算したファクトとして、適当に3銘柄を選択して投資するのは、一つの銘柄に一点投資するのと「期待値」は変わらないってことです。
「住友商事と神戸製鋼と・・コレもアレもの株を持てって」と語るのを見かけますが、一点投資した場合と期待されるリターンは変わらない?
(投資素人の私の考えです)

ホンダ株と組み合わせる銘柄は?

色々考える、ホンダの株価は右肩上がりでしたから、相関がマイナスの株銘柄と組み合わせたらリターンが下がるのでは・・・
ではどうすれば?

続くのか・・・


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