15䞇円で揃える圚宅環境

最近匕っ越したした。 WFHも続きそうだし、これたでちょっずず぀揃えおきたデスク呚りの環境をたずめおおきたす。 党䜓像はこんな感じ。 机17k IKEAで買ったテヌブルトップに脚をくっ぀けたもの。脚を现いや぀にしたためちょっずぐら぀くけど、蚱容範囲内。 https://www.ikea.com/jp/ja/p/gerton-table-top-beech-30162246/ https://www.ikea.com/jp/ja/p/olov-leg-adjustable-black-90264303/ 怅子20k メルカリで買ったミラチェア。 座面が死んでたのでAmazonで買った䜎反発マットを敷いお䜿っおいる。 腰痛もちだったが、毎日プランクしおこれに座っおいるずけっこう改善された。 PC160k macbook pro 13 inch 2017 家では重い䜜業はしないのでこれで十分だったが、圚宅勀務が始たったのでもう少しいいマシンがほしい。 ただ賌入しお2幎ほどだが早くもバッテリヌが膚匵しおきた替え時かもしれない。 キヌボヌド33k HHKB Professional Type-S 職堎で䜿っおいるキヌボヌドに合わせお自宅でも賌入。 ポむンタ4k Logicool M575 将来macOS以倖のOSを導入したずきのために導入。 MxErgoず迷ったが、HHKBず合わせお電池匏にした。 モニタ33k PhilipsのPH15875856ずいうモニタ。4Kは自分にはオヌバヌスペックだず感じたため、31.5型、WQHD、usb-cで接続できるモニタで探した。 最初発色が狂っおいたが、ドラむバを曎新しお蚭定をいろいろ倉えるうちに改善した。 https://www.philips.co.jp/c-p/328P6AUBREB_11/brilliance-lcd-monitor-with-usb-c-dock モニタアヌム5k HPのモニタアヌム。メルカリで賌入。 モニタが重いため、少しぐら぀く。 HP(ヒュヌレット・パッカヌド) HP(ヒュヌレット・パッカヌド) シングルモニタヌアヌム BT861AA PCスタンド2k クラムシェルモヌドでPC立おおおくためのスタンド。朚補でいい感じ。これもメルカリ。 スピヌカヌ12k OnkyoのGX-100HD。アンプ内蔵、デゞタル入力光ケヌブル or 同軞が䜿える機皮で探したおなじみメルカリ。 音の粒感が安いスピヌカヌずは違うので気に入っおいる。 䜎音が少し匱いずいうレビュヌも芋かけるけど、自分にはちょうどよい。 ONKYO WAVIO パワヌドスピヌカヌシステム 15W+15W GX-100HD(B) USB-DAC3k ...

January 17, 2020

新幎を迎えお

玄䞀幎ぶりのブログ曎新です。 昚幎は、公私ずもに転換点を迎えた幎でした。 仕事では愛知から東京ぞの転勀を経隓したした。 基本的に業務内容は地続きで、愛知での研究テヌマに匕き続き取り組んでいたした。 察倖的なアりトプットずしお、査読付き囜際孊䌚採択2本、査読付き論文誌採択2本、特蚱出願1件を経隓するこずができたした。 たたプラむベヌトでは、実家にいた父が亡くなりたした。 父は10幎の長きに枡り心の病気に苊しみ぀づけおいたした。 病気の苊しみは家族に向かい、僕は逃げるこずしかできなかった。 蚃報を聞いたずきは、正盎悲しみより安堵を感じおしたいたした。 それたで生掻を共にしおいた祖母も叔父の家に越すこずになり、実家には母だけが残る圢になりたした。 父の死に察しお自分がベストを尜くしたずは到底蚀えないし、眪悪感で今も父の悪倢を芋る。 眪滅がしかもしれたせんが、せめおこれからはずっず味方でいおくれた母の力になれたらず思いたす。 今幎は東京ならではの業務が本栌的に始たり、仕事がたすたす充実しそうです。 ただ、それ以䞊に私生掻が忙しくなりそうで、すべおを満足にこなすのは無理だず予想しおいたす。 自分にずっお倧事なものを芋極め、身近な人たちに心を尜くすこずを倧事にしお、日々を過ごそうず思いたす。 人生、最近になっお奜たしくない初期状態の圱響がだいぶ緩和しおきた気がする。それず同時にマルコフ性が匷たっおきたずいうか、今日の自分が昚日の自分に詊されおる感じが出おきた。どうせなら楜しんで荷物を増やしおいきたいな。 — inody (@inody_) December 8, 2019 本幎もよろしくお願いしたす。

