見出し画像

米国株価情報をチャート表示するプログラム公開(円ベース)

先程のドルベースと基本同じですが、各種株価情報にドル円をかけています。
違いはそれと、
あと、証券会社の発表気になるでしょうから、前日からの変化率も印刷するようにしています。

 #円建て 、NASDAQ100、S&P500、オールカントリー比較
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Define the tickers
tickers = ['USDJPY=X', '^GSPC','ACWI', 'QQQ']

# Define the start and end date
start_date = '2024-01-01'
plot_start_date = '2024-01-01' #end_date  = '2024-01-10'  # Assuming current date

# Download the data #data  = yf.download(tickers, start=start_date, end=end_date)['Adj Close']
data = yf.download(tickers, start=start_date)['Adj Close']

# Convert SPY and QQQ prices to JPY
data['^GSPC_JPY'] = data['^GSPC'] * data['USDJPY=X']
data['QQQ_JPY'] = data['QQQ'] * data['USDJPY=X']
data['ACWI_JPY'] = data['ACWI'] * data['USDJPY=X']

# Select only the converted and USDJPY data
data_jpy = data[['USDJPY=X', '^GSPC_JPY', 'QQQ_JPY', 'ACWI_JPY']]

# Drop rows with NaN and then forward fill to handle any remaining NaN values
data_jpy.dropna(inplace=True)
data_jpy.fillna(method='ffill', inplace=True)

# Normalizing the data (scaling to the first valid data point for each series)
normalized_data_jpy = data_jpy / data_jpy.iloc[0] * 100

# プロット範囲を設定
normalized_data_jpy = normalized_data_jpy[normalized_data_jpy.index >= plot_start_date]

# Plotting
plt.figure(figsize=(12, 6)) #for  ticker in normalized_data_jpy.columns:
#    plt.plot(normalized_data_jpy[ticker], label=ticker)
plt.plot(normalized_data_jpy['QQQ_JPY'], label='NASDAQ100_JPY')
plt.plot(normalized_data_jpy['^GSPC_JPY'], label='S&P500_JPY')
plt.plot(normalized_data_jpy['ACWI_JPY'], label='ALL Country_JPY')
plt.plot(normalized_data_jpy['USDJPY=X'], label='USDJPY=X')
plt.title('Normalized Prices of USD/JPY, S&P 500 (JPY), ACWI(JPY), and NASDAQ100 (JPY) from Jan 2023 to Present')
plt.xlabel('Date')
plt.ylabel('Normalized Price (JPY)')
plt.legend()
plt.grid(True)
plt.show()

print("")

for symbol in ['^GSPC_JPY', 'QQQ_JPY', 'ACWI_JPY']:
    # 終値を取得し、NaNを除去
    prices = normalized_data_jpy[symbol].dropna()

    #前日からの変化率 
    # 最新の終値と前日の終値を取得
    latest_price = prices.iloc[-1]
    prev_price = prices.iloc[-2]

    # 円建ての変化率を計算
    change_jpy = (latest_price - prev_price) / prev_price * 100
    # 結果を表示
    print(f"{symbol}の前日からの変化率: {change_jpy:.2f}%")

print("")
print(data.tail())

この記事が気に入ったらサポートをしてみませんか?