Как заставить словарь выводиться только по максимальному значению (implied_volatility)? - PullRequest
1 голос
/ 17 июня 2020

Итак, словарь под названием «option» выводит результат (торгуемые опционы) ниже по strike_price, ask_price, delta и implied_volatility. Но мне это не нужно, чтобы рассказывать обо всех торгуемых опционах. Я хочу, чтобы в выходных данных отображался только 1 торгуемый опцион с наивысшим значением implied_volatility (IV), поэтому, например, результат должен отображать только вариант с самым высоким значением IV:

Strike Price: 43.0000, Спросите: 0,030000, Ставка: 0,000000, Дельта: 0,008705, IV: 1.449510 - потому что IV здесь самый высокий из всех результатов ниже.

Как я могу это сделать?

import config 
import robin_stocks as r 

r.login(config.USERNAME,config.PASSWORD)


#specify criteria to search for options of a given symbol and its exp date
symbol = 'GDX'
expirationDate = '2020-06-19'


search_option = r.find_options_for_stock_by_expiration(symbol,expirationDate,optionType='call')


for option in search_option:

        print("Strike Price: {}, Ask: {}, Bid: {}, Delta: {}, IV: {}".format(option['strike_price'],option['ask_price'],option['bid_price'],option['delta'], option['implied_volatility']))


**OUTPUT**:
Strike Price: 42.0000, Ask: 0.030000, Bid: 0.000000, Delta: 0.009354, IV: 1.335719
Strike Price: 43.0000, Ask: 0.030000, Bid: 0.000000, Delta: 0.008705, IV: 1.449510
Strike Price: 35.5000, Ask: 0.060000, Bid: 0.040000, Delta: 0.073395, IV: 0.634361
Strike Price: 36.5000, Ask: 0.030000, Bid: 0.020000, Delta: 0.041370, IV: 0.743600

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вместо for l oop вашего кода замените этот.

highest_IV, highest_idx = 0, None
for idx, option in enumerate(search_option):
    if option['implied_volatility'] and highest_IV < float(option['implied_volatility']):
        highest_IV = float(option['implied_volatility'])
        highest_idx = idx
if highest_idx is not None:
    print("Strike Price: {strike_price}, Ask: {ask_price}, Bid: {bid_price}, Delta: {delta}, IV: {implied_volatility}".format(**search_option[highest_idx]))

Здесь вам может потребоваться рассмотреть случай, когда search_option пусто.

Надеюсь, это тебе поможет.

0 голосов
/ 17 июня 2020

Вы можете вернуть вариант с наивысшим IV, сделав что-то вроде этого:

def find_highest_iv(search_option):
    max_iv = max([option['implied_volatility'] for option in search_option ])
    for option in search_option:
        for k,v in option.items():
            if k == 'implied_volatility' and v == max_iv:
                return option

Если есть два варианта с одинаковым IV, это вернет первый из search_options. Вероятно, есть более сокращенный способ сделать это на pythoni c, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...