脳汁ドバドバどーぱみんっ

ちっぽけな青年による稚拙な文言

【金融勉強】日本銀行の金融政策の序

1.金融政策に関する伝統的な政策手段

公開市場操作
公開市場操作(Open Market Operation)とは中央銀行が債券を各金融機関と売買する政策。債券保有量を増減させることで市中に出回る資金量を調整。
よく新聞で見る「買いオペ」は中央銀行が債券を購入するもので市中に出回る資金を増やすことで利子率下落&景気を刺激する金融緩和効果をもたらす。「売りオペ」は逆で金融引き締めに向かう。

公定歩合政策
伝統的には、公定歩合とは中央銀行が金融機関向けに貸し出しを行う際の利子率のこと。規制金利時代には預金金利等の各種の金利公定歩合に連動していたこともあり、公定歩合を水準を変更することで主に金融政策を行なっていた。
しかし1994年の金融自由化に伴いその連動関係はなくなった。今では上記の利子率は基準貸付利率と呼ばれている。

預金準備率操作
金融機関が中央銀行に預けることを義務付けられている当座預金の割合を示す法定準備率を上下させることで貨幣供給量を増減させる政策。



2.ハイパワードマネー
ハイパワードマネーHとは現金通貨Cと預金準備Rを足したもの(H=C+R)
ハイパワードマネー中央銀行の負債の一部から構成されているため中央銀行は直接コントロールすることができると考えられる。マネーストックMとの関係性として貨幣乗数をmとするとM=mHと書くことができ、m>1からハイパワードマネーを1単位増やすとマネーストックをm単位増やすことができる。これは信用創造カニズムによるもの。例えば銀行に1万円預金すると銀行はそのうち8000円を貸し出す。その8000円を受け取った個人はまた6000円預金する...の繰り返しみたいな。

公開市場操作公定歩合政策では貨幣乗数を所与としてハイパワードマネーを増減することでマネーストックを増減させる。
一方預金準備率操作ではハイパワードマネーを所与としてマネーストックを増減させる。


3.非伝統的金融政策
伝統的な金融政策では中央銀行ハイパワードマネーや市場利子率を操作していた。
しかし近年では中央銀行が短期の市場利子率を操作することで金融政策を執っているという考え方が有力になっている。
実際多くの中央銀行インターバンク市場の短期金利を操作目標として金融政策を行なっている。

テイラールール
短期の利子率とインフレ率、GDPの関係性についてのJ.Taylorが提唱したルール。
短期の利子率がインフレ率の目標インフレ率との乖離とGDPギャップに比例して動かすルール。ここでGDPギャップとは実際のGDPとせんざいGDPの差である。

ロンバート型貸出制度
日本銀行は無担保コールレートオーバーナイト物の目標値を設定することで短期市場金利を誘導している。金融システムが安定している際は金融機関感での金利の差はごくわずかだが不安定になると信用リスクのプレミアムを反映し金利差が無視できないものになる。短期金融市場は金融機関の資金調達による流動性の確保という点でシステミックリスクを低く抑えるためにも金利差が生じることは望ましくない。

そこで短期金利の安定化のための制度の一つが「ロンバート型貸出制度」である。
これは短期金融市場での資金調達が困難になった金融機関に対して資金を貸し出すものである。
日本銀行では2001年2月から導入されていて、基準貸付利率で資金を貸し出すことができる。従来との相違点としては、公定歩合による貸し出しでは貸し出し先の銀行や限度額が制限されていた。
つまり金融機関にとって基準貸付利率より高い金利で市場から資金調達することは損になるので理論的には基準貸付利率がインターバンク市場での短期金利の上限となる。
しかし、実際には金融危機の際など基準貸付利率よりも高い利率で資金調達が行われた。これはロンバート型で資金調達することは信用度が低いことを市場に示してしまうと恐れたためとかんがえられ、このような現象をstigma(スティグマ)という。



4.日銀の他の主な機能

発券銀行
日本銀行は国内唯一の発券銀行として日本銀行券を発行している。
金本位制を採用していた戦前では日銀の紙幣の発行額と同額の金を常時保管して金と紙幣の兌換を保証していた。今では管理通貨制度で金や銀などの正貨準備保有がない不換紙幣を日本銀行は発行している。

銀行の銀行
日本銀行は金融機関から当座預金を受け入れている。金融市場の貨幣量調整については上述の通り。その他、金融機関が破綻等した際に最後の貸し手として日銀特融(緊急融資)を行うなど信用秩序を守る機能も持つ。日銀特融とは政府からの要請に基づいて、破綻等の状況に陥った金融機関に対する無担保・無制限に行う特別融資のこと。

政府の銀行
日本銀行は政府の委託を受け政府保有の円建て預金勘定を唯一開設していて、国のお金を管理している。また税金などの政府の収入の受け取りや年金等の国庫金の取り扱い、国債発行や外国為替の決済処理も行なっている。

金融ちゃんと基礎から勉強する決意

表題の通り、金融についてちゃんと勉強しようと思います。

