マクロ経済動向 - 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社) Thu, 21 Nov 2024 06:25:53 +0000 ja hourly 1 https://wordpress.org/?v=6.7 /wp-content/uploads/2024/02/cropped-FEGゴロ-32x32.png マクロ経済動向 - 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社) 32 32 マクロ経済指標を用いたPythonによる銀行引当率の予測 /column/%e3%83%9e%e3%82%af%e3%83%ad%e7%b5%8c%e6%b8%88%e6%8c%87%e6%a8%99%e3%82%92%e7%94%a8%e3%81%84%e3%81%9f%e9%8a%80%e8%a1%8c%e5%bc%95%e5%bd%93%e7%8e%87%e3%81%ae%e4%ba%88%e6%b8%ac/?utm_source=rss&utm_medium=rss&utm_campaign=%25e3%2583%259e%25e3%2582%25af%25e3%2583%25ad%25e7%25b5%258c%25e6%25b8%2588%25e6%258c%2587%25e6%25a8%2599%25e3%2582%2592%25e7%2594%25a8%25e3%2581%2584%25e3%2581%259f%25e9%258a%2580%25e8%25a1%258c%25e5%25bc%2595%25e5%25bd%2593%25e7%258e%2587%25e3%2581%25ae%25e4%25ba%2588%25e6%25b8%25ac Tue, 19 Nov 2024 09:05:41 +0000 /?post_type=column&p=1508 サマリ ・実質GDP、鉱工業生産 生産指数、10年日本国債金利が銀行引当率の先行指標、完全失業率、消 […]

The post マクロ経済指標を用いたPythonによる銀行引当率の予測 first appeared on 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社).

]]>

サマリ

・実質GDP、鉱工業生産 生産指数、10年日本国債金利が銀行引当率の先行指標、完全失業率、消費者物価等は遅行指標に
・いくつかのマクロ経済指標で銀行引当率を予測することはある程度可能
・重回帰モデルで銀行引当率を予測すると、2024年度において引当率は低下傾向、2025年度は上昇傾向だがいずれも低水準

はじめに

日本銀行の金融政策が正常化しつつあり、日本経済はコロナ禍からの回復の兆しを見せています。
今回は、金融機関が将来の貸し倒れに備えて引き当てている貸倒引当金とマクロ経済指標との関係について考察してみます。
背景としては、IFRS第9号の公開草案の公表に向けた検討が進められている中、予想信用損失(ECL)の算出において、フォワードルッキングなパラメータを用いなければならないとされています。
今後、金融機関においてIFRS適用が拡大していくのであれば、例えばデフォルト確率とマクロ経済指標との相関を求めるといった分析局面が出てくると予想されるためです。
尚、本稿では結果が理解しやすいよう、重回帰モデルにより、その関連性を解き明かせるのか試みます。

利用データ

分析に用いたデータは以下の通りです。
図表1のNo.1 引当率を目的変数、No.2~8までを説明変数の候補として分析を行います。

図表1 利用データ

本分析で使用する利用データ内容

分析方針

分析に当たっては、下記の方針で進めます。
・予断を持たずにデータ分析の結果をそのまま信用します。
・景気の1サイクルを5年と想定し、±5年のラグで相関分析(相互相関分析)を事前に行い、各指標の先行性・遅効性を考慮した形で重回帰モデルに投入します。
・市場性の指標(ドル円、無担保コール翌日物、10年国債金利)については、引当率より遅行性が認められる場合には、明らかに正しくない関係と判断し、当該指標を重回帰モデルに投入しません。

分析手順

分析手順は以下の通りです。
①事前に引当率及び各指標に対し標準化変換(平均=0、標準偏差=1)を行います。
②標準化変換後の値が-2~+2の範囲を外れる場合には外れ値とみなし、外れ値を除外した上で再度標準化変換を行います。
③外れ値については、下方の場合には-2、上方の場合には+2を標準化変換後の値とします。
④引当率と指標毎に相互相関分析を行い、相関係数絶対値の最も高いラグ期を当該指標のラグ期とします。
⑤多重共線性のチェックを行い、VIF値が5を超えている場合には、指標間の相関係数値から、単一指標と引当率との相関の低い指標を優先して除外します。
⑥重回帰モデルについては、最初は有効な指標を全て投入し、偏回帰係数のp値が0.05を上回る指標を順次除外する変数減少法とします。
⑦全ての偏回帰係数のp値が0.05を下回った段階でモデルをFIXします。

データ準備

最初に標準化変換を行います。
Python Ver 3.8.5によるサンプルプログラムは以下の通りです。

