金融ファイナンスを分析することが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

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コード

リフレッシュトークン取得

リフレッシュトークン取得

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/miscellaneousnotes/data-acquisition/stockdata_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')