というのも自分自身ざっくり金融の基礎について理解してると思ってたのですが知識として抜け落ちてることが多いなと思ったのと、もっと現実世界の経済事象を理解したいなと思ったからです。

 

なので今後学んだことを備忘録的にあげようかなと。

 

 

"年収"と世帯年収

よくテレビの街頭インタビューで付き合いたい男性の要素で年収1000万円という女性たちが出てきます。

年収1000万円以上の男性たちがその女性たちに付き合うor結婚したいと思わせるほどその女性たちに魅力があるのかはさておき、この年収1000万円という言葉に違和感を覚えました。

仮に専業主婦の女性と年収1000万円の男性が結婚すれば世帯年収は1000万円(Simpleに考えています)。一人当たりは500万円(手取りはもっと少ない)。。。

こんなんじゃ結婚する気起きなくね...

 

僕の周りのいわゆる高学歴の友人たちはわざわざ自分の世帯年収をガクッと下げる様な相手と結婚したくないと言ってる人多いし、さらに富の集中が進行しそうだなあと思う低年収の僕でした。

Pythonで株価予想を勉強し始めた

市場が荒れている年末年始を受けて、ちょっと興味が強くなったので株価が上がるか下がるかという簡単な程度で予測してみようと思い立った次第。

使うのはPython(というかほかにちょっとでも書けるのRとRubyしかないから選択肢orz) 機械学習も数理的最適化も無知の状態で挑むのはなかなか頭悪い気がするけど、困ってから考えればいいや精神

いろんなサイトを参考にしながら、では行きましょう。

流れとしては 1予想する銘柄と、学習用のデータの2018年分のデータをとってくる

2DataFrameで使いやすい形にする

3ランダムフォレスト

です

1ですが、予想する銘柄はAGC[5201]にします。理由はただ最近名前変わったから。で学習用には上場投資信託の1309, 1326, 1343, 1551を使います。適当です。 とってきたcsvデータをカレントディレクトリにおいて準備万端

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

df = pd.read_csv("5201data.csv")
df.columns=["Date", "Open", "High", "Low", "Close", "Volume", "Trading Value"]
df["index"] = [i for i in range(len(df))]

etf_list = [1309, 1326, 1343, 1551]


for etf in etf_list:
    df_etf = pd.read_csv(str(etf) + 'data.csv')
    df_etf.columns=["Date", "Open", "High", "Low", "Close", "Volume", "Trading Value"]


    dates = []
    closeis = []
    for d in df["Date"]:
        date = df_etf.loc[(df_etf.Date == d), "Date"]
        yesterday_date = date.values[0]
        dates.append(date.values[0])

        close = df_etf.loc[(df_etf.Date == d), "Close"]
        if str(close.values[0]) != str("nan"):
            yesterday_close = close.values[0]
            closeis.append(close.values[0])

        else:
            closeis.append(yesterday_close)

    df_etf2 = pd.DataFrame({"Date_" + str(etf) : dates, "Close_" + str(etf) : closeis})
    df = pd.concat([df, df_etf2], axis=1)
    df["diff_" + str(etf)] = (df["Close_" + str(etf)]/df["Close_" + str(etf)].shift(-1))-1

df = df.drop(0) #初日を削除(前日比がNaNになるから)

これでdfを各日にちのそれぞれの株価の終値がみやすく並んだデータにできました

df = df.sort_values(by=["index"], ascending=False)
df_train = df.iloc[0:len(df)-1]
df_test = df.iloc[len(df)-1:len(df)]

xlist = ["diff_1309","diff_1326","diff_1343","diff_1551"]
x_train=[]
y_train=[]

for s in range(0, len(df_train)-1):
    x_train.append(df_train[xlist].iloc[s])

    if df_train["Close"].iloc[s+1] > df_train["Close"].iloc[s]:
        y_train.append(1)
    else:
        y_train.append(-1)

rf = RandomForestClassifier(n_estimators=len(x_train), random_state=0)
rf.fit(x_train, y_train)
test_x = df_test[xlist].iloc[0]
test_y = rf.predict(test_x.reshape(1,-1))

あとはランダムフォレストするだけ。。。と思いきや最後の行でエラーを吐かれる

なんでやねん!!

ここまでのコードはほとんど先駆者の真似してるんですけどなんでエラー出るのかちょっと考えただけじゃわかんなかったんでまた今度やります

『現場で使える!NumPyデータ処理入門』感想

社会の荒波に揉まれたせいでだいぶ更新してませんでしたが、新年になったことだし記事書きます。

 

今回は表題にある通りNumPyについての本の感想です。

 

現場で使える! NumPyデータ処理入門 機械学習・データサイエンスで役立つ高速処理手法 (AI & TECHNOLOGY)

現場で使える! NumPyデータ処理入門 機械学習・データサイエンスで役立つ高速処理手法 (AI & TECHNOLOGY)

 

 

そもそも僕は文系でプログラミングはPythonとR、Rubyを少しかじっている程度何ですけど最近深層学習とWebスクレイピングに関心を持ち始めた影響でこの本を読みました。)

