こんにちは!今回の記事は前回に引き続きDatetimeオブジェクトの使い方についてです!timedeltaクラスを使用して、日時の差分を表すオブジェクトの作成方法について紹介します。日時データの分析の重要性は前回お伝えしましたが、日数を加算または減算することで、株価や価格の差分を出せるようになります。このことでテクニカル分析を行う上でも様々な利点があります。
特定の期間の平均価格の計算
from datetime import datetime, timedelta
import pandas as pd
# 仮想の株価データフレームを作成
dates = pd.date_range(end=datetime.now(), periods=30, freq='D')
prices = pd.Series([100 + i * 0.5 for i in range(30)], index=dates)
# 過去30日間の平均株価を計算
average_price_last_30_days = prices.mean()
print(f"過去30日間の平均株価: {average_price_last_30_days}")
この例では、pandas
ライブラリを使用して日付範囲を生成し、仮想の株価データを作成しています。その後、timedelta
を用いて指定した期間内の平均株価を計算しています。
特定の期間の値上がり、値下がりの平均価格の計算
# 前日との価格差分を計算
price_changes = prices.diff()
# 値上がり(正の変動)の平均
average_up = price_changes[price_changes > 0].mean()
# 値下がり(負の変動)の平均
average_down = price_changes[price_changes < 0].mean()
print(f"平均値上がり: {average_up}")
print(f"平均値下がり: {average_down}")
このコードは、pandas
のdiff()
メソッドを使って、日ごとの価格変動を計算します。その後、正の変動(値上がり)と負の変動(値下がり)を分けて、それぞれの平均を求めています。今回は人工的に作ったデータで試しているので値上がり平均は0.5、値下がり平均はnanとなります。
EURUSDの過去データを使って分析!
以下は実際のEURUSDの過去データを使って分析するためのコードです。Yfinanceを使うと4本値と出来高など、全てダウンロードされるので「終値のみを抽出」しています。
import yfinance as yf
from datetime import datetime, timedelta
import pandas as pd
# 今日の日付
today = datetime.now()
# 30日前の日付を計算
thirty_days_ago = today - timedelta(days=30)
# 日付を文字列形式に変換
start_date = thirty_days_ago.strftime('%Y-%m-%d')
end_date = today.strftime('%Y-%m-%d')
# EURUSDのデータを指定した期間で取得
data = yf.download("EURUSD=X", start=start_date, end=end_date, interval="1d")
close_prices = data['Close']
# 前日比の変動を計算
price_changes = close_prices.diff()
# 値上がり(正の変動)の平均
average_up = price_changes[price_changes > 0].mean()
# 値下がり(負の変動)の平均
average_down = price_changes[price_changes < 0].mean()
print(f"平均値上がり: {average_up}")
print(f"平均値下がり: {average_down}")
分析結果は上の図の通りです。値上がりするときは22pips、値下がり時は23pipsとほとんど変わらないです。もちろんこのデータを見てどう判断するかは私や皆さま、各投資家次第ですが、timedeltaクラスを使うことで、このように具体的な期間を簡単に加算・減算でき、ファイナンスの分析や予測に役立てることができます。次回は、これらの技術をさらに活用するための応用例を見ていきましょう。
以下是非クリックお願いします。
参考にしたサイト
docs.python.org