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