python(パイソン)とyfinance

yfinance から希望のデータを抽出してみる練習。

import yfinance as yf
import pandas as pd

# 取得する指標のティッカーシンボル
tickers = {
"Crude Oil": "CL=F",
"Gold": "GC=F",
"10Y US Treasury": "^TNX",
"VIX": "^VIX",
"SOX": "^SOX",
"BDRY": "BDRY"
}

# データを格納するデータフレームを初期化
data = pd.DataFrame()

# 各ティッカーの8月分の日足データを取得
for name, ticker in tickers.items():
ticker_data = yf.Ticker(ticker).history(start="2024-08-01", end="2024-09-01", interval="1d")

# タイムゾーンを統一し、YYYY-MM-DD形式に変換
ticker_data.index = ticker_data.index.tz_convert(None)
ticker_data.index = ticker_data.index.strftime('%Y-%m-%d')

# 小数点3桁に揃える
ticker_data['Close'] = ticker_data['Close'].round(3)

# 前日との差を計算して記号を追加
ticker_data['Comparison'] = '-'
ticker_data.loc[ticker_data['Close'].diff() > 0, 'Comparison'] = '↑'
ticker_data.loc[ticker_data['Close'].diff() < 0, 'Comparison'] = '↓'

# 数値と記号を結合
ticker_data[name] = ticker_data['Close'].astype(str) + ticker_data['Comparison']

# 必要な列のみを保持
data[name] = ticker_data[name]

# 日付をインデックスから列に変換し、YYYY-MM-DD形式に変換
data['Date'] = data.index
data = data[['Date'] + list(tickers.keys())] # 列の順番を調整

# 日付の新しい順に並び替え
data = data.sort_values(by='Date', ascending=False)

# HTMLテーブルに変換
html_table = data.to_html(index=False, border=1, escape=False)

# 最終出力を表示
print("\n--- 最終出力: HTMLテーブル ---\n")
print(html_table)

今月(8月)の原油、金、米国債、VIX恐怖指数、SOX指数、BDRYのデータを取得するプログラム。テーブルとしてアウトプットしてもらう。前日に比べての上下がわかるように、↑↓を表示させてみた。