Search code examples
pythonyfinance

How to make it so that all available data is being pulled instead of specifically typing out a date range for this script?


The available options dates are below. How can I write a code so that it pulls all those dates instead of having to type them all out in a separate row?

2022-03-11, 2022-03-18, 2022-03-25, 2022-04-01, 2022-04-08, 2022-04-14, 2022-04-22, 2022-05-20, 2022-06-17, 2022-07-15, 2022-10-21, 2023-01-20, 2024-01-19

import yfinance as yf

gme = yf.Ticker("gme")

opt = gme.option_chain('2022-03-11')

print(opt)

Solution

  • First of all, as these dates have no regular pattern, you should create a list of the dates.

    list1=['2022-03-11', '2022-03-18', '2022-03-25', '2022-04-01', '2022-04-08', '2022-04-14', '2022-04-22', '2022-05-20', '2022-06-17', '2022-07-15', '2022-10-21', '2023-01-20', '2024-01-19']
    

    After you have created the list, you can initiate your code as how you have done:

    import yfinance as yf
    
    gme = yf.Ticker("gme")
    

    But right now, since you would want to have everything being printed out, and I assume you would need to save it to file for a better view (as I have checked the output and I personally prefer csv for yfinance), you can do this:

    for date in list1:
        df = gme.option_chain(date)
        df_call = df[0]
        df_put = df[1]
        df_call.to_csv(f'call_{date}.csv')
        df_put.to_csv(f'put_{date}.csv')