如何从Python字典中的值中过滤掉所有内容?

问题描述 投票:0回答:1

在搜索选项之后,将输出“执行价格”,“询问价格”,“买入价格”和“隐含波动率”。但是,我想对其进行过滤,以便仅使我获得高于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']))'
python dictionary finance
1个回答
0
投票

只需在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(...))'
© www.soinside.com 2019 - 2024. All rights reserved.