top of page
  • 執筆者の写真bookloveru2

琉球銀行の経常利益(2022年3月期)を沖縄県の新型コロナ感染者数から予測する

更新日:2022年12月13日



こんにちは。乞食です。


皆さん、ワクチンの接種は終わりましたか?



相変わらず10万人あたり感染者数が全国ワーストの沖縄県の経済状況を見ていくことにしました。

(2021年10月18日までの情報を表示)


https://www3.nhk.or.jp/news/special/coronavirus/data/

NHKより



沖縄県の経済状況を把握するうえで、欠かせない金融機関の業績推移。

新型コロナでどんな影響が出ているのか?


創業70年を超える「なが~いおつきあい」をモットーとする琉球銀行を例に考察します( ゚Д゚)


※本考察はワクチンで熱発中の一個人の見解であり、実際の同行の業績や沖縄県の経済状況・ワクチン接種状況等には、一切関係が無いことを事前に申し上げます。


 

目次

❶沖縄県の新型コロナ感染状況

❷琉球銀行の決算状況

❸予測結果『琉球銀行(8399)の2022年3月期の経常利益は前期比3倍の11,741百万円!?』

❹おまけ:琉球銀行の株価予測

 

❶沖縄県の新型コロナ感染状況

まず最初に同県の新型コロナ感染状況のデータをNHKより入手します。

https://www3.nhk.or.jp/news/special/coronavirus/data/pref/okinawa.html



covid_Oki
.csv
Download CSV • 25KB


Google ドライブに同ファイルをアップロードして、colabで読み込みます。👇


# @title Google Drive に置いたCSVを読込(ここではMy Drive後の【covid_Oki.csv】を読んでいる)
import pandas as pd
# @title エクセルでいう「A行をindexにしたい」場合。CSVを読み込むときに、『index_col="A行"』とするとOK。『parse_dates=True』でindexは日付データだと認識させる。

df = pd.read_csv('/content/drive/My Drive//covid_Oki.csv',index_col="日付",parse_dates=True, encoding="shift-jis")
df



次に、不要な県コードなどを削除します。👇

# @title 県コード、累計を削除
df = df.drop(columns=df.columns[[0,1,4]])
df


ここで、データの基本統計量を見ていきます👇



# @title df基本統計量
display(df.describe())
print("====================================================")
print(df.info())

2021年10月9日時点の累計感染者数は49,865人。

1日あたりの新規感染者数平均は78人。

といった感じです。





更に、感染状況をグラフにしてみていきます。👇


# @title covidグラフ表示
import matplotlib.pyplot as plt
import japanize_matplotlib
import numpy as np


#グラフの箱サイズ
df.plot(figsize=(10,8),fontsize=16,grid=True)
#凡例の位置
plt.legend(loc = 'upper left', bbox_to_anchor=(0, 1), borderaxespad=0, fontsize=16)

こうして見ると、8月~9月に感染者のピークを向かえ、10月19日現在は落ち着きを取り戻している状況ということが分かります。


しかし、新聞などで専門家も指摘するよう、残念ながら第六波が来ることは避けられないでしょう((+_+))




ここで、第六波が来ると仮定して、時系列分析で有用なfacebookのライブラリで、沖縄県のコロナ感染者数がどのように推移していくかを予測してみます。👇


#@title Prophetで時系列予測(非線形)
periods =  180#@param {type:"number"} 予測期間
from fbprophet import Prophet
import datetime
#トレンドの変化転換点を描画する関数
from fbprophet.plot import add_changepoints_to_plot

#x軸(ds)に時系列日付を。y軸に説明変数を。
covid = pd.DataFrame({"ds": df.index.values, "y": df["沖縄県の感染者数_1日ごとの発表数"].values})
model = Prophet(growth="logistic")
# 非線形の上限を設定
covid['cap'] = 1000 
model.fit(covid)
#空のデータフレームを用意。(periods=に何日先まで空データを作るか?入力。frepは頻度。ここではday)
future = model.make_future_dataframe(periods=periods, freq="d")
# 非線形の上限を設定
future['cap'] = 1000

forecast = model.predict(future)

# データをcsvで保存
forecast.to_csv("dat.csv", encoding="utf-8-sig")

# 予測値と、その上下限を表示
display(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])
fig = model.plot(forecast)
#垂直に引かれた赤い破線はProphetがトレンドの変化を特定した場所を示し、
#赤い曲線はすべての季節性を取り除いたトレンドを示しています。
a = add_changepoints_to_plot(fig.gca(), model, forecast)
model.plot_components(forecast)
plt.show()

結果は御覧の通り、右肩上がりです。残念です。

予測値は下図のとおり。来年4月頃の1日当たり感染者数は550人程度。


役に立つかはわかりませんが、予測値のCSVファイルも上げておきます。


dat
.csv
Download CSV • 208KB


以上が、沖縄県の新型コロナ感染者数の状況です。




