米国株の銘柄分析に「RPA」ロボットを活用してみよう
米国株の銘柄分析をする場合に、Webサイトからデータを自動取得して、分析できれば有利ですね。
今回の記事は、RPA(Robotic Process Automation)のロボットを自作して、Webサイトから情報を全自動で取得、銘柄分析に活用できるようにまとめました。
サンプルとして、Yahoo Financeからデータを自動取得するロボットの作りかたを、ステップごとに細かく説明していきます。
RPAを習得すると、投資分析だけでなく、仕事の上でも何かと有利になります。
ぜひRPAを検討してみてください。
作業の全体の概要
まずサンプルの全体の概要を説明します。
最初の状態は、エクセルの下記の状態です。ファイル名は、「銘柄リスト.xlsx」です。
A1は列見出しで、見出し名は「ティッカー」です。
ここからRPAのUiPathが、今回の肝となる作業を行います。
UiPathで「Sheet1」のティッカー別にYahoo Financeの統計ページで情報を取得、ティッカー別に以下のようにシートを作成して、取得データを各シートに貼り付けます。
(このサンプルでは、銘柄が5つだけですが、銘柄数が100でも200でも同じで、ロボットが全自動でこの作業を行います。RPAの威力を実感できると思います。)
最後に「Sheet1」上で自由に集計・整形して完成です。(この作業はすぐ終わります。)
具体的な作業の流れ
それではさっそくはじめましょう。
以下、UiPathのコミュニティ版(個人ユーザーは無料で利用できるライセンス)を前提にします。
UiPathコミュニティ版のダウンロードやインストールの説明は、省略します。このリンク先のサイトなどを参考にインストールしてください。特に難しい点はないです。
インストールして最初に立ち上げた状態は、以下のような感じです。
まず、作業の準備として、上部メニューの「パッケージを管理」にすすんでください。
「UiPath.Excel.Activities」と「UiPath.WebAPI.Activities」をインストールします。
(これは一度きりの作業です。慣れてくるとWord関係やメール関係なども将来的にインストールしますが、今回のサンプルではこの2つだけでOKです。)
なお、ブラウザでChromeをお使いの場合は、Chromeのエクステンションをインストールする必要があります。UiPathの「ツール」から、以下の赤枠にすすんでインストールしてください。
その後、Chromeの設定画面で、以下のようにエクテンションを有効化してください。
上部メニューの「新規」から「フローチャート」を選んでください。
(「シーケンス」は単純な流れで、「フローチャート」は分岐などがある構造です。とりあえず「フローチャート」を選んでおけばOKです。)
名前は「米国株分析支援ロボット」にしました。場所はデフォルトでOKです。
それではフローを作っていきます。
左下の「アクティビティ」タブを選んでください。
アクティビティリストの中から、「Excelアプリケーションスコープ」を検索して、中央の作業エリアにドラッグ・ドロップします。
なお、よく使うアクティビティは、右クリックで「お気に入りに追加」しておくと、次から検索する手間が省けます。
次に、中央の「Excelアプリケーションスコープ」をダブルクリックで開いてください。
「銘柄リスト.xlsx」のパスを入力します。
(注:パスには必ず「”」(ダブルクオーテーション)を前後に付けてください。)
次に
1.「範囲を読み込み」アクティビティを中央の「実行」の+マークにドラッグ&ドロップします。
2.シート名は”Sheet1”、セル名は”A1″とします。
3.下側の変数設定ペインで、変数「銘柄リスト」、型を「DataTable」、スコープは実行のままで設定します。
4.右側のペインで、「ヘッダーの追加」にチェックを入れて、「データテーブル」の代入先を変数「銘柄リスト」とします。
次に、
1.「繰り返し(各行)」アクティビティを中央の「実行」の+マークにドラッグ&ドロップします。
2.「繰り返し」を「row」、「次のコレクション内の各要素」を「銘柄リスト」にします。
3.右側のペインで、「データテーブル」の対象を、変数「銘柄リスト」とします。
次に、
1.「ブラウザを開く」アクティビティを中央の「本体」の+マークにドロップ、
2.URL欄に、以下のように入力します。(ここは重要です。)
“https://finance.yahoo.com/quote/”+row(“ティッカー”).ToString+”/key-statistics?p=”+row(“ティッカー”).ToString
「row(“ティッカー”).ToString」は、銘柄リスト.xlsxのティッカー列の値を文字列に変えて代入する関数です。繰り返し(各行)のこの処理によって;
1回目は、「https://finance.yahoo.com/quote/GOOG/key-statistics?p=GOOG」
2回目は、「https://finance.yahoo.com/quote/AAPL/key-statistics?p=AAPL」
と順番にアクセスしていきます。
3.右側のペインで、ブラウザの種類を選択(クロームなどお使いのブラウザを選択)、エラー発生時に実行を継続を「True」にしてください。
「ウインドウを最大化」アクティビティを、「Do」の中の+マークにドラッグ&ドロップします。
次に、上部メニューの「データスクレイピング」を選択します。
なお、ブラウザで「https://finance.yahoo.com/quote/GOOG/key-statistics?p=GOOG」を開いておいてください。
(ここは重要です。)
キーボードの「f2」を押すと、右下に3、2、1とカウントダウンが表示されます。
「f2」を押して、このカウントダウンが終わらないうちに、ブラウザでの「https://finance.yahoo.com/quote/GOOG/key-statistics?p=GOOG」をアクティベイトしてください。
カウントダウンが終わっても、再度「f2」を押すと、再度カウントダウンがはじまります。
青い領域がマウスの動きに応じて動きますので、下図のように、「Market Cap」のセルのような領域をクリックしてください。
下記のダイアログで、「いいえ」をクリックします。
データスクレイピングの結果は、以下のように表示されます。
「構造化データを抽出 ‘TABLE’」をアクティベイトした後、「データスクレイピング」の上の「ウインドウの最大化」の下の領域にドラッグ&ドロップしてください(カット&ペーストでも可)。
「データスクレイピング」の枠は不要なので、削除してください。
次に、「構造化データを抽出 ‘TABLE’」について、
1.下の変数設定のエリアで、変数「Statistics」を設定、型はDataTable、スコープは実行のままとします。
2.右のエリアのデータテーブルの代入先を、変数「Statistics」にします。
次に、
1.「範囲に書き込み」アクティビティを、中央の「構造化データを抽出」の下にドロップ、
2.シート名を「row(“ティッカー”).ToString」を設定、開始セルは「”A1”」のまま、データテーブルに変数「Statistics」を設定します。
次に、
1.「データテーブルをクリア」アクティビティを、中央の「範囲に書き込み」の下にドロップします。
2.右側のエリアのデータテーブルを「Statistics」で設定します。
(次の銘柄の作業に進む前に、いったん変数Statisticsを空にします。)
次に、
1.「ホットキーを押下」アクティビティを、中央の「データテーブルをクリア」の下にドロップします。
2.「Ctrl」にチェックマークを入れて、キーに「W」を設定します。
3. 右側のエリアの特殊キーを「False」で設定します。
(次の銘柄の作業に進む前に、いったんブラウザを閉じます。)
以上で繰り返し処理は完了です。
最後に一番上の階層に戻って、「Start」と「Excelアプリケーションスコープ」をつなぎます。
(「Start」ボタンの右横付近にマウスを近づけるとコネクターが表示されますのでそれを「Excelアプリケーションスコープ」まで引っ張ってください。}
ここでいったんファイルを保存します。
(これまでの途中の作業でも、保存を繰り返した方が無難です。)
左上の「ファイルをデバッグ」をクリックします。
(実際は、なかなか1発で成功しないと思いますが、デバッグも徐々になれてきます。)
デバッグが成功すると、「銘柄リスト.xlsx」は以下の状態になります。
ここまでがUiPathの作業です。
最後に、「銘柄リスト.xlsx」の「Sheet1」に戻って、自由に集計・整形します。
複数シートの集計表は、「INDIRECT関数」が便利です。今回のサンプルに限らず、エクセルはVBAマクロや関数で自由に加工できる強みがあります。したがって、今回のサンプルでも、UiPathの作業の後にエクセル上で作業をして、UiPathとエクセルの両方の得意分野を生かすかたちとしました。
以上です。ここまで読んでいだたき、ありがとうございます。
この記事が米国株の銘柄分析作業の参考になれば、幸いです。