Money forward MEで資産クラス別ポートフォリオを表示するUserScriptを作りました

久々の投稿です。

Money forward MEを使っていて欲しい機能だった、資産クラス別のポートフォリオ表示をUserScriptで実現したので公開します。

オジリナルの Money forward でも、預金、株式、投資信託、債券、年金のような構成グラフは表示できるのですが、全体の資産クラスの構成を知ることができず、リバランスが必要なのかとか、外貨建てと円建ての比率を見たりとかすることができませんでした。

そこで、表から資産を取得してグラフ化するUserScriptを作ってみました。インストールしておけば特に操作不要で自動的に「資産」ページにグラフが追加されます。

前ふりが長いので、使ってみたい方はこちらへ飛んでください。

長い前ふり

アカウントアグリゲーションツールの開発から Money forwardへ堕ちるまで

だいぶ昔にアカウントアグリゲーションツールを作っているとこのブログに書いていました。github への push はしていませんが、今でも地味に修正は重ねていて、まぁ、最低限の欲しい機能はできてきました。

ただ、Webサイトの更新に追従するのが結構しんどくて、久しぶりに動かすとどこかのサイトがスクレイピングができなくなっており、その都度対応していくのが嫌になってきていました。

そんな中、家の電気を「マネーフォワード 固定費の見直し 電気サービス」に切り替えるだけでマネーフォワードのプレミアムサービスが無料で使える(※現在受付中止中)ことを知りました。電気代が少し安くなる上に、年額5300円のプレミアムサービスが無料になるというメリットしかないサービスだったので、ものは試しと使い始めたらこれがまたよくできていて、どんどんマネーフォワードどっぷりになってしまいました・・。

当初は、資産状況を他人に把握されるのが嫌で自作を始めたのですが、やはり業界トップの製品だけあって使い勝手がよく、スマホアプリでも簡単に確認できるのは代えがたい魅力でした。また、自動的に取得された入出金をジャンル分けしたり、振替に切り替える操作が他の製品よりも使いやすく、これに近いものを個人で実現するのは厳しいと諦めました。

ちなみに、マネーフォワードの電気プランは現在受付停止中で、新規契約だけでなく、仮に引っ越しでも継続できない状態です。私も去年引っ越しをしたため、泣く泣く解約になってしまいました。今は年額を支払ってプレミアム会員を続けています。早く再開してほしいです!

Money forward MEの不満

私がアカウントアグリゲーションツールを作ろうとした大きな目的は、現在の資産状況を簡単に把握するためです。毎年年末に1年の資産状況を棚卸ししているのですが、それが結構大変で丸一日かかる大仕事なのです。全銀行・全証券会社にログインして、口座残高や、保有株式などを 1 枚のスプレッドシートにまとめて、全体のポートフォリオを作り、必要ならリバランスの計画を立てたり、去年と比較したりということをやっています。

全部手作業ですが、機械化できる仕事ばかりなので、これを完全自動化したいと考えて、アカウントアグリゲーションツールを作ろうと思い立ったわけです。

Money forwardは口座情報を全て集めることができるので、情報収集については文句のつけようが無いのですが、全体の資産クラスのバランスを見る機能なく、結局、保有資産をスプレッドシートにまとめて、各資産に資産クラスを割り当ててグラフを描くということをやっていました。

具体的には、資産のページでのは、以下のように預金、株式、投資信託、債券、年金のジャンルの構成比を見ることはできます。ただ、投資信託や年金には、株式のものや債券のものも混じっていますし、日本/先進国/新興国のような分類もわかりません。

リスク資産/非リスク資産の分類と見たとしても、預金の中に外貨や暗号資産が入っているので、「預金」のジャンルだから非リスク資産かと言うとそうでもなく、個人的にあまり参考にならないのです。

↑資産構成のグラフが知りたい分類になっていない

そこで UserScript を使って、資産クラス別のグラフを表示するツールを作ってみました。

UserScriptって?

ChromeやFirefoxに拡張機能をインストールすると使えるもので、これを使うと特定のサイトにてユーザが独自に作成したJavascriptを実行することができます。

有名なものではAuto pagerという、「次へ」をクリックしなくてもスクロールするだけで次のページを連続して表示してくれるものがあります。

このように元々のサイトにない機能をユーザー側で独自に拡張できるのがUserScriptです。

