高配当ETFや金ETFが今年はどのような値動き・リターンかご存じですか? 新興国ETF、米国債ETFだけでなく原油ETFやナスダックETFなど、18種類のETF・指数の現状と傾向を知り、今後の予測に役立てよう!【Google Colab・コピペで動く!】

スポンサーリンク
投資

11月になり、今年の投資成績の着地点が見えてくる中、どのようなアセットクラス、投資対象がどのような値動きをしたかをまとめます。また、来年の投資戦略についてもデータを基にした投資判断、決定ができればと思います。

2022/03/18追記:最新のデータを自動取得し、実行するようにしました。こちらが最新のデータとなります。

今年のアセットクラス(ETF評価)毎の現在のパフォーマンス

今年のアセットクラス(ETF評価)のボラティリティとリターンの関係

2022/01/05年初から2022/12/28を見るとこのようになります。

今年は前半に石油関係とコモディティ(ゴールド)を持っていたかどうかで結果が分かれましたね。昨年はテスラとモデルナを持っていれば安泰だった事の揺り戻しのような展開でした。

酷いというか見るに堪えないのはアーク(ARKK)やビットコイン関係ですね。ARKKはこうなる宿命かとは思っていましたが、思っている以上に下げていますね。短期・中期・長期債券ETFも下げて、SOXも良いところなし、、、といった感じです。

2022/02/24のロシアによるウクライナ侵攻から、そしてその前からリスクマネーは手を引っ込めていて、いい所無し、、そんな感じです。

2022/01/05年初から2022/0318の値動きをパーセントでの累積で見るとこのようになります。

Y2D asset20220318

また、このデータは投資カテゴリーにて表示されるようにしています。

2021/12/11追記:以前の記事と合わせて、直近6カ月・直近一カ月の動向、気になる銘柄のみ抽出する方法も記述しました。

円ドルのコードをJPYUSD=Xとしていましたが、正確にはJPY=Xでした。コードの方は訂正させていただきました。スクリーンキャプチャはその時点の結果を尊重し、そのままになっています。

本記事の目的

以下のようなツイートを行いました。

今年の各資産の値動きを確認し、来年の投資戦略策定の参考にしたいと思います。
また、”感覚的に強い・弱い、勢いがあるらしい”ではなく、データを確認することで、世界では何が起こっているのか、どのような投資主体がどのようなどのような状況にあるのかの理解の参考になるかと思います。

データの取得

今回のデータハYahoo! US USのサイトから

米国株
SPY:S&P500連動ETF
QQQ : NASDAQ100指数連動ETF
DIA : ダウ指数連動ETF
IWM : 米国の小型株で構成される指数(ラッセル2000)連動ETF
ARKK : キャシー・ウッド氏率いるアーク・インベストメント・マネジメントのイノベーションに焦点を当てたETF

債券
SHY : 米国国債 1-3年 ETF
IEF : 米国国債 7-10年 ETF
TLT : 米国国債 20年超 ETF

コモディティ
DBC : インベスコ DB コモディティ インデックス トラッキング ファンド
USO : WTI原油連動ETF
GLD : 金地金との連動ETF
SLV : 銀ETF

新興国
BKF : BRIC ETF

通貨
BTC-USD : ビットコイン(BTC/USD)
ETH-USD : イーサリアム(ETH/USD)
JPY=X : 円ドル

指数
^SOX : SOX指数(フィラデルフィア半導体株指数)
^N225 : 日経225

を対象とします。データ期間は昨年末から現在(2021/11/14)までとします。

Pythonによる分析

今回も以前同様使用するツールはGoogle Colaboratoryのpythonを使います。無料で、簡単に行うことができます。Google Colaboratoryについては以前書いた記事をご参照いただければと思います。

実際のコードとやっていること

コードは以下の通りです。

!pip install yfinance --upgrade --no-cache-dir

import datetime
import yfinance as yf
import matplotlib.pyplot as plt
import pandas as pd
pd.options.display.float_format = '{:.4f}'.format

start_D="2020-12-30"
end_D = datetime.date.today()
codelist = [
    "SPY","QQQ","DIA","IWM","ARKK",
    "SHY","IEF","TLT",
    "DBC","USO","GLD","SLV",
    "BKF",
    "BTC-USD","ETH-USD","JPY=X",
    "^SOX","^N225"
]



data2 = yf.download(codelist, start=start_D, end=end_D)["Adj Close"]
display(data2.head().append(data2.tail()))
df_all=(1+data2.pct_change()).cumprod()
display(df_all.head().append(df_all.tail()))

df_all.plot(figsize=(8,6),fontsize=18)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)  

plt.grid(True)
plt.show()

