2020.09.03ETF/インデックスのベン図を書いてみようツイートシェアはてブ送るコピーしましたリンクをコピーインデックス投資を行う上で、そのインデックスや具体的な投資対象となるETFの銘柄構成を知ることは重要です。VOOとVTIのように似たインデックスで比較するときは、何が共通していて、何が違っているのか考えてみることも重要です。今回は、そんな差分比較をベン図を使って直感的にやってみます。補足きっかけETFやインデックスのベン図を書くというアイデアを知ったのは、Twitterでハルさんの以下のようなツイートを見たことでした。各ETFの構成銘柄も結構入れ替わったので、久しぶりに私の主要ETFの銘柄重複数のベン図を作成しました。再度SPYDとVIGの銘柄重複がなくなりましたね。※他のETFも色々銘柄入れ替わってますので、作成して欲しい方いましたら対象ETFをご連絡頂ければ時間空いた時に作成します。2020こちらは高配当で人気のSPYDや、昨今のハイテク隆盛で人気のQQQなど、今を時めく米国株ETFの構成銘柄でベン図を書いています。円の大きさで構成銘柄の多さを、円の重なりで構成上の類似性を直感的に掴むことができ、こういう視覚的アプローチはとてもいいですね。ハルさんはこのツイートの中でも「他のETFも見たい方はリクエストください」と仰っていますが、やはり自分でしょーもないところ含めて色々やってみたいので、自分でもベン図作りにチャレンジすることにしました。銘柄数の重複をコマンドラインでカウントPythonのベン図ライブラリを使って描画する話なので、この2行を見て「ははーん」と思える方は簡単にできると思います。私も本業はITエンジニアなので特に躓くことはありませんでしたが、そもそもコマンドラインに触れたことがない場合にはちょっとハードルが高いかもしれません。ベン図の書き方それでは本編です。以下の3ステップでできます。事前準備(データ/環境)まずは実際の作業をする前に少し準備をします。データの準備ハルさんが米国株でやっていて、車輪の再発明をするのもあれなので、私は日本株でやってみます。日経225TOPIXJPX日経400ですね。これらの構成銘柄はググったらすぐ見つかるので、構成銘柄の証券コードだけを記載した、以下のようなファイルをそれぞれ作っておきます。場合133213331605172118011802...9984このとき、記載する証券コード(日本株の場合)やティッカー(米国株の場合)は昇順または降順で各ファイル同じようにソートされているようにしてください。いうわけで、データとしてNIKKEI225.txtTOPIX.txtJPX400.txtを準備しましょう。コンピュータ上で日本語を使うと何かと面倒なのでアルファベットだけにしておくと楽です。実際のグラフ描画はPythonで行いますが、利用するvenn3は標準で導入されていないと思うので、手元の環境に導入しておいてください。Windowsでやっていますが、MacやLinuxでも同様ですし、Python環境なのでそのままWindows上で動かすことも一応できると思います。今はWindowsでもWSL2を使って簡単にCLI環境が手に入るので楽になったなと感じます。具体的には、Pythonのpipを使ってインストールできるので、pipの使い方とインストール(Python-izm)あたりを参考にしてpipを導入し、以下のコマンドでライブラリをインストールしましょう。作り、Pythonから実行してみてください。いうファイルができていますので、その中身が以下のように描けていれば準備完了です。ライブラリ様様ですね。実際にベン図を書いていきましょう。format="pdf")上のプログラムは今回の日本株ベン図に即した名前や数字を入れていますが、適宜調べたい対象の名前や個数で書き換えてください。JPX400JP_ETFs.pdfこれを見ると「東証1部上場銘柄の全てを含むTOPIX」というのがよくわかりますね。スポンサーリンクまとめ今回はTwitterでたびたび話題になるベン図の書き方をまとめてみました。今回やったのはあくまで単純な銘柄数の重複なので、組入比率というウェイトを加味せず、単純な重複を可視化したに過ぎません。そのため、このベン図をもって実際にそのインデックスやETFが何であるかを理解するにはまだまだ遠いのですが、直感的に類似性を掴む観点ではとてもわかりやすくていいと思います。実際、今回この日本株でやってみて、TOPIXと日経225が225銘柄重複しているのはいいにせよ、スマートベータ的に組まれているJPX日経400との重複が179しかないのは意外でしたね。投資会社の長期レポートによれば、今後は米国株式より日本株式のリターンが見込まれるとされていますが、そうしたリターンとインデックスを通じた市場運営は切っても切り離せないと思いますので、JPX日経400の勉強や、東証再編の動きはさらに追っていきたいです。今回は「日本語を使うと何かと面倒だから」という理由で日本語を排除していますが、もちろん色々やれば日本語を標示させることが可能です。気になる方は以下のページを参考にしてみてください。matplotlibで日本語(Qiita)matplotlibで日本語を文字化けせず表示できるようにしてみる(”BOKU”のITな日常)あとは、今回のベン図はPDFで出力していますが、これをpngなど別のフォーマットで出力させることも可能です。メソッドにパラメータを渡すことで色々変えられますので、必要に応じてやってみてください。matplotlib.pyplot.savefig(matplotlib)しかしまぁ、簡単といえば簡単ですが、ITエンジニアやってなかったらさすがに心折れてる気もしますね...。未来まで生きるブログ。つくようになった問題を直す投資と投機、ギャンブルの違い検索:Profileたくなく東京でサラリーマンとして働く傍ら、お金のことについて調べたこと、考えたことなんかを書いています。