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を入れる。
AUMが文字列となっているので、ドルマークとBillionのBを削除して、数字(float)に変換して新しい列を追加する。
Segmentにアセットクラスや投資対象が記載されている。 文字列を":" で分割し、アセットクラス(Seg1)とその後ろの文字列(Seg2)の列を追加する。(この2列は今回の集計には利用しない。)
メモ:splitメソッドはexpand引数をTrueにすると、値を列として返してくれる。Falseにすると返り値はリストになる。
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ごとの運用資産残高の集計は次のブログに書くことにする。
ETFのことをもう少し勉強しようと思う
THEOに資産を一部預けているが、これまでこのサービスのことを勉強していなかった。資金を追加で入れるのを機会に、THEOホワイトペーパーを読んでみた。そもそもETFのこともよく分かってないことに気づき、もう少し勉強しようと思った。
ETFの仕組みについては、証券会社等が説明しているのでそれを読めばよく、私個人としてはETFが市場で取引できる商品である以上のことの理解は後回しでもよいと感じている。
まずは投資しているTHEOに含まれる銘柄や金融商品のことを把握することが、まず一つ目のゴールに設定したい。
それと、いろいろとデータ収集を行う予定なので、プログラミングの勉強を兼ねてPythonを利用していきたいと思う。
XPS13を手放そうと思ってリセットしようとしたらそれなりに手間取った
きっかけ
昨年パソコン環境をMacに入れ替え、これまで持っていたWindowsパソコンが不要になった。数年前に購入したDellのXPS13(9360)がMacBook Proのポジションとかぶっていたので、それを手放すことにした。
サマリ
最終的にリセットすることができたが、Dellのリセットツールの起動をするために、ググっても見当たらなかったBIOSの設定変更が必要であった。以下に手順の詳細を記録しておく。
Dell SupportAssist OS Recoveryが使えない!?
購入時にリカバリメディアは添付されおらず、Webで調べたところ、Dell標準のリカバリツールを使えば良いことを知った。しかし、なぜか私のXPS13ではこのツールでリセットすることができない。
Dell Support Assist OS Recoveryを使用してパソコンを工場出荷時状態へ復元(初期化)する方法 - Dell Community
まず、起動時にF12を連打して表示するブートメニューにもSupportAssist OS Recoveryが表示されてい。これに関しては、BIOS設定(BIOS Setup)から変更することで解消できた。SupportAssist System Resolutionの項目の中にあるSupportAssist OS Recoveryのチェックが外れていたので、チェックを入れる。
設定を保存して、PCを再起動。F12を連打してブートメニューを表示する。
これで初期化できる!と思って、前述のDellのページを参考にSupportAssist OS Recoveryでブートしてみたが、普通にWindowsが起動してしまう。何度やっても同じで別の方法を探すことにした。
USBリカバリドライブを使った方法
他にやり方はないかと調べてみると、USBを使ったやり方を見つけ、こちらの方法を試すことに。
Dell OS Recovery Toolを使用してUSBリカバリドライブを作成する手順 - Dell Community
空のUSBドライブを持っておらず、Amazonで購入。MBPでも使えるようにUSB-Cのものを選択。
USBドライブが届いたところで、XPSにOS Recovery Toolをインストールし、上記のUSBリカバリドライブを作成する手順を参考に、USBドライブを作成。
USBドライブをXPSに挿し込み、再起動してブートメニューを開いたが、USBのリカバリドライブらしきものが見当たらない。
自動で表示されるものだと思い込み、何回か同じことを繰り返しやって無駄な時間を過ごしてしまった。
USBからブートできない設定になっていることに気づき、BIOS設定のBoot SequenceにUSBドライブからブートできるように選択肢の追加を試みた。
Boot List OptionのAdd Boot Optionをクリックすると、Boot Optionを設定する画面が表示されるので、Boot Option Nameはusbとして、File System ListにはUSBと含まれている方を選択。File Nameについては、右側の3つのピリオドの箱をクリック。
そうするとEFI Boot Selectionというウインドウが表示されるので、起動ファイルを選択する。事前にUSBリカバリドライブの中身を見て、対象のファイルらしいものを見つけていた(bootx64.efi)ので、その場所をこの中から探す。
File SystemのFS0ではなさそうだったので、プルダウンからFS1に変更。対象ファイルの拡張子はEFIだったので、EFIディレクトリを選択。
すると、Bootというフォルダがあるので選択。
bootx64.efiを発見。選択すると、Selectionにアドレスが表示されるので、OKをクリック。
Add Boot Optionウインドウに戻るので、File System Listが正しく選択され青くなっていることを確認(下の画像はその選択が外れてしまっている)して、OKをクリック。
Boot Sequenceにusbブートが追加された。
BIOS設定の変更を保存して、XPSを再起動する。もちろんF12を連打。
ブートメニューを見ると、先ほど設定したusbが表示されている。XPSのUSBポートにUSBリカバリドライブを挿して、usbブートを選択。
やっとSupportAssist OS Recoveryを起動することができた。
メニューからリセットを選択して実行。言語の変更も可能。
リセットしてアップデートを選択。表示の通り、インターネットへの接続必須。
XPS内のファイルは既に退避済みのため、バックアップは不要。
後戻りできないとの注意文言。
注意文言の2回目。リセット理由を選択して、次へ。
リセットするドライブを選択し、次へ。
リセットの実行。正確な時間は測っていないが、数時間で完了。
このような手順で私のXPS13はリセットされ、 静かに旅立っていった。ありがとう、XPS13。
Anaconda Navigatorが自動で更新されないとき
Anaconda Navigatorを久しぶりに開いたら、新しいバージョンがavailableだよとウインドウが表示された。
すぐ更新するか?と問われたので、Yesをクリックしたけど、アプリが閉じることもなく、UIも変更されることもなく、更新される気配なし。
なので、手動で更新。手順は以下のページのAlternate methodを参照。
macを使用しているので、Launchpadのその他にあるターミナルを起動。
以下のコマンドを実行して、Anaconda Navgatorの更新が完了。
conda deactivate
conda update anaconda-navigator
GitHub Gistを使ってJuypter Notebookをブログに貼り付けようとしたけど表の一部が崩れる
Juypter Notebookで書いたPythonコードをできるだけJupyter Notebookの形で貼り付けたかったので、いくつか調べてみて、GitHub Gistを使ったやり方を試してみた。
が、、、表の一部が正しく表示されない。
ipynbファイルをそのままアップロードしているだけだし、GistのRawコードを見ても特におかしいところはないと思う。
これがGistの表示、例えば表の2行目が1行目のAUMの項目の中に含まれてしまっている。
こっちがJuypter Notebookの表示
何が原因?
参考HP:
jupyter notebookのサンプルコードをブログに貼り付ける方法を調べた - 子供の落書き帳 Renaissance
Apple Watchのコンプリケーションの動きがおかしい
今回学んだことは、Apple Watchの動作がおかしくなったら、まず再起動してみよう。
昨年、自宅のパソコン環境をMacに変えた時から、数年前に購入したApple Watch Series 3を使い始めた。そして、最近、ひょんなことからSeries 6を手に入れることができ、Series 3からSeries 6へ切り替えた。
iPhoneのApple WatchアプリからWatchを追加して、特に問題もなく設定完了。画面が広くなり、若干薄くなり、文字盤も増えて、ウキウキしていたが、あれ、一部のアプリのコンプリケーションの動きがおかしい。
1ヶ月程前から日々どのように時間を使っているのか ATracker というアプリで記録していたのだが、タスクを変えてみても、コンプリケーションの表示が前のタスクのままとなり、計測時間も前のタスクの時間を継続していた。
おかしいのはコンプリケーションだけで、Apple WatchのATrackerを開くと新たに変更したタスクで時間を測ってくれているし、iPhoneのATrackerアプリも正しく計測されていた。
Series 3のときにできていたことがSeries 6でできないことなんてあるか?と思い、ECOSIAでググってみたが、求めていた答えが見つからず。
使えないわけではないが、使いにくいなと悶々としながら数日過ごす。
そして、改めてググったときに「再起動」という言葉に目が止まり、Apple Watchを再起動したら、ATrackerのコンプリケーションが正常に動いた。
Series 6ではこういうものなのかなと、確率の低いおかしい方向に考えが進んでしまっていた。初期設定は指示通りに問題なく完了してこれで問題ないと思い込んでいて、再起動ということを選択肢から勝手に除外していた。
何ごとも思い込みは禁物だ、と少し反省。思い込まないということを実践するのは、とても難しいことではあるけど、いろいろと試すことがそれを助けてくれると思う。Apple Watchの再起動は、サイドボタンを長押しすればできるわけだし、難しいことではなかった。
現在の株式投資の手法
子供たちよ、君たちが大きくなって、将来株式投資を考えるようになったとき、参考になればと思って、2021年1月現在の株式の投資手法を書き残しておく。
対象のスクリーニング
エントリータイミング
- 数年分のチャートを確認する
- なるべく安く買う(52週の安値からの乖離、レジスタンス/サポートライン、移動平均線とローソク足の関係、MACDなどを見て判断)
- TOPIXや米国市場の大きな値崩れがなさそうなとき
エグジットタイミング
- 高すぎたと思ったら売る
- もう十分と思ったところで売る
- 評価損益率が30%以上
- なるべく安く買った時の条件と逆のことが起こったとき
- 投資先の稼ぐ力がなくなったと判断したとき
- 市場が大きく値崩れしそうなとき(それを判断するのは難しいと思うが)
銘柄数と投資資金
- 多くても7銘柄くらいでポートフォリオを組む想定
- 投資資金全額を最初から投資しないで6〜7割くらいに抑える(市場の動きは自分で決められない、突然の大きな下げに備えておけ、そこは絶好の買い場になるかもしれない)
さいごに
配当も含めて2020年の収益率を計算してみたところ、正確な数字ではないけど、税引後で6%くらいだった。2019年はもう少し良かったはず。
去年はコロナショックがあって、評価損が膨らんで、どうなることやらな状態が続いたけど、結果プラスで終わることができた。それに、昨年末には保有し続けていた銘柄の評価損益率もプラスになった。
ちなみに昨年の終わり頃に他の投資手法を試してみたけど、結果が芳しくなくて、元に戻すことにした。損失も出たので失敗ではあったが、大切な学びを一つ見つけられた。それは上の箇条書きに含めている。
今年の結果は、またいつか書くよ。忘れなければね。