Eikon_Data_APIを利用した東証業種別株価指数のデータ取得について

今回、pythonのEikon_Data_APIを使用したデータ取得について質問があるためメールを送らせていただきました。

【質問】

・1枚目画像の「赤丸で囲んである指数の<RICコード>を取得」するにはどのようにしたらよいでしょうか?

1629916423543.png


2枚目画像では取得することができませんでした。
1629916628135.png

Best Answer

  • Hi @tomoya.suzuki.lab

    Alternatively, you can expand the chain by your Python code using Eikon Data API.

    ahs1.png


    import pandas as pd
    import time

    #Define getUnderlying() function
    def getUnderlying(baseRic):
    LONGNEXTLR = baseRic
    #For LONGLING1 to LONGLINK15 and LONGNEXTLR fields
    fields = ['LONGLINK{}'.format(x) for x in range(1, 15)]
    fields.append('LONGNEXTLR')

    all_underlying_rics = []

    #if LONGNEXTLR is not empty, try to retrieve the data fields
    while LONGNEXTLR!='':
    df,e = ek.get_data(LONGNEXTLR,fields)
    LONGNEXTLR = df.iloc[0]['LONGNEXTLR'] if pd.notnull(df.iloc[0]['LONGNEXTLR']) else ''

    #If LONGLINK<x> field is not null, append its value to all_underlying_rics list
    for x in range(1, 15):
    currentField = 'LONGLINK{}'.format(x)
    all_underlying_rics.append(df.iloc[0][currentField]) if pd.notnull(df.iloc[0][currentField]) else None
    #delay between each API call for 1 second
    time.sleep(1)
    return all_underlying_rics

    You can the function with below example:

    ricList = getUnderlying('.TSEK')
    print(ricList)

Answers

  • I'm afraid .TSEK is a chain that does not have typical "0#" chain prefix, hence Eikon Data APIs do not recognize it as a chain. The only way I can think of retrieving the constituents for this chain is by using StreamingChain class of the content layer of RDP Library. Here's a quick example.

    import refinitiv.dataplatform as rdp
    rdp.open_desktop_session('YOUR_APP_KEY')

    def print_chain_constituents(streaming_chain, constituents):
    print(constituents)

    streaming_chain = rdp.content.StreamingChain(
    name = '.TSEK',
    on_complete = lambda streaming_chain, constituents :
    print_chain_constituents(streaming_chain, constituents))
    streaming_chain.open()

    There are more examples of using StreamingChain class available in Codebook app in Eikon/Refinitiv Workspace under the __Examples__ folder -> 02 - Refinitiv Data Platform Library.

  • PyPI から refinitiv.dataplatform パッケージをインストールし,下記プログラムを実行しました.

    このエラーを消すにはどうしたらよろしいでしょうか?

    1630564359079.png

  • 無事に取得できました!

    ありがとうございます。

    1630574896985.png

    エラーの原因はまた改めて調べてみます