Как отфильтровать None из значений в словаре в Python? - PullRequest
1 голос
/ 16 июня 2020

После поиска опций в выводит «Цена исполнения», «Цена предложения», «Цена предложения» и «Подразумеваемая волатильность». Однако я хочу отфильтровать его так, чтобы он давал мне только «подразумеваемую волатильность» выше 1. Поскольку «подразумеваемая волатильность» имеет в словаре некоторые значения «Нет», это дает мне ошибку:

"float ( ) аргумент должен быть строкой или числом, а не "NoneType" "

import config 
import robin_stocks as r 

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

#specify criteria to search for options 

symbol = 'GE'
expirationDate = '2020-06-19'
strike = 8

#search for option given strike price, expiration date and symbol
#filter through low ask prices
#place order 


search_option = r.find_options_for_stock_by_expiration(symbol,expirationDate,optionType='call')
for option in search_option:
    if float(option['implied_volatility']) > 1:
        print("Strike Price: {}, Ask: {}, Bid: {}, IV: {}".format(option['strike_price'],option['ask_price'],option['bid_price'],option['implied_volatility']))'

1 Ответ

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

Просто добавьте это условие в if, поскольку None оценивается как False, вам не нужно делать if val is not None, просто if val правильно

if option['implied_volatility'] and float(option['implied_volatility']) > 1

Отфильтровать максимум implied_volatility

search_option = r.find_options_for_stock_by_expiration(...)
max_implied_volatility = max(float(option['implied_volatility'] or "-10000") for option in search_option) 

for option in search_option:

    if option['implied_volatility'] and \
       float(option['implied_volatility']) > 1 and \
       float(option['implied_volatility']) !=max_implied_volatility :

        print("Strike Price: {}, Ask: {}, Bid: {}, IV: {}".format(...))'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...