バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、収支シミュレーションをする上での今後の方針を決めた。
基本的にはプログラム的に算出するが、実際の売買時の計算は手動で実施予定。(いろいろ判断が入るので…)
今回は「素のVTIチャートを取り込んで、プログラム的に平均値を引くようにうする。」を実施。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
素のVTIチャート
今回から収支シミュレーションに向けての準備作業になると思うのだけど、
まずは「素のVTIチャートを取り込む」ってところかな?
そうそう。
といって、大した作業じゃなくて、
今までは、Excelで終値の平均値を出して、その平均値を各終値から引いた値を算出していた。
これをMATLABまたはPythonで終値をそのまま取り込むってだけだね。
ということはcsvファイルの内容を終値に変えればOKってことか。
作業としてはこの画像のイメージだ。
つまり、コピペすればOKってことだね。
プログラム的に平均値を引く(MATLAB版)
次はプログラム的に平均値を引くわけだが、
これも簡単だ。
まずはMATLAB版。
VTI=csvread('VTI3.csv'); % VTIチャート読み込み
ft=VTI-mean(VTI);
meanって関数が平均値を算出する関数ってことだね。
こんな単純なコードで良いなら、最初からこうしていれば・・・。
まぁそうなんだよね。
可能な限り余計な演算をしないためにExcel側で算出してたが、
MATLAB側で算出でも手間は変わらなかったな。
プログラム的に平均値を引く(Python版)
次はPython(Numpy)。
ぶっちゃけMATLAB版とやり方は一緒だ。
VTI=np.loadtxt('VTI3.csv',delimiter=',') # 変換用波形読み込み
ft=VTI-np.mean(VTI)
MATLABと同じくNumpyにmeanってメソッドがあるんだね。
ちなみに似たようなメソッドでaverageってのがあるが、
こっちは加重平均が取れるものだな。
デフォルトではmeanと同じく平均なので置き換えても問題無いはずだ。
加重平均?
要素ごとに重み係数を入れるやつ?
そうそう。
averageの使い方としては以下になる。
>>> import numpy as np
>>> A=np.array([1,2,3,4,5])
>>> np.array(A)
array([1, 2, 3, 4, 5])
>>> np.mean(A)
3.0
>>> w=np.array([0.8, 0.9, 1.0, 1.1, 1.2])
>>> np.average(A,weights=w)
3.2
>>>
weights=w
で、重み用のベクトルも一緒に渡せばOKってことか。
まぁ今回は使わないのだろうけど。
平均値の算出と終値から差し引く部分はこんなもんだろう。
まとめ
まとめだよ。
- いままではExcelで終値から平均値を引いた値と算出したものをcsvにしていたが、MATLAB、Pythonで終値を取り込んでから平均値を引く方式に変更。
- MATLAB、Pythonともにmeanという関数/メソッドで平均値算出可能。
- Pythonはaverageという加重平均を算出するメソッドが存在。
バックナンバーはこちら。
コメント