Refinitiv Eikonで相場データを取得してみた

# Refinitive Eikonとは


Refinitive社が提供する有償の相場情報提供サービスです
https://www.refinitiv.com/ja/products/eikon-trading-software

コモディティ、農作物、エネルギー、メタル、株式、債権、外国為替、マクロ経済指標などを閲覧/取得できるようです。この手のサービスはだいたいそうですが、そこそこ良い値段がします。

冷やかしだとダメだと思いますが、ちゃんと使うつもりがある場合は無償トライアルのライセンスを発行してくれると思います。
https://www.refinitiv.com/ja/forms/eikon-form-overlay


# 使用形態


以下の3つの利用形態があるようです

1. GUIで閲覧/取得する
2. Excelアドインで取得する
3. Python APIにより取得する


## 1. GUIで閲覧/取得する


各銘柄や指標の最新値が見られるほか、時系列グラフを確認したりできます。

公式サイトに画面のスクショがありますので、だいたいのイメージはつかめるかと思います。トレーダーがよく見てそうなアレです。
https://eikon.refinitiv.com/index.html
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/85b226d7-4637-ecf3-c35b-9f230e502c95.png" width=60%>
データについてはCSVでダウンロードすることも出来ます。

ブラウザ版とWindowsアプリ版のどちらでもだいたい同じUIが提供されていますが、Windowsアプリ版では表示レイアウトを保存しておいて呼び出せたり、起動時のレイアウトを固定しておいたり出来るので便利です。

UIの左上に検索窓があって適当なキーワードを入れると関連項目が出てくる仕組みなので直観的でなかなか良いと思います。


## 2. Excelアドインで取得する


<a href="https://www.refinitiv.com/content/dam/marketing/en_us/documents/fact-sheets/datastream-economic-data-macro-research-fact-sheet.pdf">Refinitiv Eikon Datastream</a>を使うとExcelアドインによりExcel操作のみでデータを取得できます。Excelを使ってカジュアルな分析をする方、あるいは職場の都合でExcelしか使えない方が使うイメージなんでしょうか。必要なデータ一式を取得するワークシートをつくっておけば更新をかけるだけで最新のものが手に入るので結構便利です。



### インストール


EikonのインストーラーでExcelアドインのインストールを有効にしておけば一緒に入れておいてくれます。Excelを起動してリボンに「Refinitiv Eikon」タブと「Refinitiv Eikon Datastream」タブが追加されていれば正常です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/3cd4d38b-09e9-4a69-fb36-86a39a4034bb.png" width=70%>


### サインイン


起動した状態ではまだサインインされていないので機能は何も使えません。
Eikonタブのサインインをクリックして、IDとパスワードを入力すれば各機能が使えるようになります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/18f8cea2-6848-e087-d8b7-edb2c8e23760.png" width=50%>


### 時系列データの取得


DatastreamタグのTime Series Requestをクリックすると別窓が開きます
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/66897236-da59-5e95-701e-cc468287d84f.png" width=70%>
Find Seriesボタンを押すとExcelアドインらしからぬデザインの別窓が開いて銘柄を選べるようになります。チェックをいれてUseをクリックすると選択して1つ前のウィンドウに戻ります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/cfcbf197-6d44-fa55-1cc8-3e72592c40e1.png" width=50%>
銘柄が選択されているので、あとは期間などの条件を選択してSubmitをクリックすれば1銘柄選択完了です
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/c25cbaa6-032d-b5f4-4fc2-38d94c95ab46.png" width=50%>
シートのカーソル位置にデータが貼り付けられます。セルの表示がNameとなっているセルにはコマンドが書かれていて、このコマンドに応じてアドインがデータを書き出してくれます。コマンドを書き換えるとそれに応じて読み込み直してくれるので、どうやらアドインがセルの更新を監視して更新されたら読むような動作をやっているようです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/5720527a-0d04-4fbc-7203-af2b413cab84.png" width=50%>
データは値で入力されているので、pythonなんかで読み込むのも特に問題ないようです
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/016c50fe-22ac-85b9-b6c4-e261bdef56eb.png" width=50%>


## 3. Python APIにより取得する


<a href="https://www.refinitiv.com/ja/products/eikon-trading-software/eikon-app-api-innovation/eikon-data-api">PythonからAPIでデータを取得するサービス</a>も提供されています。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/68c841f8-e5a1-68ad-c51a-b10f324aa53f.png" width=70%>
最初ウェブAPIかなと思ったんですがそれは別枠で用意されているようで、こちらはEikonアプリをpythonから動かしてデータを受け取るツールです。使用中はEikonのWindowsアプリが起動している必要があります。

Pythonパッケージはpipでインストールできますし、ドキュメンテーションもあって導入は簡単なのでpythonで分析する人は最初からこれで良いんじゃないかと思います。
https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api


### 3-1. アクセス回数リミット


ここに詳しく載ってます
https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api/documentation

リミットに達したら例外を出してくれるようですので、例外処理を無視するようなコードにしなければ大丈夫なのかなとも思いますが、何かを間違えて規約違反で迷惑かけるのはマズいのでしっかり確認しましょう


### 3-2. 使い方


Quickstart通りの手順で動きました
https://developers.refinitiv.com/en/api-catalog/eikon/eikon-data-api/quick-start


#### 1. EikonアプリでApp Keyをつくる


Eikonアプリの検索窓に「app key」と入力するとgenerate app keyという項目がヒットします。application名を入力して実行すればApp Keyが発行されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/a23d54ed-af2f-abbb-1077-898d5979d082.png" width=50%>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277233/e1c6c33e-a8ca-9955-8cf8-0fcc55c123a9.png" width=50%>


#### 2. pythonパッケージをインストールする


pipで入ります


```terminal
pip install eikon
```


#### 3. App Keyを入力する


Eikonアプリが起動した状態で以下を実行してエラーがでなければ正常です


```python
import eikon as ek
ek.set_app_key('ここにApp Keyを入力する')
```


#### 4. 時系列データを取得する


eikon.get_timeseries()で時系列データを取得できます。

以下では「MSFT.0」という銘柄（マイクロソフトの株価？）を2017年3月1日～2017年3月10日の範囲で日足で取得しています。銘柄はlistで渡せるのでここに複数まとめて入れるとまとめて取得してくれます。


```python
req = ek.get_timeseries(["MSFT.O"], start_date = "2017-03-01",
                        end_date = "2017-03-10", interval="daily")
req
```


start_date, end_dateはdatetime.datetimeやdatetime.timedeltaで入れることもできますので、10日前から最新までの日付を以下のように書くこともできます。


```python
req2 = ek.get_timeseries(["MSFT.O"], start_date=datetime.timedelta(days=-10),
                        end_date=datetime.datetime.now(), interval="daily")
req2
```


intervalはticks, minute, hour, daily, weekly, monthly, quarterly, yearlyが選べて、ticksは保存されているデータがそのままの密度で出てきます。


#### 5. その他の機能  


今回は時系列データの取得しかやらなかったんですが、他にもヘッドライン的なものを取得できたり指標をまとめて取得したりと色々関数が用意されているようです。

APIリファレンスがpdfで読めるのでこちらを参照してください
https://developers.refinitiv.com/en/api-catalog/eikon/datastream-web-service/Documents


# まとめ


やはり高いサービスだけあって、いろんな用途に使えるよう機能が充実しています。肝心のデータ自体も多岐に渡るものが収録されていて、実際の相場の値以外にも予測値なんかもあって強力です。あまり気軽に試せるものではないですが、この手のサービスを検討するようなら候補に入れても良さそうです。