見出し画像

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

普段、FB、ブログ、ツイッターで使っているチャート表示プログラムを公開しますね

米国ヤフーファイナンスから株価情報は取得しています

また、Pythonプログラムですが、グーグルコラボを利用すると、PCへのインストール無しに実行が可能です
グーグルのページにコピペして貼り付け、実行ボタンを押すだけです
一度コピペしたら、その内容覚えてくれてますから、2回目以降は実行ボタンを押すだけです

グーグルコラボはここ

つまずくようだったら、詳細な説明がこちらに

表示させたい株価のティッカーシンボルを
ここと
tickers = ['USDJPY=X', '^GSPC','ACWI', 'QQQ']
ここに
plt.plot(normalized_data['^GSPC'], label='S&P500')
追加・削除してください

また、開始日で正規化しています(100に)
よって、現在の値から100を引くと、開始日からの利回りが求まります

日付は、ご自由に変更してください
start_date = '2024-01-01'
また、プロットする開始日も選べます
ここ
plot_start_date = '2024-01-01'

終了日ですが、省略しています(よって現在の日付)
違う日付を設定したかったら、下記の頭のコメントアウト”#”を削除して日付を設定してください
#end_date = '2023-12-31' # Assuming current date

プロット値ですが、市場終了時の調整値('Adj Close')です。

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

# Define the tickers #tickers  = ['USDJPY=X', 'SPY','ACWI', 'QQQ']
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  = '2023-12-31'  # 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']

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

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

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

# Plotting
plt.figure(figsize=(12, 6)) #for  ticker in normalized_data.columns:
#    plt.plot(normalized_data[ticker], label=ticker)
plt.plot(normalized_data['QQQ'], label='NASDAQ100')
plt.plot(normalized_data['^GSPC'], label='S&P500')
plt.plot(normalized_data['ACWI'], label='All Country')
plt.plot(normalized_data['USDJPY=X'], label='USDJPY=X')
plt.title('Normalized Prices of USD/JPY, S&P500, All Country, and NASDAQ100 from Jan. 2024 to Present')
plt.xlabel('Date')
plt.ylabel('Normalized Price')
plt.legend()
plt.grid(True)
plt.show()

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