人口知能を使った株価予想への1歩
ここでは、Pythonを使って株価分析を行うにあたり、初歩的な説明を行います。
米国のテスラ社の株価と日本のトヨタ社の株価を2021年1月1日~2022年5月27日のデータをYahooから読みだしてみます。米国株の場合は、短縮したティッカー名を使用。テスラの場合は"TSLA"となります。日本株の場合は、割り当てられたコード名を使用。トヨタの場合は、"7203"に".T"を付け加えて"7203.T"となります。
import pandas_datareader.data as data
us_stock = data.DataReader('TSLA','yahoo','2021-01-01' ,'2022-05-27')
jp_stock = data.DataReader('7203.T','yahoo','2021-01-01' ,'2022-05-27')
テスラの株価(us_stock)は以下の通りです。
High Low Open Close Volume Adj Close
Date
2020-12-31 718.719971 691.119995 699.989990 705.669983 49649900 705.669983
2021-01-04 744.489990 717.190002 719.460022 729.770020 48638200 729.770020
2021-01-05 740.840027 719.200012 723.659973 735.109985 32245200 735.109985
2021-01-06 774.000000 749.099976 758.489990 755.979980 44700000 755.979980
2021-01-07 816.989990 775.200012 777.630005 816.039978 51498900 816.039978
... ... ... ... ... ... ...
2022-05-23 679.960022 638.059998 655.020020 674.900024 29634500 674.900024
2022-05-24 653.919983 620.570007 653.530029 628.159973 29697500 628.159973
2022-05-25 669.320007 623.010010 623.849976 658.799988 30713100 658.799988
2022-05-26 718.669983 653.659973 661.419983 707.729980 35334400 707.729980
2022-05-27 759.799988 720.530029 723.250000 759.630005 29630300 759.630005
355 rows × 6 columns
'Close'が終値になります。簡単ですよね!以下'High'が高値、'Low'が安値、'Open'がオープン値、'Volume'が出来高、'Adj Close'が調整値となります。トヨタも同じ形式で呼び出されています。
2021年1月1日から指定しているのに何故か2020年12月31日からデータを読み出されていますが。。。。
次に移動平均を求める
先ほど読みだしたTSLAのデータを使っての5日移動平均を求めてみます。
import pandas as pd
MA_5 = us_stock.rolling(window=5).mean()
windowの'5'を'25'に変えれば25日移動平均。簡単ですよね!5日移動平均の結果は以下の通りです。
High Low Open Close Volume Adj Close
Date
2020-12-31 NaN NaN NaN NaN NaN NaN
2021-01-04 NaN NaN NaN NaN NaN NaN
2021-01-05 NaN NaN NaN NaN NaN NaN
2021-01-06 NaN NaN NaN NaN NaN NaN
2021-01-07 759.007996 730.362000 735.845996 748.513989 45346440.0 748.513989
... ... ... ... ... ... ...
2022-05-23 732.104004 678.965991 713.578003 703.928003 32788000.0 703.928003
2022-05-24 709.992004 657.309998 694.812012 677.238000 33378420.0 677.238000
2022-05-25 691.756006 641.750000 670.678003 667.035999 33666920.0 667.035999
2022-05-26 688.690002 633.659998 661.562000 666.697998 34714020.0 666.697998
2022-05-27 696.333997 651.166003 663.414001 685.843994 31001960.0 685.843994
355 rows × 6 columns
観ての通り、全ての項目において移動平均が計算されています。NaNは「空値」。今回の場合は5日間のデータが揃わない部分がNaNとなります。
次にMACDを求める
MACDとは、Moving Average Convergence Divergenceの略で、移動平均の一種ですが、昔の数字よりも最近の数字を重視した平均値を計算しています。
- 短期指数平滑移動平均(短期EMA)
- 長期指数平滑移動平均(長期EMA)
- MACD = 短期EMA - 長期EMA
- シグナル = MACDの指数平滑移動平均
また先ほどと同じくTSLAのデータを使います。移動平均の時は全ての項目に対して移動平均が計算されていましたが、今回は「終値」にターゲットを絞りながら、計算過程をMACDというデータフレームへ追加する方法を採用しています。
import pandas as pd
MACD = us_stock
MACD = MACD.drop(['High','Low','Open','Volume','Adj Close'], axis=1)
MACD = MACD.rename(columns={'Close':'株価'})
MACD['短期EMA'] = MACD['株価'].ewm(span=12, adjust=False).mean()
MACD['長期EMA'] = MACD['株価'].ewm(span=26, adjust=False).mean()
MACD['MACD'] = MACD['短期EMA'] - MACD['長期EMA']
MACD['Signal'] = MACD['MACD'].ewm(span=9,adjust=False).mean()
MACDのデータフレームは以下の通りです。
株価 短期EMA 長期EMA MACD Signal
Date
2020-12-31 705.669983 705.669983 705.669983 0.000000 0.000000
2021-01-04 729.770020 709.377681 707.455171 1.922510 0.384502
2021-01-05 735.109985 713.336497 709.503676 3.832821 1.074166
2021-01-06 755.979980 719.897033 712.946365 6.950668 2.249466
2021-01-07 816.039978 734.688255 720.582929 14.105326 4.620638
... ... ... ... ... ...
2022-05-23 674.900024 747.055582 818.691386 -71.635804 -59.792044
2022-05-24 628.159973 728.763949 804.577948 -75.813998 -62.996435
2022-05-25 658.799988 718.000263 793.779580 -75.779317 -65.553011
2022-05-26 707.729980 716.420220 787.405536 -70.985316 -66.639472
2022-05-27 759.630005 723.067879 785.348089 -62.280210 -65.767620
355 rows × 5 columns
- Signal より MACD が大きい時は上昇トレンド
- Signal より MACD が小さい時は下降トレンド
これで売買戦略を立てる訳です。
なんか「億万長者への道」ってワイディングロードじゃなく、簡単にたどり着けそうな気しませんか?
次は、売買アルゴリズムを考える前に、売買アルゴリズムの結果を検証するためのツールを作成しようと思います。
では、See you later~(^^♪
更新履歴
- 2022.06.7
- 新規作成
0 件のコメント:
コメントを投稿