ttm = daycounter.yearFraction(begDate, maturitydt) price_svi, delta_svi, price_bs, delta_bs, svi_vol = exotic_util.calculate_matrics( evaluation, daycounter, calendar, optionBarrierEuropean, hist_spots, daily_close, black_var_surface, const_vol, engineType,ttm) except Exception as e: print(e) print('initial price unavailable') # init_svi = price_svi # init_bs = price_bs init_spot = daily_close init_svi = init_bs = max(price_bs, price_svi) if init_svi <= 0.001 or init_bs <= 0.001: continue # rebalancing positions tradingcost_svi, cash_svi, portfolio_net_svi, totalfees_svi, tradedamt_svi = \ exotic_util.calculate_hedging_positions(daily_close, price_svi, delta_svi, init_svi, fee,tradedamt_svi) tradingcost_bs, cash_bs, portfolio_net_bs, totalfees_bs, tradedamt_bs = \ exotic_util.calculate_hedging_positions(daily_close, price_bs, delta_bs, init_bs, fee,tradedamt_bs) # print(delta_svi,delta_bs) holdamt_svi += abs(delta_svi) holdamt_bs += abs(delta_bs) last_delta_svi = delta_svi last_delta_bs = delta_bs last_price_svi = price_svi last_price_bs = price_bs last_s = daily_close hist_spots.append(daily_close) marked = daily_close ####################################################################################################### # Rebalancing portfolio # while begDate < endDate:
ttm = daycounter.yearFraction(begDate, maturitydt) price_svi, price_bs, delta_svi, delta_bs = 0.0, 0.0, 0.0, 0.0 try: price_svi, delta_svi, price_bs, delta_bs, svi_vol = exotic_util.calculate_matrics( evaluation, daycounter, calendar, optionBarrierEuropean, hist_spots, daily_close, black_var_surface, const_vol, engineType, ttm) except Exception as e: print(e) print('initial price unavailable') # init_svi = price_svi # init_bs = price_bs init_svi = init_bs = max(price_svi, price_bs) init_spot = daily_close # rebalancing positions tradingcost_svi, cash_svi, portfolio_net_svi, totalfees_svi, rebalance_cont = exotic_util.calculate_hedging_positions( daily_close, price_svi, delta_svi, init_svi, fee) tradingcost_bs, cash_bs, portfolio_net_bs, totalfees_bs, e1 = exotic_util.calculate_hedging_positions( daily_close, price_bs, delta_bs, init_bs, fee) last_delta_svi = delta_svi last_delta_bs = delta_bs last_price_svi = price_svi last_price_bs = price_bs last_s = daily_close hist_spots.append(daily_close) print('init option price, ', 'svi: ', price_svi, 'bs: ', price_bs) print('-' * 200) print( "%15s %15s %15s %15s %15s %15s %15s %15s %15s %15s %15s" % (begDate, round(daily_close, 4), round(svi_vol, 4), round(const_vol, 4),
ttm = daycounter.yearFraction(begDate, maturitydt) price_svi, delta_svi, price_bs, delta_bs, svi_vol = exotic_util.calculate_matrics( evaluation, daycounter, calendar, optionBarrierEuropean, hist_spots, daily_close, black_var_surface, const_vol, engineType,ttm) except Exception as e: print(e) print('initial price unavailable') # init_svi = price_svi # init_bs = price_bs init_spot = daily_close init_svi = init_bs = max(price_bs, price_svi) if init_svi <= 0.001 or init_bs <= 0.001: continue # rebalancing positions tradingcost_svi, cash_svi, portfolio_net_svi, totalfees_svi, rebalance_cont = \ exotic_util.calculate_hedging_positions(daily_close, price_svi, delta_svi, init_svi, fee) tradingcost_bs, cash_bs, portfolio_net_bs, totalfees_bs, e1 = \ exotic_util.calculate_hedging_positions(daily_close, price_bs, delta_bs, init_bs, fee) tradedvalue_svi += abs(delta_svi) * daily_close tradedvalue_bs += abs(delta_bs) * daily_close deltacont_svi.append(abs(delta_svi)) deltacont_bs.append(abs(delta_bs)) last_delta_svi = delta_svi last_delta_bs = delta_bs last_price_svi = price_svi last_price_bs = price_bs last_s = daily_close hist_spots.append(daily_close) marked = daily_close ####################################################################################################### # Rebalancing portfolio