import pandas as pd
from matplotlib.pyplot import xcorr
from sklearn import preprocessing
#データ読込
dir="/マクロ経済指標と銀行引当率/"
file=dir+"hikiate.csv"
df=pd.read_csv(file)
#標準化
ss=preprocessing.StandardScaler()
yx=df.drop(['fy'],axis=1)
ss.fit(yx)
sdf=pd.DataFrame(ss.transform(yx),columns=yx.columns) # 標準化
#値が-2から+2シグマを外れている場合、-2,2で埋める
mdf=yx.copy()
mdf[(sdf < -2) | (sdf > 2)] = None
#再度標準化
ssdf=pd.DataFrame(ss.transform(mdf),columns=mdf.columns) # 標準化
#値が-2から+2シグマを外れている場合、-2,2で埋める
ssdf[sdf< -2]=-2
ssdf[sdf> 2]=2
sdf=ssdf.copy()

相互相関分析

各指標を-5期から+5期ずらしながら引当率との相関係数を確認し、相関係数の絶対値が最大となる期をラグ期とします。
Pythonによるサンプルプログラムは以下の通りです。

def xc(v1,v2,dst=sdf):
    dd=pd.concat([dst[v1],dst[v2]],axis=1)
    dd=dd.dropna(how='any').reset_index(drop='True')
    lags,xcmp,flg,ax=xcorr(dd[v1],dd[v2],maxlags=5)
    ll=pd.DataFrame(lags,columns=['lags'])
    xx=pd.DataFrame(xcmp,columns=['xcmp'])
    kka=pd.concat([ll, xx],axis=1)
    print(kka)
    return
#gdp
xc('hikiate','gdp',dst=sdf)
'''
    lags      xcmp
0     -5 -0.183534
1     -4 -0.155800
2     -3 -0.160925
3     -2 -0.171269
4     -1 -0.175033
5      0 -0.174922
6      1 -0.216933 <--GDPが1期先行逆相関
7      2 -0.203675
8      3 -0.175982
9      4 -0.183137
10     5 -0.153773
'''

全ての指標について、相互相関分析を行った結果は以下の通りです。

図表2 相互相関分析結果表

指標ごとの引当率に対する相互相関分析結果

方針通り、ドル円はこの段階で投入指標から除外します。

多重共線性のチェック

ラグ期を反映させたデータを作成し、多重共線性のチェックを行います。
尚、分析の際には、各指標のデータ充足期間が異なるため、全てのデータが欠損でないデータ期間を対象とします。
Pythonによるサンプルプログラムは以下の通りです。

x=pd.concat([sdf.gdp.shift(1),sdf.unemply.shift(-2),sdf.infla.shift(-2),sdf.ind_pro.shift(4),sdf.call_on,sdf.rate_10y.shift(5)],axis =1)
y=pd.DataFrame(sdf.hikiate)
yx=pd.concat([y,x],axis=1)
###モデル用データ生成関数
def mk_dat(df=df,dst=yx,drop_v='no'):
    fyx=dst.copy()
    if drop_v != 'no':
        #除外
        for name in drop_v:
            fyx=fyx.drop(name,axis=1)
    #標準化後のデータ
    fyx=fyx.dropna(how='any')
    #インデックスを使って結合
    yyy=pd.merge(df.fy,fyx,left_index=True,right_index=True,how='inner')
    ffy=pd.DataFrame(yyy.fy).reset_index(drop='True')
    fy=pd.DataFrame(fyx.hikiate).reset_index(drop='True')
    fx=fyx.drop('hikiate',axis=1).reset_index(drop='True')
    return ffy,fy,fx
###
ffy,fy,fx=mk_dat(df=df,dst=yx,drop_v='no')
#多重共線性チェック
#各説明変数のVIFを計算
from statsmodels.stats.outliers_influence import variance_inflation_factor
vif=pd.DataFrame()
vif['Features']=fx.columns
vif['VIF']=[variance_inflation_factor(fx.values, i) for i in range(fx.shape[1])]
print(vif)

''''
   Features       VIF
0  gdp        1.483935   実質GDP年度成長率
1  unemply    2.366417   完全失業率
2  infla      2.013692   消費者物価
3  ind_pro    1.318250   鉱工業生産
4  call_on    2.774963   無担保コール翌日物
5  rate_10y   1.712384   10年国債金利
'''

結果としては、VIF値は全て5未満で多重共線性の問題は認められなかったため、重回帰分析に移ります。

重回帰分析

出力される情報量の多いstatsmodels.api ライブラリを用いて重回帰モデルを構築します。
Pythonによるサンプルプログラムと出力結果は以下の通りです。

import statsmodels.api as sm
x_add_const=sm.add_constant(fx)
model_sm=sm.OLS(fy,x_add_const).fit()
print(model_sm.summary())

p値の最も高い消費者物価を投入指標から除外して、再度重回帰モデルを構築します。

p値の最も高い実質GDP年度成長率を投入指標から除外して、再度重回帰モデルを構築します。

p値の最も高い鉱工業生産を投入指標から除外して、再度重回帰モデルを構築します。

