Beispiel #1
0
        calibrate_date4 = to_ql_date(dates[idx_date])
        calibrate_date3 = to_ql_date(dates[idx_date + 1])
        calibrate_date2 = to_ql_date(dates[idx_date + 2])
        calibrate_date1 = to_ql_date(dates[idx_date + 3])
        calibrate_date = to_ql_date(dates[idx_date + 4])
        hedge_date = to_ql_date(dates[idx_date + 5])
        liquidition_date = to_ql_date(dates[idx_date + 6])

        # Liquidition Date Dataset
        dataset_on_liquidition_date = daily_svi_dataset.get(
            to_dt_date(liquidition_date))
        cal_vols, put_vols, maturity_dates, spot, rf_pcprs = dataset_on_liquidition_date

        # SELECT CALL OPTION DATA!!
        expiration_dates = to_ql_dates(maturity_dates)
        orgnized_data_liquidition_date = svi_util.orgnize_data_for_hedging(
            liquidition_date, daycounter, cal_vols, expiration_dates, spot)
        optiontype = ql.Option.Call

        # Hedge Date Data Set
        dataset_on_hedge_date = daily_svi_dataset.get(to_dt_date(hedge_date))
        cal_vols_h, put_vols_h, maturity_dates_h, spot_on_hedge_date, rfs_on_hedge_date = dataset_on_hedge_date
        expiration_dates_h = to_ql_dates(maturity_dates_h)
        orgnized_data_hedge_date = svi_util.orgnize_data_for_hedging(
            hedge_date, daycounter, cal_vols_h, expiration_dates_h,
            spot_on_hedge_date)

        calibrated_params = daily_params.get(
            to_dt_date(calibrate_date))  # on calibrate_date
        calibrated_params1 = daily_params.get(
            to_dt_date(calibrate_date1))  # on calibrate_date
        calibrated_params2 = daily_params.get(
for idx_date, date in enumerate(dates[0:len(dates) - 2]):
    try:
        print(idx_date)
        calibrate_date = to_ql_date(dates[idx_date])

        optiontype = ql.Option.Put

        estimate_vol = estimated_vols.get(to_dt_date(calibrate_date))
        curve = svi_data.get_curve_treasury_bond(calibrate_date, daycounter)

        # Local Vol Surface
        cal_vols_c, put_vols_c, maturity_dates_c, spot_c, rf_c = daily_svi_dataset.get(
            to_dt_date(calibrate_date))
        expiration_dates_h = to_ql_dates(maturity_dates_c)
        orgnized_data = svi_util.orgnize_data_for_hedging(
            calibrate_date, daycounter, put_vols_c, expiration_dates_h, spot_c)
        pricing_error_Ms = {}
        for nbr_month in range(4):
            moneyness, strikes, close_prices, expiration_date = orgnized_data.get(
                nbr_month)
            rf = curve.zeroRate(expiration_date, daycounter,
                                ql.Continuous).rate()
            pricing_errors = []
            moneyness = []
            #print('liquidition date : ', calibrate_date, ',', nbr_month)
            for idx_k, k in enumerate(strikes):
                if k in close_prices.keys():
                    close_l = close_prices.get(k)
                else:
                    print('strike not found in L date')
                    continue