❷琉球銀行の決算状況

ここからは、琉球銀行の決算状況を見ていきます。

まずは同行の企業規模をホームページより抜粋。

https://www.ryugin.co.jp/corporate/about/profile/






最新の通期連結決算です👇同行IRより

2021年3月期 決算説明資料

https://www.ryugin.co.jp/corporate/ir/tanshin/


単体での経常収益は373億円。

連結での経常収益は572億円。

子会社では琉球リースの経常収益が171億円なので、この子会社の業績も同行の業績に大きく影響しています。


因みに、同リース会社の完全子会社化は平成27年。👇

経常収益が約38%跳ね上がった年ですね。




さて、企業規模がある程度把握できたところで、同行の連結四半期損益計算書の推移を見ていきます。👇


8399
.csv
Download CSV • 1KB

# @title 琉球銀行の四半期損益計算書(連結)
PL = pd.read_csv('/content/drive/My Drive//8399.csv',index_col="日付",parse_dates=True, encoding="shift-jis",thousands=',')
display(PL)
PL.info()





次に、沖縄県経済とコロナの関係です。これは同行作成のIRプレゼンテーション2021年3月期より引用します。👇

https://www.ryugin.co.jp/corporate/ir/presentation/


観光立県である沖縄県にとって、コロナの影響は甚大です。


有効求人倍率の低下も著しいです。


業績の要ともいえる貸出金ですが、新型コロナ関連の融資は、「事業者への資金繰り支援を更に徹底する観点から、いわゆる実質※無利子・無担保・据置最大5年の融資」などの貸出金が多く、儲けのための融資というより、政府主導の倒産させない融資が色濃くでたといった印象でしょうか。

コロナによって伸びた貸出金は、同行の収益には結びつかない。

もしくは、貸倒のリスクが高まるため、引当金を多く計上することになり、減益につながる可能性もありそうです。


これを受け同行では、フォワードルッキングな引当を開始したとのことです。一言でいえば、貸倒引当金を念のため、たくさん計上します。ということです。



以上が、琉球銀行の決算状況です。





❸予測結果『琉球銀行(8399)の2022年3月期の経常利益は前期比3倍の11,741百万円!?』

さて、ざっくりと沖縄県のコロナと琉球銀行への影響が見えてきたところで、コロナ感染者数と同行の業績にどのような関係性があるのかを見ていきます。



金融機関は基本的に日銀の金利政策に大きく影響を受けますので、財務省から日本国債の10年利回りを入手します。👇

https://www.mof.go.jp/jgbs/reference/interest_rate/index.htm


jgbcm_all
.csv
Download CSV • 10KB

# @title 財務省より国債10年利回り取得 https://www.mof.go.jp/jgbs/reference/interest_rate/index.htm
IR = pd.read_csv('/content/drive/My Drive//jgbcm_all.csv',index_col="基準日",parse_dates=True, encoding="shift-jis",thousands=',')
display(IR.head().append(IR.tail()))
IR.info()

IR.plot(figsize=(10,8),fontsize=16,grid=True)

10年国債利回りの推移👇9月末時点で0.081%です。


一般的に金利が低いときに融資した場合、その後の金利が上がってくると、収益がひっ迫します。(融資時点の調達金利は低いが、返済時の金利は上昇しているため)



以上を踏まえて、琉球銀行の業績と沖縄県のコロナ感染者数を一つのデータに纏めます。👇


# @title covid_Okiから説明変数追加
df["RB経常利益"] = PL['経常利益']
df["RB当期純利益"] = PL['当期純利益']
df["金利"] = IR["10年"]
df = df.dropna()
df

沖縄県で初めて新型コロナ感染者が発生したのは、2020年2月14日。

この日から公表された琉球銀行の業績データは5回しかありません。

そのため上記のデータ数は5つとなっています。


ここから、重相関係数みた後、重回帰分析を行いますが、データ数が圧倒的に少ないため、あまり意味のない解析になると思いますが、とりあえず実行していきます( ゚Д゚)



# @title ヒートマップにて相関関係を表示
import seaborn as sns
plt.figure(figsize=(15, 10))
sns.set(style="white") 
# 日本語フォント設定
sns.set(font="IPAexGothic")
sns.heatmap(df.corr(),cmap='Purples',square=True, annot = True)


上図を見る限り、琉球銀行の経常利益と金利は-0.49と負の相関がありそうです。

また、琉球銀行の経常利益と沖縄県の1日当たりコロナ感染者数も-0.4と負の相関がありそうです。



ま、普通に考えると当たり前な気もしますね(*'ω'*)

1.金利が上昇すると、短期的に金融機関の収益が下がる。

2.コロナ感染者が増加すると、消費が減って預金が増える。収益性の低い融資が増え、引当金の増加により金融機関の収益が下がる。

といったところでしょうか。