January 1, 2020

2018幎に読んでよかった本 & 2019幎の目暙

久しぶりの投皿、しかも旬がすぎたタむトルでの投皿です。 2018幎は倧䌁業特有の闇の1幎研修を終え、ようやく研究業務を始められた幎でした。 䌁業研究所の研究環境ずいえば、先日kumagi氏の䟋の蚘事がバズりたしたね。 蚘事を読んで、䌁業研究所の研究環境はどこも䌌たり寄ったりで、匊瀟の研究環境も他ず同皋床には恵たれおいるのかなずいう感じがしたした。 いろいろ蚀いたいこずはありたすが、自分は配属がアタリで、倧孊のように自由に研究させおもらえる郚眲だったこずもあり、文句を蚀う前に成果を出さねばず蚀う気持ちです。 業務内容は物理に近い分野で、自分に銎染みが薄かったため、足りない知識を補うための勉匷からはじめたした。 業務時間に孊べる環境は倧倉ありがたく、色々な本を発泚しおは読みふける日々を送っおいたす。 初めのうちは熱統蚈や流䜓力孊の本を読んでいたのですが、気が぀けば仕事に盎結しない数孊の本たで仕入れ始めおいたした。 本蚘事ではその䞭で読んで良かったず思うものを玹介したす。 たず田厎先生の「統蚈力孊」です。 以前統蚈力孊に觊れたずきは、䜕が仮定で䜕が結論かがわかりづらく感じたのですが、本曞は玍埗できる仮定を列挙した䞊で、力孊的な仕事をすべおの出発点ずしお議論を展開しおいるので、数孊的にもWell-definedな本だず感じたした。 たた数理物理の本は行間を掚枬させるような最小限の蚘述に留められるこずが倚いず思いたすが、本曞はそれずは真逆の読み物のような文䜓で曞かれおいるので、初孊者にもずっ぀きやすく感じられたした。 ずはいえ内容はしっかりしおいるため自分もすべお網矅できたわけではなく、今埌も手に取り続ける本になりそうです。 統蚈力孊〈1〉 (新物理孊シリヌズ)posted with amazlet at 19.01.02田厎 晎明 培颚通 売り䞊げランキング: 32,590 Amazon.co.jpで詳现を芋る 統蚈力孊〈2〉 (新物理孊シリヌズ)posted with amazlet at 19.01.03田厎 晎明 培颚通 売り䞊げランキング: 23,957 Amazon.co.jpで詳现を芋る 次に山田先生の「工孊のための関数解析」です。 さたざたな分野に登堎する関数解析ですが、自分はずある論文の䞭で偏埮分方皋匏の解の存圚蚌明に半矀の理論が出おきたため、勉匷し始めたした。 Twitterでおすすめされおいた本曞を詊し読みなしにポチったのですが、これがかなり良くお、数孊の厳密さを犠牲にするこずなく、抂念の「心」をしっかり䌝えおいる本でした。 関数の連続性や収束性ず聞くず身構えおしたいたすが、「解析の察象が関数になっおも、関数を距離で実数に写しおあげお、そこで連続性や収束性を考えればよい」ず宣蚀しおあるのは目から鱗でした。 こちらもただ読了したわけではなく、䌚瀟の同期ず読み䌚を進めおいるずころですい぀終わるのやら。 本曞はスペクトル理論や半矀の理論はカバヌしおいないため、読み終わったら次は黒田先生の「関数解析」を読もうず思いたす。 工孊のための関数解析 (工孊のための数孊)posted with amazlet at 19.01.02山田 功 数理工孊瀟 売り䞊げランキング: 5,731 Amazon.co.jpで詳现を芋る 関数解析 共立数孊講座 (15)posted with amazlet at 19.01.03黒田 成俊 共立出版 売り䞊げランキング: 192,246 Amazon.co.jpで詳现を芋る 最埌に兌枅先生の「確率埮分方皋匏ずその応甚」です。 確率過皋は今たで䜕床も挑戊しようずした分野なのですが、前提知識が倚すぎお挫折を繰り返しおきたした。 確率を数孊の土台に乗せるには枬床論の知識が必芁ですし、確率過皋のサンプルパスは関数になるので、収束性の議論などに関数解析の知識が必芁になりたす。 そのため䞀から勉匷を初めお確率過皋の定矩に蟿り着くころには、土台の郚分の知識を忘れおしたうずいう悲しい珟実に盎面したす。 ...

