Алексей Манин
Алексей Манин личный блог
27 ноября 2022, 20:28

Python. Как получить дату экспирации?

Пишу запросы на MOEX ISS, а там исторические данные(с прошедшей экспирацией) можно получить только с короткими названиями тикеров фьючерсов и опционов. Может кто-то уже писал код, чтобы вытащить дату экспирации из короткого названия тикера? Поделитесь пожалуйста.

Это один из запросов на MOEX:

<code>import requests

import apimoex
import pandas as pd

# request_url = ('http://iss.moex.com/iss/history/engines/futures/markets/options/securities.json?date=2021-12-01&assetcode=RIZ1')
request_url = ('http://iss.moex.com/iss/history/engines/futures/markets/options/securities.json?date=2021-12-01&assetcode=RTS')
arguments = {'securities.columns': (["BOARDID, TRADEDATE, SECID, OPEN, LOW, HIGH, CLOSE, OPENPOSITIONVALUE, VALUE, VOLUME, OPENPOSITION, SETTLEPRICE"])}

with requests.Session() as session:
    iss = apimoex.ISSClient(session, request_url, arguments)
    data = iss.get()
    df = pd.DataFrame(data['history'])
    df.set_index('SECID', inplace=True)
    print(df.to_string(max_rows=10, max_cols=15), '\n')
    df.info()</code>
11 Комментариев
  • Френк френков
    27 ноября 2022, 20:47
    Тебе на до за границу, питонщики сайтоделатели туда уехали
  • Андрей К
    28 ноября 2022, 10:36
    если никто не напишет, через минут30 скину
  • Андрей К
    28 ноября 2022, 11:01
    1) Нужно получить инфу по инструменту через apimoex.find_security_description

    2) Обратиться к строке LSTTRADE у полученной таблицы.

    Выглядит это примерно так. Тут я обращаюсь к константному номеру строки 6, но раньше вычислял эту строку автоматически (закомментил, наверное плохо работало)




  • Riskplayer
    28 ноября 2022, 11:56

    У меня так сделано:

    from urllib.request import urlopen
    import json

    def get_date_of_last_trade(ticker):
    url_str = 'https://iss.moex.com/iss/securities/{}.json'.format(ticker)
    try:
    j = urlopen(url_str)
    except Exception as e:
    print(e)
    j_obj = json.load(j)
    df_j = pd.DataFrame(j_obj['description']['data'], columns = j_obj['description']['columns'])
    df_j = df_j[df_j['name'] == 'LSTTRADE']['value']
    i = df_j.index[0]

    return df_j.at[i]

  • Riskplayer
    28 ноября 2022, 17:07
    С этим не разбирался. Вроде как ранее обсуждалось вот это:
    Вопрос по ISS Moex. Данные по опционам можно ли качать через ISS? (smart-lab.ru)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн