【Python金融データ】AlphaVantageの使い方(第3回)

投資・ファイナンス

AlphaVantageの使い方3回目の今回は、前回作成した関数を使って、様々なデータを取得していきたいと思います。
この記事を読めば、AlphaVantageでダウンロードできるデータにどのようなものがあるか一通り理解いただけると思います。
前回作成済みの関数を使うので、前回の記事を確認していない場合は、そちらも併せて読んてみてください。

全体のコードはこちらのGoogleColabに載せています。

ファンダメンタルデータ

個別株の会社情報や財務諸表などのデータを取得可能です。

銘柄概要

企業情報、財務比率、その他の主要な指標を返します。データは通常、決算発表日に更新されます。

get_data('OVERVIEW',api_key, {'symbol':'IBM'})

銘柄概要

配当情報

発表日や配当額、払込日などの過去データを銘柄ごとに取得できます。

get_data('DIVIDEND',api_key, {'symbol':'IBM'})

配当情報

株式分割

各銘柄の株式分割の過去データを得ることができます。

get_data('SPLITS',api_key, {'symbol':'IBM'})

株式分割

損益計算書

四半期単位の損益計算書のデータを取得できます。
1期間で1行になるように整理されているので、分析にも比較的使いやすいです。

get_data('INCOME_STATEMENT',api_key, {'symbol':'IBM'})

損益計算書

バランスシート

バランスシートについても損益計算書と同様に取得可能です。

get_data('BALANCE_SHEET',api_key, {'symbol':'IBM'})

バランスシート

キャッシュフロー計算書

キャッシュフロー計算書についても損益計算書、バランスシートと同様に取得可能です。

get_data('CASH_FLOW',api_key, {'symbol':'IBM'})

キャッシュフロー計算書

実績、予想EPS

実績と予想のEPSとその差分(サプライズ)のデータを得ることができます。予想値を得られるデータベースは貴重なので、うまく活用できるかもしれません。市場はサプライズで動くので、サプライズに着目した分析に使えます。

get_data('EARNINGS',api_key, {'symbol':'IBM'})

EPS

決算発表日と予想EPS

今後3か月、6か月、12か月の決算発表日の一覧と一部企業の予想EPSを取得できます。
jsonではなくcsvでの出力になります。

get_data('EARNINGS_CALENDAR',api_key, {'horizon':'3month'}, csv=True)

決算発表日と予想EPS

コモディティ

原油、天然ガス、銅、小麦などのコモディティ価格を取得できます。
interval=はmonthly、quarterly、annualが指定可能です。
取得できるコモディティの一覧と取得方法は以下になります。

get_data('WTI',api_key, {'interval':'monthly'})
get_data('BRENT',api_key, {'interval':'monthly'})
get_data('NATURAL_GAS',api_key, {'interval':'monthly'})
get_data('COPPER',api_key, {'interval':'monthly'})
get_data('ALUMINUM',api_key, {'interval':'monthly'})
get_data('CORN',api_key, {'interval':'monthly'})
get_data('WHEAT',api_key, {'interval':'monthly'})
get_data('SUGAR',api_key, {'interval':'monthly'})
get_data('COTTON',api_key, {'interval':'monthly'})
get_data('COFFEE',api_key, {'interval':'monthly'})

経済指標

以下のような経済データを取得可能です。多くの指標がFRESやセントルイス連銀のデータベースをデータ元としているようです。
指標ごとに頻度などを指定可能です。

  • 実質GDP
  • 一人当たり実質GDP
  • 国債利回り
  • FF金利
  • 消費者物価指数
  • インフレーション
  • 小売売上高
  • 耐久財
  • 失業
  • 非農業部門雇用者指数
# 実質GDP
get_data('REAL_GDP', api_key, {'interval': 'annual'})

# 一人当たり実質GDP
get_data('REAL_GDP_PER_CAPITA', api_key)

# 国債利回り
get_data('TREASURY_YIELD', api_key, {'interval': 'monthly', 'maturity': '10year'})

# FF金利
get_data('FEDERAL_FUNDS_RATE', api_key, {'interval': 'monthly'})

# 消費者物価指数
get_data('CPI', api_key, {'interval': 'monthly'})

# インフレーション
get_data('INFLATION', api_key)

# 小売売上高
get_data('RETAIL_SALES', api_key)

# 耐久財
get_data('DURABLES', api_key)

# 失業
get_data('UNEMPLOYMENT', api_key)

# 非農業部門雇用者指数
get_data('NONFARM_PAYROLL', api_key)

オプションデータ

オプションのヒストリカルデータを取得できます。
リアルタイムデータはプレミアムのみ取得可能です。

get_data('HISTORICAL_OPTIONS',api_key, {'symbol':'IBM'})

その他のデータ

ニュース、センチメント

特定の銘柄に関するニュースとのセンチメントスコアを取得できます。
ニューストピックとしては以下の項目を指定できます。

  • ブロックチェーン:blockchain
  • 収益:earnings
  • 新規株式公開:ipo
  • 合併と買収:mergers_and_acquisitions
  • 金融市場:financial_markets
  • 経済 – 財政政策(例:税制改革、政府支出):economy_fiscal
  • 経済 – 金融政策(例:金利、インフレ):economy_monetary
  • 経済 – マクロ/全体:economy_macro
  • エネルギーと輸送:energy_transportation
  • ファイナンス:finance
  • ライフサイエンス:life_sciences
  • 製造:manufacturing
  • 不動産・建設:real_estate
  • 小売卸売:retail_wholesale
  • テクノロジー:technology
get_data('NEWS_SENTIMENT',api_key, {'tickers':'AAPL'})

ニュースのサマリーやURL、センチメントスコアなどを取得できます。

ニュース

上昇銘柄と下落銘柄

米国市場で上昇銘柄、下落銘柄、および最も活発に取引されている銘柄の上位 20 件を取得できます。

get_data('TOP_GAINERS_LOSERS',api_key,df_name="top_gainers")
get_data('TOP_GAINERS_LOSERS',api_key,df_name="top_losers")

上昇銘柄と下落銘柄

銘柄の統計値情報

銘柄を指定して、特定の期間の統計値を取得することもできます。
AAPL、MSFT、IBM について、2023 年 7 月 1 日から 2023 年 8 月 31 日までの日次終値に基づいて、リターンの平均と標準偏差、相関を取得する場合には以下のように書くことができます。

params = {'SYMBOLS': 'AAPL,MSFT,IBM', 
          'RANGE': ['2023-07-01', '2023-08-31'], 
          'INTERVAL': 'DAILY', 
          'OHLC': 'close', 
          'CALCULATIONS': 'MEAN,STDDEV,CORRELATION'}


function = 'ANALYTICS_FIXED_WINDOW'

df = get_data(function, api_key, params,df_name='payload')
df

期間の指定は最小、分単位まで可能です。
取得可能な統計値の一覧は以下の項目になります。

  • MIN: 最小リターン
  • MAX: 最大リターン
  • MEAN: リターンの平均
  • MEDIAN: リターンの中央値
  • CUMULATIVE_RETURN: 初めから終わりまでの合計リターン
  • VARIANCEVARIANCE(annualized=True): リターンの母集団分散。オプションで、出力を年間値に正規化するために使用できます。デフォルトでは、分散は年間化されません。
  • STDDEV: リターンの母標準偏差。オプションで、STDDEV(annualized=True)出力を年間値に正規化するために使用できます。デフォルトでは、標準偏差は年間化されません。
  • MAX_DRAWDOWN: 最大ドローダウン
  • HISTOGRAM: 各シンボルについて、観測された合計リターンをヒストグラムにします。デフォルトでは、bins=10 です。HISTOGRAM(bins=20)のようにbinを指定できます。
  • AUTOCORRELATION: 自己相関。デフォルトでは、ラグ=1 です。AUTOCORRELATION(lag=2)のようにlagを指定できます。
  • COVARIANCECOVARIANCE(annualized=True): 銘柄間の共分散行列を返します。オプションで、出力を年間値に正規化するために使用できます。デフォルトでは、共分散は年間化されません。
  • CORRELATION: 銘柄間の相関行列(デフォルトはピアソン)を返します。 CORRELATION(method=KENDALL),CORRELATION(method=SPEARMAN)のように相関の手法を設定できます。

似たようなデータとして、特定期間のローリングの統計値を取得することも可能です。
AAPL と IBM について、過去2か月間のWindowSizeを20の(=つまり直近20日)、リターンの平均と年率標準偏差を計算する場合は次のようになります。

params = {
    'function': 'ANALYTICS_SLIDING_WINDOW',
    'SYMBOLS': 'AAPL,IBM',
    'RANGE': '2month',
    'INTERVAL': 'DAILY',
    'OHLC': 'close',
    'WINDOW_SIZE': '20',
    'CALCULATIONS': 'MEAN,STDDEV(annualized=True)',
}
get_data(function, api_key, params,df_name='payload')

上場日、上場廃止日

米国株とETFの上場日、上場廃止日の一覧を取得できます。

import pandas as pd
import requests
from io import StringIO

CSV_URL = f'https://www.alphavantage.co/query?function=LISTING_STATUS&apikey={api_key}'

with requests.Session() as s:
    download = s.get(CSV_URL)
    decoded_content = download.content.decode('utf-8')

    # StringIOを使ってPandasのデータフレームに変換
    df = pd.read_csv(StringIO(decoded_content))

df

IPOカレンダー

IPO予定日の一覧を取得できます。

get_data('IPO_CALENDAR',api_key, csv=True)

各種テクニカル指標

様々なテクニカル指標についても計算結果を取得できます。
例えば、最もシンプルなSMAの結果を以下のようにすると取得できます。
USDEURの週次10期間ごとの始値ベースのSMAの計算結果を取得します。

params = {
    'symbol': 'USDEUR',
    'interval': 'weekly',
    'time_period': 10,
    'series_type': 'open',
}
get_data('SMA', api_key, params,df_name='Technical Analysis: SMA').T

他にも様々なテクニカル指標の数値が取得できるので、興味のある方は、公式ドキュメントをもとに取得してみてください。

タイトルとURLをコピーしました