January 3, 2019

Langevin方皋匏ずFokker-Planck方皋匏の察応

$x(t)\in\mathbb R$の時間発展が、぀ぎの非線圢ランゞュバン方皋匏 $$ \dot x(t) = f(x(t)) + R(t) $$ で衚されるずする。 ここで、$f:\mathbb R\to\mathbb R$は関数、$R:\mathbb R\to\mathbb R$はランダム力である。 $R(t)$は぀ぎの仮定を満たすずする。 $R(t)$はガりス過皋。 すなわち、$t_1,\ldots,t_k$を遞んだずき、$R(t_1,\ldots,t_k):=(R(t_1),\ldots,R(t_k))$が倚次元正芏分垃に埓う。 $\mathbb E[R(t)] = 0. $ $\mathbb E[R(t)R(t’)] = D\delta(t-t’)$, ただし$D$は正の定数。 $x(t)$ず$R(t’)$が$t<t’$で独立。 時刻$t$に$x(t)$が$[x,x+dx]$にある確率を$p(x,t)dx$ず定矩する。 $p(x,t)$を分垃関数ずいう。 $p(x,t)$は぀ぎの仮定を満たすずする。 $x\to\pm\infty$で$p(x,t)\to 0. $ $x\to\pm\infty$で$\frac{\partial p(x,t)}{\partial x}\to 0. $ このずき、$p(x,t)$は぀ぎのフォッカヌプランク方皋匏に埓う。 $$ \frac{\partial p(x,t)}{\partial t} = \left( -\frac{\partial }{\partial x}f(x) + \frac{\partial^2}{\partial x^2}\frac{D}{2} \right) p(x,t) $$ 蚌明はいろんなずころに茉っおる。 あずで远蚘するかも。

August 24, 2018

OpenCV/ArUcoラむブラリお゙物䜓䜍眮蚈枬

OpenCVは画像凊理に觊れたこずのある人ならば知らない人はいないず蚀われるほど有名なラむブラリですが、本日はそのモゞュヌルの䞀぀である、AR甚ラむブラリArUcoを甚いお、物䜓の䜍眮蚈枬をしおみたす。 ネットにはC++の蚘事がたくさん転がっおいるのですが、Pythonを甚いた蚘事が少ないように感じたため、備忘録ずしおブログに残そうず思った次第です。 やりたいこず 机の䞊に座暙系を蚭定し暪の蟺が$x$軞、瞊の蟺が$y$軞ずか、机の䞊を動き回る物䜓小型ロボットずかの䜍眮座暙を、机を撮圱するカメラの映像から掚定したいです。 準備  PCにPythonはむンストヌルされおいるずし、OpenCVのむンストヌルから行いたす。 pip install opencv-contrib-python 動䜜確認を行いたしょう。 import cv2 aruco = cv2.aruco help(aruco) それっぜい文章がわちゃわちゃ出おきたら、むンストヌル成功です。 マヌカヌ生成 ArUcoでは、QRコヌドのような2次元マヌカヌを生成し、画像䞭から生成されたマヌカヌを認識するこずができたす。 画像の生成は以䞋のように行いたす。 dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) for i in range(5): marker = aruco.drawMarker(dictionary, i+1, 100) cv2.imwrite('ar_marker'+str(i+1)+'.png', marker) ここで、getPredefinedDictionaryはマヌカヌが栌玍されおいる蟞曞を呌び出す関数であり、DICT_4X4_50は蟞曞の皮類を衚したす。 たた、forルヌプの䞭では、drawMarkerでidが$i+1$のマヌカヌを呌び出し、imwriteで呌び出したマヌカヌを保存しおいたす。 生成された画像は぀ぎのようになりたす。 今回マヌカヌは5぀呌び出したした。 1぀は物䜓に蚭眮し、認識するためのもので、残りの4぀は座暙倉換のためのものです。 マヌカヌ怜出 画像䞭のマヌカヌを怜出するためのコヌドが以䞋です。 img = cv2.imread('img.jpg') corners, ids, rejectedImgPoints = aruco.detectMarkers(img, dictionary) img_marked = aruco.drawDetectedMarkers(img, corners, ids) cv2.imwrite('img_marked.png', img_marked) detectMarkersで、画像からマヌカヌを認識したすたった䞀行。 戻り倀であるcornersずidsは、それぞれ怜出されたマヌカヌの座暙ずidが栌玍されたリストです。 先ほど生成された画像をモニタに衚瀺させ、手元のカメラで撮圱したものを認識させおみたした。 結果が぀ぎのようになりたす。 座暙倉換 ArUcoでは、画像䞭のマヌカヌの䜍眮を怜出するこずができたすが、その䜍眮座暙は机の䞊の座暙ず必ずしも䞀臎したせん。 このため、机の䞊に座暙倉換甚のマヌカヌを蚭眮し、それらを甚いお座暙倉換を行うこずにしたす。 この䜜業は、ArUcoではなく、OpenCVラむブラリによっお実珟できたす。 ...

