株式予測の移動平均とヒストグラムの求め方
金融ファイナンスを分析することがPythonの強みです。
時系列データを分析して株価予測も可能になります。
必要ライブラリをインポートする
python
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
# 可視化ライブラリ
import matplotlib.pyplot as plt
import seaborn as sns# 罫線
sns.set_style('whitegrid')
#pickleファイルで必要なデータを一括保存
#pickleはPythonオブジェクトの直列化(シリアライズ)や非直列化(デシリアライズ)を扱うライブラリ
import pickle
# Pythonで日付と時刻を扱うモジュール
from datetime import datetime
pklファイルより株価データを取得
# 証券コード(GOOG(Google))と同じ変数名 | 2022年4月から23年の4月まで
with open('ファイル名.pkl', 'br') as f:
GOOG = pickle.load(f)
APIで取得する方法
J-Quants APIに登録
無料プランはデータ提供期間が過去2年分[12週間遅延]
リフレッシュトークンとIDトークンの取得と株価データ取得
リフレッシュトークンを取得するPythonコード
python
# リフレッシュトークン取得
import requests
import json
import pandas as pd
# 登録したメールアドレス、パスワードを設定
# EMAIL_ADDRESSに登録メールアドレス、PASSWORDにパスワードを入力
mail_password={"mailaddress":"EMAIL_ADDRESS", "password":"PASSWORD"}
# リフレッシュトークン取得
r_ref = requests.post("https://api.jquants.com/v1/token/auth_user", data=json.dumps(mail_password))
# リフレッシュトークン取得の表示
print(r_ref.json())
# 受け取ったリフレッシュトークンを設定
RefreshToken = r_ref.json()["refreshToken"]
# IDトークン取得
r_token = requests.post(f"https://api.jquants.com/v1/token/auth_refresh?refreshtoken={RefreshToken}")
# IDトークン表示
print(r_token.json())
# 取得したIDトークンを設定
idToken = r_token.json()["idToken"]
headers = {'Authorization': 'Bearer {}'.format(idToken)}
# 銘柄コード、期間を指定
code_ = "8697"
from_ = "2022-12-01"
to_ = "2023-02-28"
# 株価四本値の取得
re_daily_OHLCV = requests.get(f"https://api.jquants.com/v1/prices/daily_quotes?code={code_}&from={from_}&to={to_}", headers=headers)
# pandasデータフレームに変換
df_daily_OHLCV = pd.DataFrame(re_daily_OHLCV.json()["daily_quotes"])
# 'Date'をdatetime型へ変換
df_daily_OHLCV['Date'] = pd.to_datetime(df_daily_OHLCV['Date'])
参照:J-Quants API(無料プランあり)を使用した株価・財務データ取得(Python)
https://taimuoreganoblog.com/miscellaneous_notes/data-acquisition/stock_data_acquisition/
describeで各列の要約統計量(平均、標準偏差など)取得
参照:note.nkmk.me:https://note.nkmk.me/python-pandas-describe/
GOOG.describe()
#情報の出力
GOOG.info()
# 終値時系列をプロット
GOOG['adjClose'].plot(legend=True, figsize=(10, 4))
# 1日に取引が成立した株の数をプロット
GOOG['volume'].plot(legend=True, figsize=(10, 4))
移動平均線(moving average)と呼ばれるグラフ
「移動平均とは、時系列データにおいて、ある一定区間ごとの平均値を区間をずらしながら求めたもの」
参照:統計WEB | https://bellcurve.jp/statistics/blog/15528.html
間隔ごとに移動平均を取得
pandasは金融情報が得意
ma_day = [10, 20, 50]
for ma in ma_day:
column_name = f"MA {ma}"
GOOG[column_name] = GOOG['adjClose'].rolling(ma).mean()
GOOG[['adjClose','MA 10','MA 20','MA 50']].plot(figsize=(10, 4))
pct_changeを使うと変化の割合を算出
GOOG['daily'] = GOOG['adjClose'].pct_change()
日ごとの株式市場の変化率
GOOG['daily'].plot(figsize=(16, 9),#HDサイズのグラフ(1920×1080)が作りたかったら、figsizeを(16, 9)、dpiを120
legend=True,
linestyle='--'#折れ線グラフをイメージ,
marker='v')# 35種類のマーカーが使用可能
前日パーセンテージのヒストグラム
GOOG['daily'].hist(bins=100)
sns.histplot(GOOG['daily'],
bins=100,
kde=True,#カーネル密度推定グラフ / ガウス分布
#実績データをサンプルとして、実績のない値の確率を導き出す手法
color='purple')