예제 #1
0
        public FloatFloatSwap(VanillaSwap.Type type,
                              double nominal1,
                              double nominal2,
                              Schedule schedule1,
                              InterestRateIndex index1,
                              DayCounter dayCount1,
                              Schedule schedule2,
                              InterestRateIndex index2,
                              DayCounter dayCount2,
                              bool intermediateCapitalExchange = false,
                              bool finalCapitalExchange        = false,
                              double gearing1     = 1.0,
                              double spread1      = 0.0,
                              double?cappedRate1  = null,
                              double?flooredRate1 = null,
                              double gearing2     = 1.0,
                              double spread2      = 0.0,
                              double?cappedRate2  = null,
                              double?flooredRate2 = null,
                              BusinessDayConvention?paymentConvention1 = null,
                              BusinessDayConvention?paymentConvention2 = null)
            : base(2)
        {
            type_         = type;
            nominal1_     = new InitializedList <double> (schedule1.size() - 1, nominal1);
            nominal2_     = new InitializedList <double> (schedule2.size() - 1, nominal2);
            schedule1_    = schedule1;
            schedule2_    = schedule2;
            index1_       = index1;
            index2_       = index2;
            gearing1_     = new InitializedList <double>(schedule1.size() - 1, gearing1);
            gearing2_     = new InitializedList <double>(schedule2.size() - 1, gearing2);
            spread1_      = new InitializedList <double>(schedule1.size() - 1, spread1);
            spread2_      = new InitializedList <double>(schedule2.size() - 1, spread2);
            cappedRate1_  = new InitializedList <double?>(schedule1.size() - 1, cappedRate1);
            flooredRate1_ = new InitializedList <double?>(schedule1.size() - 1, flooredRate1);
            cappedRate2_  = new InitializedList <double?>(schedule2.size() - 1, cappedRate2);
            flooredRate2_ = new InitializedList <double?>(schedule2.size() - 1, flooredRate2);
            dayCount1_    = dayCount1; dayCount2_ = dayCount2;
            intermediateCapitalExchange_ = intermediateCapitalExchange;
            finalCapitalExchange_        = finalCapitalExchange;

            init(paymentConvention1, paymentConvention2);
        }