全てのp値が0.05を下回ったため、モデル構築は終了です。

ダービンーワトソン比が2を下回っており、各指標の誤差項の間に正の相関が残ってしまっていることを示していますが、ここでは気にせずモデル構築は終了とさせます。
自由度調整後の決定係数は0.750と決して高くはないですが、ある程度は説明力があるモデルになっていると考えられます。

モデルを適用

モデルを適用するにあたり、採用指標のうちの完全失業率については、2期遅行指標となっているため、向こう1年を予測するには、少なくとも向こう3年の予測値が必要となります。
また、無担保コール翌日物は、一致指標であるため、予測年数分の予測値が必要となります。
今回は、2023年9月29日に公表された:三菱UFJリサーチ&コンサルティング株式会社様の予測値を用います。

図表3 完全失業率と短期金利の予測値

2024年から28年までの完全失業率と短期金利の年度予測値

モデルを適用させた結果は、以下の通りです。

図表4 重回帰モデルによる銀行引当率の予測結果

1997年から2025年までの重回帰モデルによる銀行引当率の予測結果

モデルによれば、2024年度において引当率は低下傾向、逆に2025年度はわずかに上昇傾向にあるようです。
但し、水準はいずれもとても低いものであり、直ちに引当率の上昇を警戒するような状態ではないようにも見えます。
本稿では、年度データによる銀行全体の引当率を対象としましたが、個別の金融機関に於いては、自行デフォルトデータ等を利用することにより、フォワードルッキングな引当対応にも活用できる余地があるのではないかと感じました。

当社について

私たち金融エンジニアリング・グループ(FEG)は、最先端の分析技術を用いた予測AIモデル構築、データ分析・コンサルティングサービスを提供しており、与信審査分野でのリスク推定モデルの金融機関様への導入において国内トップレベルの実績を誇ります。

無担保ローン初期審査モデル
無担保ローンモニタリング
メール配信ターゲット抽出モデル構築
商品レコメンドモデル構築
もっと見る 


サービス紹介ページをご覧いただき、お気軽にお問い合わせください。

The post マクロ経済指標を用いたPythonによる銀行引当率の予測 first appeared on 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社).

]]>
消費者物価指数データを用いたPythonによる物価動向予測 /column/%e6%b6%88%e8%b2%bb%e8%80%85%e7%89%a9%e4%be%a1%e6%8c%87%e6%95%b0%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%94%a8%e3%81%84%e3%81%9fpython%e3%81%ab%e3%82%88%e3%82%8b%e7%89%a9%e4%be%a1%e5%8b%95%e5%90%91/?utm_source=rss&utm_medium=rss&utm_campaign=%25e6%25b6%2588%25e8%25b2%25bb%25e8%2580%2585%25e7%2589%25a9%25e4%25be%25a1%25e6%258c%2587%25e6%2595%25b0%25e3%2583%2587%25e3%2583%25bc%25e3%2582%25bf%25e3%2582%2592%25e7%2594%25a8%25e3%2581%2584%25e3%2581%259fpython%25e3%2581%25ab%25e3%2582%2588%25e3%2582%258b%25e7%2589%25a9%25e4%25be%25a1%25e5%258b%2595%25e5%2590%2591 Tue, 29 Oct 2024 04:21:07 +0000 /?post_type=column&p=1480 サマリ ・直近5年の物価上昇傾向は1986年3月からの上昇に類似・但し、2020年基準でウェイトの高 […]

The post 消費者物価指数データを用いたPythonによる物価動向予測 first appeared on 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社).

]]>

サマリ

・直近5年の物価上昇傾向は1986年3月からの上昇に類似
・但し、2020年基準でウェイトの高い食料、住居、交通・通信、を比較すると異なる動き
・1986年3月からの上昇率を10年観察すると起点から14%上昇
・この傾向をそのまま当てはめると、さらに4%ポイント程度上昇する可能性も

はじめに

日本の物価は、日本銀行によるインフレターゲットとした継続的な金融緩和に加え、コロナ禍からの立ち上がりに伴う世界的なエネルギー・食料需要の増加、さらには露ウ紛争等も影響し上昇を続けています。
今回は、消費者物価統計を用い、直近の指数の動きと類似する過去の時期のデータを特定し観察します。

利用データ

分析に用いたデータは以下の通りです。

図表1 利用データ [※分析対象項目は、総合指数及び10大費目指数]

総務省「消費者物価指数」利用データ内容

分析方針

分析に当たっては、下記の方針で進めます。
・予断を持たずにデータ分析の結果をそのまま信用します。
・景気の1サイクルを5年と想定し、直近5年[2019年6月~2024年5月、以下直近データ]の動きと類似する過去の時期を特定します。
・類似の計測には、過去データから5年の消費者物価指数[以下、過去データ]を抜き出し、過去データ及び直近データについて起点を100となるよう指数化した上で2つの指数ラインのユークリッド距離を計測し、最もこの距離が短い過去時点を類似時点として定義します。
・過去データの選択には、直近データを含まない5年の期間を1ヶ月ずつずらしたデータを全て調査します。