March 18, 2018

デルタ関数ずは、超関数ずは

デルタ関数っお結局䜕なの 工孊の至る所で珟れるデルタ関数。これはよく $$ \delta(t):= \begin{cases} \infty, & t=0\\newline 0, & t\ne 0 \end{cases}, $$ $$ \int_\infty^\infty \delta(x-y)f(y)dy = f(x), $$ $$ \int_\infty^\infty \delta(t)dt = 1 $$ を満たす関数 $\delta$ ずいう颚に定矩されおいたすが、「 $t=0$ は枬床0なので、その積分は0になるのでは」ず考えたこずがある人は倚いのではないでしょうか。 実はこの定矩は䞍正確なものであり、「超関数」ずいう抂念によっお、正確に定矩するこずができたす。 超関数の定矩 ある数倀を入力するずある数倀を出力する装眮のこずを、関数ずいいたす。 これに察しお、ある関数を入力するずある耇玠数を出力するような装眮のこずを、汎関数ずいいたす。 汎関数 $F$ に関数 $\phi$ を入力した時の出力倀を $F[\phi]$ 、たたは $\langle F, \phi \rangle$ ず曞きたす。以䞋では埌者の曞き方を甚いたす。 党区間で無限回埮分可胜で、関数倀が0でないずころが有界区間に限られるような関数の党䜓からなる集合を $\mathcal D$ ずしたす。 $\mathcal D$ 䞊に属する関数 $\phi$ をテスト関数ず呌びたす。 たた、 $\mathcal D$ を定矩域ずする汎関数を $\mathcal D$ 䞊の汎関数ず呌びたす。 ここで、シュワルツの超関数は、぀ぎのように定矩されたす。 汎関数 $F$ が、 $\langle F, \phi_1 + \phi_2\rangle = \langle F, \phi_1\rangle + \langle F, \phi_2\rangle,$ $\langle F, c\phi\rangle = c\langle F, \phi\rangle\ (c\in\mathbb K),$ テスト関数の列 ${\phi_n}$ が $n\to\infty$ で $\phi$ に収束する時、 $\langle F, \phi_n\rangle$ もたた $\langle F, \phi\rangle$ に収束する を満たすずき、 $F$を超関数ずいう。 ...

October 15, 2017

カヌネル型機械孊習入門

$d$個の数倀を䞊べた倉数$\mathbf{x}=(x_1,x_2,\ldots,x_d)^{\mathrm T}$から、 $y$ずいう倉数を掚定する倚倉量の回垰問題を考えたす。 サンプルデヌタは$n$組あるずし、$i$番目のサンプルを$\mathbf{x}^{(i)}, y^{(i)}$ず曞くこずにしたす。 線圢モデル たず、カヌネルを䜿わない線圢モデル $$y = \mathbf w^\mathrm T \mathbf x$$ を考えたしょう。これは、デヌタを原点を通る盎線で圓おはめるこずを意味したす。 盎線からのズレに察しお、損倱を $$r(y,\mathbf{x};\mathbf{w}) = (y-\mathbf w^\mathrm T \mathbf x)^2$$ ずしお定矩し、党おのサンプルの総和 $$R(\mathbf{w}) = \sum_{j=1}^n r(y,\mathbf{x};\mathbf{w})$$ を考えたす。$R(\mathbf{w})$は $$\mathbf y := \left( \begin{array}{ccc} y^{(1)}\newline y^{(2)}\newline \vdots\newline y^{(n)} \end{array} \right) $$ $$X := \left( \begin{array}{ccc} x_1^{(1)} & \cdots & x_d^{(1)}\newline x_1^{(2)} & \cdots & x_d^{(2)}\newline \vdots& & \vdots\newline x_1^{(n)} & \cdots & x_d^{(n)} \end{array} \right) $$ を甚いお、 $$R(\mathbf{w})=(\mathbf y-X\mathbf w)^\mathrm T(\mathbf y-X\mathbf w)$$ ...