df_Y=data2.groupby([lambda x: x.year]).last()
df_Y_pct=100*df_Y.pct_change()

display(df_Y,df_Y_pct.dropna())

データを取得し、パーセント変化率を求めグラフへとプロットを行います。
イーサリアム(ETH-USD)とビットコイン(BTC-USD)が非常に大きな上昇をしているようです。実際にどのような値動きだったのか、確認してみます。

display(df_Y_pct.dropna().sort_values(by=[2021],ascending=False,axis=1).T)


df_Y_pct.dropna().sort_values(by=[2021],ascending=False,axis=1).T.plot.bar(figsize=(15,4),fontsize=18)
plt.legend(loc='center left',bbox_to_anchor=(1, 0.5), fontsize=18)
plt.grid(True)

plt.show()

イーサリアム(ETH-USD)は昨年末740だったものが4600、価格としては6倍などになったようです。

ビットコイン(BTC-USD) も29000が64000、同じく価格としては2倍、これも大きく上昇したようです。

暗号資産関係はその法的根拠など、ファンダメンタルなどいろいろ意見がありますが、値動きという意味から考えれば、トレーダーとしては見逃すことのできない資産クラスになってきているようです。

またETFという派生商品も出てきて、投資などにあまり縁のなかった多くの一般の方にも注目されてきているようにも感じています。

ここまで大きな上昇をすると、対数で変化率の分析を行う必要ありますが、逆に他の銘柄群との比較が際立つので、ここでは敢えて、パーセントだけで行ってみました。

効率的フロンティア

効率的フロンティアの考え方をもとに、リスクとリターンの分析を行います。

具体的には以下の記事を参考にしてください。

今回のコードでは以下の通りです。

df_D=data2.pct_change()
df_Dex=data2.drop(["BTC-USD","ETH-USD"], axis=1).pct_change()

import seaborn as sns
plt.rc("legend", fontsize=18)
import warnings
warnings.filterwarnings('ignore')

def check(df_check):
    out_analyse=pd.DataFrame(index=df_check.columns)
    out_analyse["return"]=250*df_check.mean()
    out_analyse["volatility"]=16*df_check.std()
    out_analyse["sharpR"]=out_analyse["return"]/out_analyse["volatility"]

    # ボラティリティ、リターン、シャープレシオ チェック
    plt.style.use('seaborn-dark')
    ax= out_analyse.plot.scatter(x='volatility', y='return', c='sharpR',
                    cmap='RdYlGn', edgecolors='black', figsize=(8, 4), grid=True,sharex=False,s=100)
    for i,(x,y) in enumerate(zip(out_analyse["volatility"],out_analyse["return"])):
        ax.annotate(str(out_analyse.index[i]),(x,y))
    plt.show()

check(df_D)
check(df_Dex)

今回の例ではイーサリアムとビットコインがあまりにもボラティリティが大きく、かつリターンも大きいので、その二つを除外したものだけでもプロットしてみました。

また、この二つがあまりにも大きな動きでしたので、他の銘柄の値動きが小さく感じてしまいますが、USOという原油や、SOX半導体指数も強い動きでした。

また、S&P500のボラティリティとリターンのバランスであるシャープレシオは非常に高いものがあります。インデックス投資は王道、投資初心者だけでなく、本質的な戦略として支持されるのもうなずけますね。

2021/12/11追記分: 直近6カ月・直近一カ月の動向、気になる銘柄のみ抽出する方法

直近6カ月・直近一カ月の動向、気になる銘柄のみ抽出する方法をご紹介します。

これについては以前紹介した 【コピペで動く!】20行で資産運用モデル作成 長期、中期、短期の3区分の期間チャートをPythonで作成 【違いをみつけろ!】を利用します。

実際のコードは以下のようになります。

def SidePlot3(df_all,zone1_start,zone2_start):
      import matplotlib.dates as mdates
      import numpy as np
      dateformat=mdates.DateFormatter('%y/%m/%d')
      plt.rcParams["font.size"] = 18
      fig, axs = plt.subplots(1,3, figsize=(20, 8),sharey=False)

      for code in df_all.columns :
          axs[0].plot(df_all[code].index,(1+df_all[code]).cumprod(),linewidth = 3.0)
      axs[0].axvline(x=zone1_start,linewidth=2,color="b")
      axs[0].axvline(x=zone2_start,linewidth=2,color="r")        
      axs[0].axhline(y=1,linewidth=2,color="r")
      axs[0].grid(True) 
      axs[0].xaxis.set_major_formatter(dateformat)

      for code in df_all.columns :
          axs[1].plot(df_all[code][zone1_start:].index,(1+df_all[code][zone1_start:]).cumprod(),linewidth = 3.0,label=code)
      axs[1].axhline(y=1,linewidth=2,color="r")
      axs[1].grid(True) 
      axs[1].axvline(x=zone2_start,linewidth=2,color="r")    
      axs[1].xaxis.set_major_formatter(dateformat)
      
      for code in df_all.columns :
          axs[2].plot(df_all[code][zone2_start:].index,(1+df_all[code][zone2_start:]).cumprod(),linewidth = 3.0,label=code)
      axs[2].legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)   
      axs[2].axhline(y=1,linewidth=2,color="r")
      axs[2].grid(True) 
      axs[2].xaxis.set_major_formatter(dateformat)
      
      fig.autofmt_xdate() 
      