分析プログラム

Python Ver 3.8.5を用い、過去データの各起点毎にユークリッド距離を算出し、最も距離の短い起点を探索しました。
Pythonによるサンプルプログラムは以下の通りです。

import numpy as np
import pandas as pd
##データ読込
dir="/消費者物価/"
file=dir+"消費者物価_大分類.csv"
df=pd.read_csv(file)
dd=df.dropna(how='any') #ロストレコードなし
yyyymm=dd.yyyymm
ddf=dd.drop(['yyyymm'],axis=1)
#ユークリッド距離関数定義
def dist_euc(a, b):
    return np.sqrt(np.sum((a-b)**2))
nrow,ncol=ddf.shape
#窓をずらしながら相関計測
xx=pd.DataFrame()
win=60
for nm in ddf.columns:
    moto=pd.DataFrame(ddf[nm].iloc[nrow-win:]).reset_index(drop='True')
    #指数化
    moto=moto/moto.iloc[0]*100
    cd=pd.DataFrame()
    for i in range(win+1,nrow-win+1):
        comp=pd.DataFrame(ddf[nm].iloc[nrow-win-i:-i]).reset_index(drop='True')
        comp.columns=['comp']
        #指数化
        comp=comp/comp.iloc[0]*100
        #ユークリッド距離
        dist=pd.Series(dist_euc(moto.iloc[:,0],comp.iloc[:,0]))
        ii=pd.Series(yyyymm.iloc[nrow-win-i])
        ccd=pd.concat([ii,dist],axis=1)
        ccd.columns=['ym_start','u_dist']
        cd=pd.concat([cd,ccd],axis=0)
    x=cd[cd.u_dist==cd.u_dist.min()]
    vv=pd.DataFrame([win,nm]).T
    vv.columns=['win','hinmoku']
    x=pd.concat([vv,x],axis=1)
    xx=pd.concat([xx,x],axis=0)
print(xx)

分析結果

総合指数[下表No.1]及び10大費目[下表No.2~11]の最類似起点を調査した結果は下表の通りで、総合指数は1986年3月を起点とする5年間が直近データと最も類似している事がわかりました。

図表2 総合指数及び10大費目の最類似起点と最小ユークリッド距離

消費者物価指数総合指数及び10大費目の最類似起点と最小ユークリッド距離の表

結果の観察

総合指数を対象に、過去データを10年間、直近データを5年間、起点を揃えてグラフ化してみました。

図表3 消費者物価(全国)総合指数の推移(起点=100)

1986年3月起点と2019年6月起点の消費者物価(全国)総合指数の推移グラフ

確かに、起点から5年間の動きはかなり似ている印象です。
仮に、2024年6月から5年間の動きが1986年3月以降の10年間と同様だと仮定すると、まだまだ物価は上昇することになります。尚、1986年3月から5年後の10大費目の動きは、下表の通り総合指数とはかなり異なっているものが多い状態です。

図表4 過去時点と直近時点の総合指数と10大費目別物価指数の騰落率

過去時点と直近時点の総合指数と10大費目別物価指数の騰落率

過去データにおいては、教育や住居の上昇率が目覚ましい一方、直近データは、家具・家事用品や食料、教養娯楽が目立っています。
1986年といえばバブル景気の開始時期に相当し、土地に絡む物価が上昇したイメージですが、物価統計からは住居よりも教育が上昇したという意外とも思える結果が見えてました。
一方直近データでは、食料の上昇は肌感覚で理解できる結果ですが、家具・家事用品が食料以上に上昇していたというのも意外感があります。
過去の総合指数が似通っているからといって物価上昇の背景は異なっており、過去データと同じ動きをする保証はどこにもありませんが、物価上昇は粘着性があるとも言われており、まだまだ上昇するという可能性もあるのかなと思います。

当社について

私たち金融エンジニアリング・グループ(FEG)は、最先端の分析技術を用いた予測AIモデル構築、データ分析・コンサルティングサービスを提供しており、与信審査分野でのリスク推定モデルの金融機関様への導入において国内トップレベルの実績を誇ります。

無担保ローン初期審査モデル
無担保ローンモニタリング
メール配信ターゲット抽出モデル構築
商品レコメンドモデル構築
もっと見る 


サービス紹介ページをご覧いただき、お気軽にお問い合わせください。

The post 消費者物価指数データを用いたPythonによる物価動向予測 first appeared on 金融エンジニアリング・グループ(FEG:フェグ|日鉄ソリューションズグループのデータ分析・コンサルティング会社).

]]>