Пример #1
0
            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:
Пример #2
0
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),
Пример #3
0
        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