この本、元々はDeepAgeという機械学習を学ぶプラットフォームみたいなやつの記事をまとめたやつ?(詳しくは知りません)で一応内容をWeb上で閲覧できるみたいなんですが僕は圧倒的紙媒体派なんで本で読みました。

目次は以下の通り

Chapter 1 NumPyの基本
 1.1 NumPyの基本とインストール方法
 1.2 多次元データ構造ndarrayの基礎
 1.3 ブロードキャスト
 1.4 スライシング
 1.5 軸(axis)と次元数(ndim)について
 1.6 ndarrayの属性(attribute)shape
 1.7 要素のデータ型(dtype)の種類と指定方法
 1.8 コピー(copy)とビュー(view)の違い

Chapter 2 NumPy配列を操作する関数を知る
 2.1 配列を形状変換するreshape
 2.2 配列末尾へ要素を追加するappend
 2.3 配列の真偽判定に役立つallとany
 2.4 条件を満たす要素のインデックスを取得するwhere
 2.5 最大値、最小値を抜き出すamax、maxとamin、min
 2.6 配列の最大要素のインデックスを返すargmax
 2.7 配列の軸の順序を入れ替えるtranspose
 2.8 ソートをするsortとargsort
 2.9 配列同士を連結する、NumPyのvstackとhstackの使い方
 2.10 データを可視化するmatplotlibの使い方
 2.11 要素がゼロの配列を生成する関数のまとめ
 2.12 要素が1の配列を生成するones
 2.13 連番や等差数列を生成するarange
 2.14 線形に等間隔な数列を生成するlinspace
 2.15 単位行列を生成するeyeとidentity
 2.16 未初期化の配列を生成するempty
 2.17 randomモジュールを使った配列操作・乱数生成方法
 2.18 配列を1次元に変換するflatten
 2.19 loadtxtとsavetxtを使ってテキストファイルを読み書きする
 2.20 配列データをそのまま読み書きするloadとsave
 2.21 bufferをndarrayに高速変換するfrombuffer
 2.22 非ゼロ要素を抽出するnonzero
 2.23 flattenよりも高速に配列を1次元化するravel
 2.24 配列をタイル状に並べるtile
 2.25 新しく配列に次元を追加するnp.newaxisオブジェクト
 2.26 要素の差分と足し合わせを計算するdiffとcumsum
 2.27 多次元配列の結合を行うnp.c_とnp.r_オブジェクト

Chapter 3 NumPyの数学関数を使う
 3.1 NumPyの数学関数・定数のまとめ
 3.2 要素の平均を求めるaverageとmean
 3.3 要素の中央値を計算するmedian
 3.4 要素の和を求めるsum
 3.5 標準偏差を計算するstd
 3.6 分散を求めるvar
 3.7 共分散を求めるcov
 3.8 相関係数を求めるcorrcoef
 3.9 配列の要素から格子列を生成するmeshgrid
 3.10 内積を計算するdot
 3.11 行列式を求めるlinalg.det
 3.12 行列の固有値固有ベクトルを求めるlinalg.eig
 3.13 行列の階数(ランク)を求めるrank
 3.14 逆行列を求めるinv
 3.15 直積を求めるouter
 3.16 外積を求めるcross
 3.17 畳み込み積分移動平均を求めるconvolve

Chapter 4 NumPyで機械学習を実装する
 4.1 配列の正規化(normalize)、標準化をする方法
 4.2 線形回帰をNumPyで実装する
 4.3 NumPyでニューラルネットワークを実装する:基本編
 4.4 NumPyでニューラルネットワークを実装する:理論編
 4.5 NumPyでニューラルネットワークを実装する:実装編
 4.6 NumPyでニューラルネットワークを実装する:多層化と誤差逆伝播法編
 4.7 NumPyでニューラルネットワークを実装する:文字認識編
 4.8 NumPyで強化学習を実装する

Pythonの文法をある程度わかっている人向けにNumPyの基本操作を学んだ後実際に機械学習を実装してみようという流れ

 

で、よんでみてどうかというとこの本は辞書的に使うのが一番かなと思いました。

NumPyの各関数の説明は引数になにを取れて実際どいういう挙動をするのか例が豊富で大変わかりやすかったです。さすが人気コンテンツ。

けど機械学習の方はコードがばーーーとあって説明が粗雑なせいでなかなかいいとは言えないものでした。。。まあ限られた紙面でアルゴリズムとか数学的説明を入れるのは厳しいと思うので仕方ないですが。

 

あと個人的に何ですが、matplotlibをうまくつかいこなせるとNumPyの勉強がかなり楽しくなる気がします。綺麗にグラフ作れると気分もいいですし。

今回の本とは関係ないですがJupyter実践入門という本がmatplotlibの使い方が非常にわかりやすくていいなと思ってます。その内容を使ってファイナンスについての↓の本読んでたら相乗効果ですごく身についたんで

 

 

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

 

 

Pythonによる ファイナンス入門 (実践Pythonライブラリー)

Pythonによる ファイナンス入門 (実践Pythonライブラリー)

 

 

 

これからも頑張って機械学習勉強するぞ.....