WTIの価格を得る

WTIの価格を得る

pip install yfinance

でインストール後

import yfinance as yf

# リアルタイムのWTI価格を取得
wti = yf.Ticker("CL=F")
price = wti.history(period="1d")['Close'].iloc[-1]  # 最新の終値
print(f"Current WTI Price: ${price}")

とすると

[*********************100%***********************]  1 of 1 completed
                 Open       High        Low      Close  Adj Close  Volume
Date                                                                     
2023-01-03  80.570000  81.500000  76.599998  76.930000  76.930000  338520
2023-01-04  77.250000  77.419998  72.730003  72.839996  72.839996  352434
2023-01-05  73.250000  74.919998  72.459999  73.669998  73.669998  300731
2023-01-06  73.970001  75.470001  73.239998  73.769997  73.769997  258128
2023-01-09  73.470001  76.739998  73.470001  74.629997  74.629997  329290

と去年のものが出る

wti.history(period=”1d”) が1日分のデータではなく、
日次の複数日分のデータを取得しています。
これは、yfinanceが日次の過去データを返しているためです。

リアルタイムの価格を取得したい場合は、
次のように interval=”1m” を指定して、
最新の1分ごとのデータを取得することができます。
また、tail(1)で最新の行だけを取得するようにすると良い
とのことなのでコード変更

import yfinance as yf

# リアルタイムのWTI価格を取得(1分間隔の最新データ)
wti = yf.Ticker("CL=F")
data = wti.history(period="1d", interval="1m").tail(1)  # 最新の1分データ
price = data['Close'].iloc[-1]  # 最新の終値
print(f"Current WTI Price: ${price}")

これなら

Current WTI Price: $75.55999755859375

となる

1ヶ月間のデータを取得し折線グラフで表示
yfinance を使用して過去1ヶ月間の日次データを取得し、
matplotlib を使用して折れ線グラフを描画

import yfinance as yf
import matplotlib.pyplot as plt

# WTIデータを取得(1ヶ月間の日次データ)
wti = yf.Ticker("CL=F")
data = wti.history(period="1mo", interval="1d")

# 折れ線グラフの描画
plt.figure(figsize=(12, 6))
plt.plot(data.index, data['Close'], marker='o', linestyle='-', color='b')
plt.title('WTI Price Trend Over Last Month')
plt.xlabel('Date')
plt.ylabel('WTI Price ($)')
plt.xticks(rotation=45)
plt.grid(True)
plt.tight_layout()
plt.show()

これで表示される

次にスクロール機能をつける

pip install plotly

の後

import yfinance as yf
import plotly.graph_objs as go

# WTIデータを取得(3年間の月次データ)
wti = yf.Ticker("CL=F")
data_3yr = wti.history(period="3y", interval="1mo")

# Plotlyグラフの作成
fig = go.Figure()

# 折れ線グラフを追加
fig.add_trace(go.Scatter(x=data_3yr.index, y=data_3yr['Close'], mode='lines+markers', name='WTI Price'))

# グラフのレイアウト設定
fig.update_layout(
    title='WTI Price Trend Over Last 3 Years',
    xaxis_title='Date',
    yaxis_title='WTI Price ($)',
    xaxis_rangeslider_visible=True,  # スクロールバーを追加
)

# グラフを表示
fig.show()

これだと出ない

1年にしてみる

import yfinance as yf
import plotly.graph_objs as go

# WTIデータを取得(1年間の月次データ)
wti = yf.Ticker("CL=F")
data_1yr = wti.history(period="1y", interval="1mo")

# Plotlyグラフの作成
fig = go.Figure()

# 折れ線グラフを追加
fig.add_trace(go.Scatter(x=data_1yr.index, y=data_1yr['Close'], mode='lines+markers', name='WTI Price'))

# グラフのレイアウト設定
fig.update_layout(
    title='WTI Price Trend Over Last 1 Year',
    xaxis_title='Date',
    yaxis_title='WTI Price ($)',
    xaxis_rangeslider_visible=True,  # スクロールバーを追加
)

# グラフを表示
fig.show()

これならOK