Пример #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="startDate">开始日</param>
 /// <param name="maturityDate">到期日</param>
 /// <param name="exercise">行权方式</param>
 /// <param name="optionType">看涨看跌</param>
 /// <param name="asianType">亚式期权均价计算方法</param>
 /// <param name="strikeStyle">亚式期权行权价类型</param>
 /// <param name="strike">行权价</param>
 /// <param name="underlyingInstrumentType">标的资产类型</param>
 /// <param name="calendar">交易日历</param>
 /// <param name="dayCount">日期规则</param>
 /// <param name="payoffCcy">收益计算币种</param>
 /// <param name="settlementCcy">结算币种</param>
 /// <param name="exerciseDates">行权日</param>
 /// <param name="observationDates">观察日</param>
 /// <param name="fixings">观察价格序列</param>
 /// <param name="notional">名义本金</param>
 /// <param name="settlementGap">结算日规则</param>
 /// <param name="optionPremiumPaymentDate">权利金支付日</param>
 /// <param name="optionPremium">权利金</param>
 /// <param name="isMoneynessOption">是否为相对行权价期权</param>
 /// <param name="initialSpotPrice">标的资产期初价格</param>
 /// <param name="dividends">标的资产分红</param>
 /// <param name="hasNightMarket">标的资产是否有夜盘交易</param>
 /// <param name="commodityFuturesPreciseTimeMode">是否启用精确时间模式</param>
 public AsianOption(Date startDate,
                    Date maturityDate,
                    OptionExercise exercise,
                    OptionType optionType,
                    AsianType asianType,
                    StrikeStyle strikeStyle,
                    double strike,
                    InstrumentType underlyingInstrumentType,
                    ICalendar calendar,
                    IDayCount dayCount,
                    CurrencyCode payoffCcy,
                    CurrencyCode settlementCcy,
                    Date[] exerciseDates,
                    Date[] observationDates,
                    Dictionary <Date, double> fixings,
                    double notional                      = 1,
                    DayGap settlementGap                 = null,
                    Date optionPremiumPaymentDate        = null,
                    double optionPremium                 = 0,
                    bool isMoneynessOption               = false,
                    double initialSpotPrice              = 0.0,
                    Dictionary <Date, double> dividends  = null,
                    bool hasNightMarket                  = false,
                    bool commodityFuturesPreciseTimeMode = false
                    )
     : base(startDate, maturityDate, exercise, optionType, new double[] { strike }, underlyingInstrumentType, calendar, dayCount,
            settlementCcy, payoffCcy, exerciseDates, observationDates, notional, settlementGap,
            optionPremiumPaymentDate, optionPremium,
            isMoneynessOption: isMoneynessOption, initialSpotPrice: initialSpotPrice, dividends: dividends, hasNightMarket: hasNightMarket,
            commodityFuturesPreciseTimeMode: commodityFuturesPreciseTimeMode)
 {
     Fixings     = fixings;
     AsianType   = asianType;
     StrikeStyle = strikeStyle;
 }
Пример #2
0
        public AsianOptionCalculator(
            OptionType optionType, AsianType asianType, InstrumentType underlyingProductType, StrikeStyle strikeStyle,
            double strike, double spotPrice, double realizedAveragePrice,
            double exerciseInYears, double originalAveragePeriod, double timetoNextAveragePoint,
            double sigma, double riskFreeRate, double dividendRate, double notional, double numOfObsDates, double numOfObservedDates)
        {
            _optionType   = optionType;
            _asianType    = asianType;
            _strikeStyle  = strikeStyle;
            _X            = strike;
            _S            = spotPrice;
            _SA           = realizedAveragePrice;
            _T            = exerciseInYears;
            _T2           = originalAveragePeriod;
            _t1           = timetoNextAveragePoint;
            _sigma        = sigma;
            _r            = riskFreeRate;
            _dividendRate = dividendRate;

            if (FuturesProducts.Contains(underlyingProductType))
            {
                _b = 0.0;
            }
            else
            {
                _b = riskFreeRate - dividendRate;
            }

            _notional           = notional;
            _numOfObsDates      = numOfObsDates;
            _numOfObservedDates = numOfObservedDates;
        }