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 = []
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)
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),
# 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