July 23, 2017

日経平均株䟡をLSTMを甚いお予枬しおみた

抂芁 今流行りの深局孊習で日経平均株䟡を予想しおみたした。 結論から蚀えば、党く予想できず、惚敗でした。 LSTMずは LSTMずはリカレントニュヌラルネットワヌクRNNず呌ばれる機械孊習手法の䞀぀です。 RNNを甚いるこずで、珟圚ず過去䞀定時間の時系列デヌタから、未来のデヌタを予枬するこずができたす。 たた、RNNを改良したLSTMでは、長期のトレンドが反映されやすいずされおいたす。 詳しくはこちらのサむトをご芧ください。 孊習デヌタずかモデルずか こちらのサむトから、過去4ヶ月の1時間足のデヌタをダりンロヌドし、孊習デヌタずしお甚いたした。 モデルの隠れ局のナニット数は100、過去20時間の株䟡から1時間先の株䟡を予枬するモデルを甚いたした。孊習方法はAdamを甚いたした。 実装 Keras(TensorFlow)を甚いお実装したした。初めお䜿ったんですが、短く曞けお䟿利ですね。以䞋、゜ヌスコヌドを茉せおおきたす。 # coding: utf-8 import numpy as np from keras.models import Sequential from keras.layers import Dense, Activation from keras.layers.recurrent import LSTM from keras.optimizers import Adam from keras.initializers import TruncatedNormal from keras.callbacks import EarlyStopping from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import seaborn import pandas as pd df = pd.read_csv('~/deep_learning/csv/nikkei4_7.csv') x = df['始倀'] / df['始倀'].max() f = list(x) length_of_sequences = len(f) maxlen = 20 data = [] target = [] for i in range(0, length_of_sequences - maxlen): data.append(f[i:i+maxlen]) target.append(f[i+maxlen]) X = np.array(data).reshape(len(data), maxlen, 1) Y = np.array(target).reshape(len(data), 1) N_train = int(len(data)*0.9) N_validation = len(data) - N_train X_train, X_validation, Y_train, Y_validation = \ train_test_split(X, Y, test_size=N_validation) n_in = len(X[0][0]) n_hidden = 100 n_out = len(Y[0]) weight_hidden = TruncatedNormal(stddev=np.sqrt(1/n_hidden)) weight_out = TruncatedNormal(stddev=np.sqrt(1/n_out)) model = Sequential() model.add(LSTM(n_hidden, init=weight_hidden, input_shape=(maxlen, n_out))) model.add(Dense(n_out, init=weight_out)) model.add(Activation('linear')) optimizer = Adam(lr=0.001, beta_1=0.9, beta_2=0.999) model.compile(loss='mean_squared_error', optimizer=optimizer) epochs = 500 batch_size = 10 early_stopping = \ EarlyStopping(monitor='val_loss', patience=10, verbose=1) hist = model.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, validation_data=(X_validation, Y_validation), callbacks=[early_stopping]) ## predict 1 step future original = [f[i] for i in range(length_of_sequences)] predicted = [None for i in range(maxlen)] for i in range(1, length_of_sequences - maxlen): Z = X[:i] z_ = Z[-1:] y = model.predict(z_) predicted.append(y[0][0]) plt.figure() plt.plot(original, label="original") plt.plot(predicted, label="predicted") plt.legend() plt.xlabel("step") plt.ylabel("price") plt.show() 結果 䞊のスクリプトを走らせた結果、぀ぎの結果が埗られたした。 䞀芋予枬できおいるように芋えたす。 しかしながら、ズヌムしおみるず、 このように、実際の動きから遅れおいるこずがわかりたす。 これでは党く意味がありたせん。 䞖の䞭そんなに甘い話はありたせんね。 ...

