BIXLERのログ

いろいろ記録します。

ETFとPythonの勉強 米国市場のETFについて運用会社毎のETF数と運用残高を集計してみる その1

やりたいこと

下のページによると米国が世界で最もETFが発達している国ということなので、どのような運用会社がどれくらいの資産残高を運用しているのか調べてみようと思う。


データの取得

ETF.comのETF FinderでAUMを降順でソートし直し、上位300件分をNumbersにコピーして1から300までのインデックスをふり、CSVファイルに変換して元データを作成した。スクレイピングでデータを取得できたらかっこよかったけど、そんなテクニックはまだ持っていない。今後、勉強する。
なお、AUMはAsset Under Managementの略。今回知った。

データの加工

DataFrameを使うのでPandasのインポート。グラフも作成するので、Matplotlibも。
その後、前述したデータを取り込み。(以前掲載したとおり、GitHub Gistでテーブルが正しく出力されないので、その部分は画像で貼り付け。)
メモ:CSVファイルを読み込んだ際に、自動的にIndex列を付けたくない場合は、read_csvメソッドにindex_col=0を入れる。 

f:id:BIXLER:20210316094939p:plain

ETFtop300Origin.csv

AUMが文字列となっているので、ドルマークとBillionのBを削除して、数字(float)に変換して新しい列を追加する。

f:id:BIXLER:20210316100105p:plain

AUB_B$の追加

Segmentにアセットクラスや投資対象が記載されている。 文字列を":" で分割し、アセットクラス(Seg1)とその後ろの文字列(Seg2)の列を追加する。(この2列は今回の集計には利用しない。)
メモ:splitメソッドはexpand引数をTrueにすると、値を列として返してくれる。Falseにすると返り値はリストになる。

 

f:id:BIXLER:20210316101746p:plain

Seg1とSeg2の追加

IssuerごとのETF数の集計

データをIssuer項目でGroupByして、countメソッドでTickerの数を集計。降順に並べるためsort_valuesメソッドを設定。加えて、インデックス列を再度設定する。

BlackrockやVanguardなど聞いたことある名前が上位に出てきた。
後ほど円グラフを作るが、対象が20以上もあると割合の小さな部分が見えづらくなるので、6位(インデックス番号5)のFirst Trustまで表示して、7位以下をOthersとしてまとめる。

Top6のFirst Trustまでとそれ以外でデータを分割し、Others部分のTickerの数を合計する。その後、Top6のデータとOthersの合計値をconcatメソッドで結合し、新しいIssuer_adjというDataFrameを作る。 

グラフに表示

matplotlibで円グラフを表示する。
メモ:グラフの上部に表示されるオブジェクトのアドレスは、plt.show()すると表示が消える。グラフのラベルにGroupByの結果を表示したい場合は、labelsにIndex列を設定する。

 

Issuerごとの運用資産残高の集計は次のブログに書くことにする。