###ここまでが3枚のチャートを表示する関数です。

import numpy as np
from dateutil.relativedelta import relativedelta

#t1 = np.datetime64("2020-10-29")
#t2 = np.datetime64("2021-02-13")

t1 = datetime.date.today() - relativedelta(months=6)
t2 = datetime.date.today() - relativedelta(months=1)

df_pct=data2.pct_change()

SidePlot3(df_pct,t1,t2)   

relativedelta(months=1) という関数を使うことで一カ月前の日付を取ってくることができます。今回の例では1カ月前と6カ月前の日付となります。

また、興味ある銘柄のみ表示したい場合は以下のようにして絞り込むことができます。

df_pct=data2[["ARKK","GLD","QQQ","SPY","TLT","USO"]].pct_change()

SidePlot3(df_pct,t1,t2)   

直近どのような値動きなのか、簡単に確認できます。

2021/12/11追記終わり

来年以降の戦略

仮想通貨関係に全額かけるというような投資はできませんが、ポートフォリオの5%程度は入れておかないと”持たざるリスク”というようなものを感じる存在感のある資産になってきたようです。半減期など、需給的なものも踏まえ、強い展開も視野に入れる必要があるかもしれません。

投資余力、ドローダウン耐性など、人によって違いますので、断定的なことは言えませんが、2021年の値動きという部分では、非常に象徴的な値動きだったように思われます。

ディスクレーマー

投資に関する免責事項情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。

---

Pytho,投資関係に関する記事をご紹介します。

Python高速化! for文は遅いので、”これ”を使うと30倍早いですよ!【Google ColabのPython:コピペで動く!】
【コピペで動く!】Pythonで1.5GBのcsvファイル読み込み高速化:1分5秒⇒4秒程度 DASK , pickle (Pythonコードあり)
【コピペで動く!】日本株、米国株で個別銘柄ベータ値(β値)を簡単に調べる方法 Python 米国株 Webサービス&コード 【Google Colabで違いをみつけろ!】
【コピペで動く!】Google ColabでPython を用いての 効率的フロンティア と ポートフォリオの最適化 Efficient Frontier & Portfolio Optimization with Python [Part 2/2]
【コピペで動く!】20行で資産運用モデル作成 Google ColabのPythonで 米国株の株価を取得し、グラフ・チャートを表示
過去50年間のS&P500の季節性の値動きから負けにくいポジション構築はできるのか考える・大統領選挙のアノマリー対応!【コピペで動く!】Google ColabのPythonで自分で調べてみよう!
曜日による米国株指数(S&P500)のパフォーマンスに違いはあるのか?有利なポジション取りはできるのか?【Google ColabのPython:コピペで動く!】Twitterで出てくる知見は本当か自分で調べてみよう。
【解決】スクレイピングでHTTP Error 403: Forbiddenでアクセスできないときに試すべき方法【コピペで動く!】【Google Colab:Python:pd.read_html,selenium】
【解決】Google ColabのPythonでエクセル(Excel)ファイルやCSVファイルに出力・入力する方法【コピペで動く!】
【コピペで動く!】レイ・ダリオ推奨「オール・ウェザー戦略」をETFで構築するには? ETFの手軽さとそのパフォーマンスの高さとは!【違いをみつけろ!】
【コピペで動く!】IB証券(インタラクティブ・ブローカーズ証券 )へのPythonでのAPI接続 ib_insync [自分が使っているPythonコード]
米国債のゼロクーポン債STRIPSについてのメモ
自動化・効率化でなにができるのか!Google FinanceやYahoo Financeからデータ取得して年初来パフォーマンスや週次騰落率のファクターチェック
米国株のティッカー(Symbol)のスクレイピングによる取得、APIによるヒストリカルデータやファンダメンタルズデータ取得について【コピペで動く!】Python,Quandl,無料枠あり
Google ColabでYouTube動画を開始・終了の時間を指定してPythonでダウンロード(音声・動画両方対応)【コピペで動く!】

コメント

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