Chrome や Firefox ではTamper Monkey というプラグインをインストールすることで使えるようになります。

ポートフォリオ表示スクリプト

長い前ふりはここまでで、今回作ったスクリプトを紹介します。

どんなことができるの?

Money forwardの「資産」のページに以下のようなポートフォリオ表示(アセットアロケーション)を追加します。

「資産」ページに表示されている「株式」「投資信託」「債券」「年金」の項目を取得し、資産クラスを推定して分類したあと上記のような円グラフを表示します。

上の絵は静的なものですが、実際に表示されるのは Plotly を使ったもので、マウスオーバーで詳細情報が表示されたり、クリックすると、それを中心とした円グラフに変わるなど、インタラクティブなグラフですので視点を変えた分析などがやりやすいです。

インストール方法

まず Tampermonkey などの UserScript を使えるようにする拡張機能をインストールしてください。

その後、Greasy Forkの以下のページからインストールすることができます。

上記ページの「スクリプトをインストール」をクリックするだけです。

使い方

インストールしたら、Moneyforward Meの「資産」のページを開くだけです。「資産構成」の下に自動的に「ポートフォリオ」のグラフが追加されます。

グラフ表示の項目の見方ですが、以下のような表記となっています。

資産名
金額
親グループ内の比率 (全体の比率)

親グループ内の比率はリバランスの際の参考にすることができます。

また、マウスオーバーすると、上記に加えて含み損益の情報も表示されます。

資産名
金額
親グループ内の比率 (全体の比率)
含み損益 (含み損益率)

利益があるのか損失があるのか、どのくらいなのかを見ることができます。

実際の例として、以下のような表示となります。

↑の例では、「株式」の資産は、親の「リスク資産」の43.4%を占めていて、18.6%の利益が出ていることがわかります。

なお、資産クラスは口座の種別と商品名から類推しているため、実際の分類とは異なる可能性があります。例えば、東証に上場しているETFは、現在はすべて日本株として分類されてしまいます。また、判断がつかないものは「その他」として分類されることもあります。もし、意図しない分類がされた場合は、コメントいただければ可能な範囲で対応したいと思いますのでご連絡ください。

スクリプトの安全性について

資産情報というセンシティブな情報について取り扱うため、情報がどこかに送信されることはないのか、といった安全性が気になるかと思います。その点については、ソースコードを難読化することなく公開していますので、気になる方はインストールページの「コード」のタブから中身を確認してお使いください。

もともと UserScript は危険な使い方ができてしまうため、Greasy Forkではサイトの規則として「コードの難読化の禁止」を明記しています。ユーザが使用する前にコードの検査ができるようにという配慮です。このようなユーザ保護のポリシーを持つサイトであることから、配布サイトとして選択しました。

また、安心して使っていただけるように、以下の点に注意して作りました。

  • 外部から読み込むスクリプトは一般的に有名で安全なもののみを使用する
  • 外部サイトへのクエリは一切行わない

私のスクリプトはグラフを描画するための Plotly.js のみを読み込んでいます。Plotly.js はグラフ描画では有名なライブラリであり、信用に値すると判断しました。気になる方は Plotly.js を調べてみてください。

もう1つは、どんな内容であれ、外部サイトに情報を送信するコードが入っていると疑心が生まれてしまうと考え、Plotly.js の読み込み以外、一切の外部サーバへの通信を行わない実装にしています。URLやIPアドレスのような文字列がコード内に一切入っていないことで不安を払拭できるのではないかと考えています。

本当なら外部サーバに銘柄名と資産クラスのデータベースをもたせて問い合わせる形にすると、柔軟に資産クラスの分類の対応ができるのですが、銘柄名すらできれば公開したくない情報だと思いますので、全てブラウザローカルで処理する作りにしています。

当初は簡単に使えるように、ChromeやFirefoxの拡張機能で実装しようかとか、ブックマークレットにしようかと色々考えたのですが、ユーザが使う前に容易にソースコードを検査できることが一番安心できると考え、UserScript での公開に決めました。

最後に

Money forward ME に資産クラス別のポートフォリオを追加する UserScript を作ったので公開しました。できるだけ安心して使っていただけるように配慮したつもりです。資産管理のお供に使っていただければと思います。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です