Search code examples
pythonalgorithmic-tradingetrade-api

Pyetrade / Etrade API for option-chains function only returns options for apple?


I'm trying to get some option chains using the pyetrade package. I'm working in Sandbox mode for a newly made Etrade account.

When I execute the following code, it executes fine, but the returned information is incorrect: I keep getting options for Apple between 2012 and 2015, instead of current Exxon-Mobil options (what I'm inputting). This is also true for if I ask for Google or Facebook or Netflix, I just keep getting outdated Apple options.

I'm not sure where I messed up, or if this is just something that's part of sandbox mode, so that's why I asked for help. Thank you!

(Note: Some of the code is sourced from: https://github.com/1rocketdude/pyetrade_option_chains/blob/master/etrade_option_chains.py)

The following is the function to get the option chain from the API:

def getOption(thisSymbol):
   #Renew session / or start session
   try:
       authManager.renew_access_token()
   except:
       authenticate() #this works fine

   #make a market object to pull what you  need from
   market = pyetrade.ETradeMarket(
       consumer_key,
       consumer_secret,
       tokens['oauth_token'],
       tokens['oauth_token_secret'],
       dev=True
   )

   try:
       #the dates returned are also 
       q = market.get_option_expire_date(thisSymbol,resp_format='xml')
       #just formats the dates to be more comprehensible:
       expiration_dates = option_expire_dates_from_xml(q)
  except Exception:
       raise

   rtn = []
   for this_expiry_date in expiration_dates:
       q = market.get_option_chains(thisSymbol, this_expiry_date)
       chains = q['OptionChainResponse']['OptionPair']
       rtn.append(chains)
   print()
   return rtn

ret = getOption("XOM")
print(ret[0]) 

Solution

  • The API provider is explicit on this:

    Note:

    E*TRADE's sandbox doesn't actually produce correct option chains so this will return an error.

    The sandbox is still useful for debugging e.g. the OAuth stuff.

    No one could hardly make the sandbox-ed code work otherwise.