July 16, 2017

䞀色正圊ら著『理系のための亀枉孊入門』を読みたした

亀枉ずいうず、心理的駆け匕きがものをいう、才胜が支配する掻動であり、自分のような口䞋手には瞁遠いものだずいう印象がありたした。 しかしながら、本曞は「亀枉には理論があり、埌倩的に亀枉力は獲埗できる」ずいう立堎のもず、その基瀎的な理論を玹介しおいたす。 もっずも基瀎的なこずずしお、亀枉は準備が8割であり、始める前に぀ぎの3぀を決めるべきだずありたす。 ミッションMission亀枉の軞ずなるもの。 ゟヌパZOPA, Zone Of Possible Agreement最高ず最䜎の2段構えの幅のある目暙 バトナBest Alternative To Negotiated Agreementミッションを達成できなかったずきの代替遞択肢。 たた、これらを定める前埌で、違いを取り巻く状況を把握するために、マップやツリヌを曞いおみるこずは、状況を俯瞰したり、問題点を分解したりする際に圹立ちたす。 亀枉䞭、お互いの考えを把握するために、ブレむン・ストヌミング、いわゆるブレストを行うこずも非垞に有効だずありたす。 ただし、ブレストをする䞊で絶察に守らなければいけないこずずしお、 はじめに最埌に行うこずを決めおおく アむデアの批刀ず評䟡を混圚しない 取りうる遞択肢を決める際は、軞を決めお比范し、決定する などがありたす。 盞手ずの長期的な関係を求めおいる堎合、䞋手な亀枉テクニックを䜿うこずはあたり埗策ではないそうです。 このような亀枉テクニックずしお フットむンザドア最初に取るに足らないような芁求を提瀺し、小さなむ゚スを匕き出す、その䞊で埐々に芁求を゚スカレヌトさせおいく。 ドアむンザフェむス最初に課題な芁求を出しお盞手にノヌず蚀わせ、条件を䞋げお本来の芁求を出す。 ニブリング䞀旊合意に達した埌、盞手の気が緩んだずころに远加条件を提瀺し、受諟させる。 タむムプレッシャヌアむスブレむクの時に盞手の亀通手段などを聞き出し、デットラむンを把握。その䞊で亀枉の最終条件の提瀺をそのデットラむン近くたで遅らせ、プレッシャヌを䞎える。 などがありたす。 最埌に、亀枉を成功させる秘蚣は、決しお感情的にならず、なるべく第䞉者の芖点から亀枉に臚むこずです。 これから瀟䌚人になる身ずしお、孊ぶべきこずが倚く曞かれおいた本曞は、ぜひ手元に眮いおおきたい本だず感じたした。

January 29, 2017

GPIFのデヌタをもずに最適ポヌトフォリオ問題を解いおみた3

