Exemplo n.º 1
0
            strike = option_data.get(moneyness)[1]
            impliedvols.update({strike:vol})
            strikes.append(strike)
        data = [strikes,impliedvols,expiration_date]
        data_for_optimiztion_months.update({idx_month:data})
    return data_for_optimiztion_months

# Evaluation Settings
calendar = ql.China()
daycounter = ql.ActualActual()
evalDate = ql.Date(19, 7, 2017)
#evalDate = calendar.advance(evalDate,ql.Period(1,ql.Days))

# Construct Black Variance Surface
#data_BVS,mdts_BVS,strike_BVS,implied_vols,spot = get_impliedvolmat_call_BS(evalDate, daycounter,calendar)
curve = svi_data.get_curve_treasury_bond(evalDate,daycounter)
#data_BVS,iv_matrix,mdts_BVS,strike_BVS,spot = svi_data.get_impliedvolmat_call_givenKs(evalDate,daycounter,calendar,curve)

optiontype = ql.Option.Put

# Local Vol Surface
cal_vols_c, put_vols_c, maturity_dates_c, spot_c, rf_c = daily_svi_dataset.get(to_dt_date(evalDate))
expiration_dates = to_ql_dates(maturity_dates_c)
orgnized_data = orgnize_data(evalDate, daycounter, put_vols_c, expiration_dates)



strikes = orgnized_data.get(3)[0]
strikes = sorted(strikes)

vol_matrix = []
Exemplo n.º 2
0
calibrate_date3 = to_ql_date(dates[idx_date - 3])
calibrate_date2 = to_ql_date(dates[idx_date - 2])
calibrate_date1 = to_ql_date(dates[idx_date - 1])
calibrate_date = to_ql_date(dates[idx_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(
    to_dt_date(calibrate_date2))  # on calibrate_date
calibrated_params3 = daily_params.get(
    to_dt_date(calibrate_date3))  # on calibrate_date
calibrated_params4 = daily_params.get(
    to_dt_date(calibrate_date4))  # on calibrate_date
curve_on_calibrate_date = 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))
# black_var_surface = get_local_volatility_surface(calibrated_params,to_ql_dates(maturity_dates_c),calibrate_date,daycounter,calendar,spot_c,rf_c)
calibrated_params_list = [
    calibrated_params, calibrated_params1, calibrated_params2,
    calibrated_params3, calibrated_params4
]
calibrate_dates = [
    calibrate_date, calibrate_date1, calibrate_date2, calibrate_date3,
    calibrate_date4
]
black_var_surface_smoothed = get_black_variance_surface_smoothed(
    calibrated_params_list, to_ql_dates(maturity_dates_c), calibrate_dates,
    daycounter, calendar, spot_c, rf_c)
Exemplo n.º 3
0
        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(
            to_dt_date(calibrate_date2))  # on calibrate_date
        calibrated_params3 = daily_params.get(
            to_dt_date(calibrate_date3))  # on calibrate_date
        calibrated_params4 = daily_params.get(
            to_dt_date(calibrate_date4))  # on calibrate_date
        curve_on_hedge_date = svi_data.get_curve_treasury_bond(
            hedge_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))

        calibrated_params_list = [
            calibrated_params, calibrated_params1, calibrated_params2,
            calibrated_params3, calibrated_params4
        ]
        calibrate_dates = [
            calibrate_date, calibrate_date1, calibrate_date2, calibrate_date3,
            calibrate_date4
        ]
        black_var_surface = hedge_util.get_local_volatility_surface_smoothed(
            calibrated_params_list, to_ql_dates(maturity_dates_c),
Exemplo n.º 4
0
# Evaluation Settings
today = ql.Date(14, 7, 2017)
ql.Settings.instance().evaluationDate = today
calendar = ql.China()
daycounter = ql.ActualActual()

#simulation_no = 1000
#noise = np.random.normal(0,1,(simulation_no,len(dates)))
#delta_t = 1.0/365
i = 3

# Down and out Call
optiontype = ql.Option.Call
barrierType = ql.Barrier.DownIn
curve = svi_data.get_curve_treasury_bond(today, daycounter)
calibrated_params = daily_params.get(to_dt_date(today))  # on calibrate_date
cal_vols, put_vols, maturity_dates, spot, risk_free_rates = daily_svi_dataset.get(
    to_dt_date(today))
black_var_surface = hedge_util.get_local_volatility_surface(
    calibrated_params, to_ql_dates(maturity_dates), today, daycounter,
    calendar, spot, risk_free_rates)

maturityDate = to_ql_date(maturity_dates[i])
rf = risk_free_rates.get(i)
params = calibrated_params[i]

#maturityDate = calendar.advance(today,ql.Period(6,ql.Months))
print(maturityDate)
print(rf)
#rf = 0.0