ファイナンス分析のWebアプリを作った話

Finance
スポンサーリンク

モチベーション

Webプログラムへの挑戦

データ分析系のプログラミングの勉強をしていることもあって、解析に関するプログラムは以前に比べてだいぶ得意になりました。ただ、Webで動いているようなアプリケーションはほとんど挑戦したことがなく、最近作ったチャート描画をするアプリを作った程度でした。そこで、もう少しまともに動く投資に関するプログラムを作ってみようと思い立ったのでした。

作ったページへのアクセスブログ上部のメニューから「ファイナンス分析ツール」をクリックしてください。

ファイナンスデータ分析
ファイナンスグラフファイナンスデータを取得して様々なグラフで表示します。データはフリーAPIを利用して取得していますが、日本株には対応していません。また、ETFでは価格チャートのみ表示されます。シンボルを入力してGETボタンを押し...

自分のニーズ

最近余り更新がされていないブログなのですが、永久投資家の米国株投資物語というサイトで公開されていた企業分析を自動で視覚化するアプリを以前愛用していました。

こちらは企業の情報をWebから自動でとってきて財務諸表や指標などをプロットしてくれるのですが、様々な情報をひとまとめに見られる、ということと経時的な変化がわかりやすいのが便利でした。最近ではバフェットコードなどのサイトが登場してきて日本・海外に関する投資情報を見やすい形で取得できるようになっていますが、自分なりに見たい情報を表示できるものを作ってみようと考えて、自分のブログでも

似たようなものを作ってみることにしました。特に海外の投資情報ならば、フリーアクセス可能なAPIが登場してきていることもありまとめるのも楽になっています。

年末年始のお休みを利用して挑戦してみることにしました。

 

制作過程

Web周りのあれこれの謎

WordPressをかろうじて動かすことはできていますが、Wordpress自体にはほとんどプログラムの知識は必要ないので、ここから先に進むにはハードルを超える必要があります。

全てJavascriptで動かせれば問題ないのですが、データ周りを少しいじったりするので自分が使いやすいPythonを活用するためにGoogleのクラウドサービスを経由することにしました。

このためにデータのやり取りを行うためのデータ形式を整える必要があったり、認証を行う(CORSというそうです)ためにプログラムに追記をする必要がありました。Javascriptで自分でちゃんとプログラムを組むのは初めてでしたし、Wordpressで外部のスクリプトを動かすためには設定ファイルをいじったりする必要もありました。

結果的には動くものが数日でできましたが、日々こうした開発をもっと大規模に安全性高くやっているWebエンジニアは改めて凄いなと感じました。

 

APIからダウンロードしたデータの処理

今回データを取得するAPIを提供しているのがFinancial Modeling Prepというサイトです。米国株やETFの財務諸表、日々の株価、様々な指標など、広い範囲に渡るデータを(プログラムやっていれば)簡単に取得ができるため、今回は株価、財務諸表(B/S, P/L, C/S)、株価指標を取得して経時的な変化を表示するようにしてみました。

ただ画像が出るだけだとつまらないので、必要に応じて自分で動かしながら見られるインタラクティブチャートを作るためにPlot.lyというライブラリを使用しています。こちらはPython, R, Javascriptなどで利用ができ、簡単な設定できれいなグラフを描くことができます。

データの処理はあまりしておらず、必要そうな情報をピックアップして単純にグラフに表示するようにしてみました。

 

プロダクト

12/30に動かせる形で公開してみましたが、以下のような機能をつけました。

Plot.lyのチャートは拡大縮小、移動、ロケーターの表示、保存なども自在にできます。

株価チャート

10年分の株価データをダウンロードしてロウソク足チャートを表示します。直近の1年分のチャートを表示していますが、下のバーをスライドさせると年代を拡大表示したり移動できます。左上の「6 months」などの表示をクリックすると表示範囲を1クリックで変更できます。

バランスシート

四半期ごとのバランスシートのデータを表示します。左側が資産、右側が負債及び純資産です。基本的には左右がバランスするようになっていますが純資産がマイナスになっていたりすると表示がおかしくなることがあります。

損益計算書

インカムステートメントの内容を表示します。全体の売上、利益が成長しているか、季節、景気による変動などが確認できます。

マージン

損益計算書の中から、粗利率や営業利益率などの比率を表示します。企業の収益性を経時的に確認することができます。

BPS

企業の1株あたり簿価を表示します。簿価の順調な成長が確認できるでしょうか。

キャッシュフロー

企業の3つのキャッシュフロー(営業(Operating)CF、投資(Investing)CF、財務(Financing)CF)の学を表示します。
営業CFは本業の支出に対する収入額です。本業な順調な企業は営業CFがプラスで安定するはずです。
投資CFでは企業の固定資産や有価証券の売買による現金の流れを示し、設備投資などが多い企業ではマイナスになります。
財務CFでは配当や借金の返済でマイナスになり、資金調達を行えばプラスになります。

各種指標

現状ではPER(1株あたりの利益(EPS)に対する株価。利益に対して株価が安ければ小さくなる。)、PBR(簿価に対する株価。簿価に対して株価が安ければ小さくなる。)、Current Ratio(流動資産÷流動負債、短期的に資金がどれほど安定しているかを示す値です。)、配当利率(年間の配当が株価に対して何%あるか。)をチャートにして示します。

 

今後の展望

APIからのダウンロードとブラウザでの描画のためにデータ取得ボタンを押してから表示までに数秒時間がかかってしまっています。データを予め取得しておけばそこまではかからないのですが、データベースの構築まで必要になるので、今後の余力が出たときの課題にしておきます。

表示する内容も余り洗練されていないので、より実践的な分析ができるような内容を今後盛り込みたいのと、自分でいじれるのでユーザーにニッチな機能も提供できればと思います。テクニカル指標とかはチャートにいくらでも盛り込めそうですしね。

2つくらいの銘柄を入力したときになかなか比較する機能が提供されていないPERなどの指標の比較ができる機能もできたら良いかと考えています。

使用していただいて、意見などがあればぜひお聞かせください。

コメント