GPIFによるデヌタ GPIF幎金積立金管理運甚独立行政法人は、厚生幎金ず囜民幎金の積立金の管理・運甚を行っおいる団䜓です。 この団䜓は、定期的に各金融商品のリスクずリタヌン、盞関係数に぀いお評䟡しおおり、それらをもずに積立金の運甚のためのポヌトフォリオを決定しおいたす。 ただし、ここでの金融商品ずは、䌚瀟ごずの株匏などではなく、TOPIXや日経225などに代衚される、株匏垂堎の株䟡指数を指すこMずに泚意しおください。 GPIFは、金融商品を 囜内債刞 囜内株匏 海倖債暩 海倖株匏 の4぀に分けお評䟡をおこなっおおり、それぞれのリタヌン、リスク、盞関係数の倀は2016幎公開のこちらの資料によるず、぀ぎのようになっおいたす。 リタヌンリスクプレミアムなし 囜内債刞 囜内株匏 海倖債暩 海倖株匏 2.3 5.9 3.6 6.3 リスク 囜内債刞 囜内株匏 海倖債暩 海倖株匏 4.2 25.23 11.82 26.76 盞関係数 囜内債刞 囜内株匏 海倖債暩 海倖株匏 囜内債刞 1.000 -0.230 -0.040 -0.090 囜内株匏 -0.230 1.000 0.060 0.660 海倖債暩 -0.040 0.060 1.000 0.550 海倖株匏 -0.090 0.660 0.550 1.000 今回はこれらの金融商品に加えお、「定期預金」も考慮したポヌトフォリオを最適化したいず思いたす。 ここで、定期預金のリタヌンは0.1、リスクは0、他の金融商品ずの盞関係数は党お0ずしたした。 いく぀かの資料によれば、ポヌトフォリオを最適化するにあたっお、リスク資産ず無リスク資産は分けお考えるのが定石のようです。 しかしながら自分には「無リスク資産をリスク0のリスク資産ずしおみなす」こずが、䜕故たずいこずなのかよく理解できなかったので、今回は「定期預金」もポヌトフォリオに加入しおみた次第です。 このあたりに詳しい方がおられたしたら、ぜひご教授ください   CVXOPTを甚いた最適化 さお、以䞊のデヌタを甚いお前回玹介した2次蚈画問題を解くために、Pythonでスクリプトを䜜成したした。 䜜成したスクリプトの䞭では、CVXOPTずいう゜ルバヌ問題を自動で解いおくれるツヌルを甚いおいたす。 CVXOPTの䜿い方は、こちらの蚘事が参考になりたす。 ゜ヌスコヌド import numpy import cvxopt from cvxopt import matrix import matplotlib.pyplot as plt mu = numpy.array([[2.3,5.9,3.6,6.3,0.1]]) Sigma = numpy.diag([4.2,25.23,11.82,26.76,0]) R = numpy.array([[1.000,-0.230,-0.040,-0.090,0.000], [-0.230,1.000,0.060,0.660,0.000], [-0.040,0.060,1.000,0.550,0.000], [-0.090,0.660,0.550,1.000,0.000], [0.000,0.000,0.000,0.000,1.000]]) Cov = Sigma@R@Sigma print(numpy.linalg.matrix_rank(Cov)) P = matrix(Cov) q = matrix(numpy.zeros((5,1))) Id = numpy.identity(5) G = matrix(-numpy.concatenate((Id,mu), axis=0)) A = matrix(numpy.ones((1,5))) b = matrix(100*numpy.ones((1,1))) Return_bound = numpy.linspace(0,6.7,50) Return = numpy.array([]) Risk = numpy.array([]) Allocations = numpy.array([]) for re_bound in Return_bound: h = matrix(numpy.array([0.0,0.0,0.0,0.0,0.0,-re_bound*100])) sol = cvxopt.solvers.qp(P,q,G,h,A,b) Sol = sol["x"] Allocations = numpy.append(Allocations,Sol) re = Sol.T@mu.T/100 Return = numpy.append(Return,re) ri = (Sol.T@Cov@Sol/10000)**0.5 Risk = numpy.append(Risk,ri) print(Risk) print(Return) fig = plt.figure() plt.plot(Risk,Return) plt.xlabel("予想リスク暙準偏差") plt.ylabel("期埅リタヌン [%]") plt.show() Allocations = Allocations.reshape(Return_bound.size,5) Allocations = Allocations.T fig = plt.figure() wd = 5/Return.size p1 = plt.bar(Return, Allocations[0], width = wd, color = "red", label = "囜内債暩") p2 = plt.bar(Return, Allocations[1], width = wd, bottom=Allocations[0], color = "orange", label = "囜内株匏") p3 = plt.bar(Return, Allocations[2], width = wd, bottom=sum(Allocations[0:2,:]), color = "yellow", label = "海倖債暩") p4 = plt.bar(Return, Allocations[3], width = wd, bottom=sum(Allocations[0:3,:]), color = "green", label = "海倖株匏") p5 = plt.bar(Return, Allocations[4], width = wd, bottom=sum(Allocations[0:4,:]), color = "blue", label = "預金") plt.legend() plt.xlabel("期埅リタヌン [%]") plt.ylabel("資産配分 [%]") plt.xlim([0.1,6.7]) plt.ylim([0,100]) plt.show() plt.close('all') 実行結果 たず、期埅リタヌンに察しおの最小リスクを瀺した図を瀺したす。 「ハむリスク・ハむリタヌンの原則」に埓い、リタヌンに察しおリスクが単調に増加しおいるこずがわかりたす。 ...

January 9, 2017