コード例 #1
0
def main():
    ticker = 'SPY'

    root = './data'
    path = make_dir(root)

    # scraping
    yf = YahooFinance(ticker)

    chain = yf.get_chain()
    spot = yf.get_spot()

    array = qd.get('FRED/FEDFUNDS', rows=1, returns='numpy')
    rate = array[0][1]

    # option chain
    oc = OptionChain(ticker,
                     chain).add_spot(spot).add_rate(rate,
                                                    name='Fed Funds Rate (%)')
    oc.get_df().to_csv(f'{path}/option_chain.csv')

    # call prices
    call_prices = oc.get_price_mx()
    call_prices.to_csv(f'{path}/call_prices.csv')

    # implied vols
    implied_vols = vol_surface(call_prices, spot, rate / 100)
    implied_vols.to_csv(f'{path}/implied_vols.csv')

    # interpolated surfaces
    interp_linear = interpolate(implied_vols, 'linear')
    interp_linear.to_csv(f'{path}/implied_vols_interpolated_lin.csv')

    interp_cubic = interpolate(implied_vols, 'cubic')
    interp_cubic.to_csv(f'{path}/implied_vols_interpolated_cub.csv')

    # parametric models
    model = DumasFlemingWhaley()

    model.fit(implied_vols.reset_index())
    model.get_surface().to_csv(f'{path}/implied_vols_parametric_dfw.csv')

    # update repo
    update_repo(root)

    return