相関があるからと言って、因果関係があるとは言えませんが今回のケースではなんとなく因果関係もあるように思えます。



データ数が5個なので、無意味ですが一応感染者数と琉球銀行の経常利益を見てみます。👇


# @title 相関が強いものをピックアップ
g = sns.jointplot(x="沖縄県の感染者数_1日ごとの発表数", y="RB経常利益", data=df,
                  kind="reg", truncate=False,
                  color="m", height=7)


次に、重回帰分析です。

説明変数は『金利』と『沖縄県の感染者数_累計』。

応答変数は『琉球銀行の経常利益』。


# @title 重回帰
import statsmodels.api as sm
from sklearn.preprocessing import StandardScaler

# 目的変数(Y)
Y = np.array(df['RB経常利益'])
 
# 説明変数(X)
x = ['金利',"沖縄県の感染者数_累計"]
# 切片がある回帰式にするため、 sm.add_constant()に説明変数を格納
X = sm.add_constant(df[x])
X = np.array(X)
 
# モデルの設定(OLS:最小二乗法を指定)
model = sm.OLS(Y, X)
 
# 回帰分析の実行
results = model.fit()
 
# 結果の詳細を表示
print(results.summary())

結果は、自由度調整済み決定係数:91.5%

P値:すべて5%以下

重回帰式:y = 2,108 - 29,550 * 金利 + 0.1 * 沖縄県の累計感染者数


となりました。


実際に計算してみましょう。

実測値:琉球銀行経常利益 2,187百万円(2022年3月期の第一四半期経常利益)


予測値:2,115百万円 = 2,108 - (29,550 * 0.07%) + (0.1 * 20,757人)


実際の経常利益と予測値の差額は 2,187-2,115 = 72百万円となりました。


最後にこれを、通期で計算します。

2022年3月末の予測金利:0.073%

2022年3月末の予測累計感染者数:117,906人(10/18までの実測50,059人+予測値累計67,847人)


これを重回帰式に当てはめると、

2022年3月期の琉球銀行の通期の連結経常利益は 11,741百万円となります。


2021年3月期の通期経常利益が3,844百万円ですので、

前期比(+205%増)約3倍の経常利益となります!!

バブルです!


というのも、重回帰式が累計感染者数の影響が大きいため、当たり前です。金利が現状と変わらず、第六波により累計感染者数が増えると、当然に予測値は増加します。




業績、感染者数ともに虚しい結果だけが露呈されました(´;ω;`)ウッ…

やはり熱発していると、ろくな解析結果が出ません。

時間の無駄でした。大変残念です。




❹おまけ:琉球銀行の株価予測

バブルのおまけに株価予測もしておきます。

2021年10月19日の終値は783円。

何と!?

2022年3月末時点の株価は896円でした!

更に株価は上昇傾向に????



#@title Prophet(線形)で時系列株価予測(2021.7.4code訂正)
import pandas as pd
from fbprophet import Prophet
from pandas_datareader import data as pdr
import matplotlib.pyplot as plt
import datetime
import yfinance as yf
 
 
stock = "8399.T" #@param {type:"string"}
start = "2020-1-1" #@param {type:"string"} 学習期間
periods =  300#@param {type:"number"} 予測期間
end = datetime.date.today()
 
# データ取得をdrからyfinanceへ変更。2021.7.4
yf.pdr_override() # <== that's all it takes :-)
# download dataframe
data2 = pdr.get_data_yahoo(stock, start, end)
print(data2)
 
#トレンドの変化転換点を描画する関数
from fbprophet.plot import add_changepoints_to_plot
 
#2021.7.3よりpdrがエラーになった。Yahoo!側が拒否したと思われる。よって、yfinanceを使う。
# pdrはコメントアウトで消す。ここにフォームで選択した銘柄と期間が来る
# df = pdr.get_data_yahoo(stock, start, end)
# print(df)
 
#x軸(ds)に時系列日付を。y軸に調整後終値を。
df = pd.DataFrame({"ds": data2.index.values, "y": data2["Adj Close"].values})
model = Prophet()
model.fit(df)
#空のデータフレームを用意。(periods=に何日先まで空データを作るか?入力。frepは頻度。ここではday)
future = model.make_future_dataframe(periods=periods, freq="d")
#土日を除外する
future = future[future["ds"].dt.weekday < 5]
forecast = model.predict(future)
# データをcsvで保存
forecast.to_csv("hoge.csv", encoding="utf-8-sig")
display(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])
fig = model.plot(forecast)

#垂直に引かれた赤い破線はProphetがトレンドの変化を特定した場所を示し、
#赤い曲線はすべての季節性を取り除いたトレンドを示しています。
a = add_changepoints_to_plot(fig.gca(), model, forecast)
model.plot_components(forecast)
plt.show()

果たして、未来はイカほどに🦑❓

さよなら









閲覧数:304回0件のコメント

最新記事

すべて表示
bottom of page