예제 #1
0
    long ohObjectSave(
            const std::vector<std::string>& ObjectList,
            const std::string &Filename,
            const ObjectHandler::property_t &Overwrite,
            const ObjectHandler::property_t &IncludeGroups,
            const ObjectHandler::property_t &Trigger) {

        try {

        // convert input datatypes to C++ datatypes

        bool OverwriteCpp = ObjectHandler::convert2<bool>(
            Overwrite, "Overwrite", false);

        bool IncludeGroupsCpp = ObjectHandler::convert2<bool>(
            IncludeGroups, "IncludeGroups", true);

        // invoke the utility function

        long returnValue = ObjectHandler::SerializationFactory::instance().saveObject(
                ObjectList,
                Filename,
                OverwriteCpp,
                IncludeGroupsCpp);

        // convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function ohObjectSave : " << e.what());
        }
    }
예제 #2
0
 void qlAbcdAtmVolCurve::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "SETTLEMENTDAYS")==0)
         SettlementDays_ = ObjectHandler::convert2<long>(value);
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         Calendar_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "OPTIONTENORS")==0)
         OptionTenors_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "VOLATILITIESQUOTES")==0)
         VolatilitiesQuotes_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "INCLUSIONININTERPOLATION")==0)
         InclusionInInterpolation_ = ObjectHandler::vector::convert2<bool>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "CONVENTION")==0)
         Convention_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0)
         DayCounter_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }
예제 #3
0
 ObjectHandler::property_t qlInterpolatedYieldCurve::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "REFDATE")==0)
         return RefDate_;
     else if(strcmp(nameUpper.c_str(), "DATES")==0)
         return Dates_;
     else if(strcmp(nameUpper.c_str(), "DATA")==0)
         return Data_;
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         return Calendar_;
     else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0)
         return DayCounter_;
     else if(strcmp(nameUpper.c_str(), "JUMPS")==0)
         return Jumps_;
     else if(strcmp(nameUpper.c_str(), "JUMPDATES")==0)
         return JumpDates_;
     else if(strcmp(nameUpper.c_str(), "TRAITSID")==0)
         return TraitsID_;
     else if(strcmp(nameUpper.c_str(), "INTERPOLATORID")==0)
         return InterpolatorID_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #4
0
 void qlInterpolatedYieldCurve::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "REFDATE")==0)
         RefDate_ = value;
     else if(strcmp(nameUpper.c_str(), "DATES")==0)
         Dates_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "DATA")==0)
         Data_ = ObjectHandler::vector::convert2<double>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         Calendar_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0)
         DayCounter_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "JUMPS")==0)
         Jumps_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "JUMPDATES")==0)
         JumpDates_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "TRAITSID")==0)
         TraitsID_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "INTERPOLATORID")==0)
         InterpolatorID_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }
예제 #5
0
 ObjectHandler::property_t qlAbcdAtmVolCurve::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "SETTLEMENTDAYS")==0)
         return SettlementDays_;
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         return Calendar_;
     else if(strcmp(nameUpper.c_str(), "OPTIONTENORS")==0)
         return OptionTenors_;
     else if(strcmp(nameUpper.c_str(), "VOLATILITIESQUOTES")==0)
         return VolatilitiesQuotes_;
     else if(strcmp(nameUpper.c_str(), "INCLUSIONININTERPOLATION")==0)
         return InclusionInInterpolation_;
     else if(strcmp(nameUpper.c_str(), "CONVENTION")==0)
         return Convention_;
     else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0)
         return DayCounter_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #6
0
    bool CALSettingsSetEvaluationDate(
            const ObjectHandler::property_t &EvalDate,
            const ObjectHandler::property_t &Trigger) {

        try {

        // convert input datatypes to QuantLib datatypes

        QuantLib::Date EvalDateLib = ObjectHandler::convert2<QuantLib::Date>(
            EvalDate, "EvalDate", QuantLib::Date());

        // invoke the utility function

        static bool returnValue = true;
        QuantLibAddin::qlSettingsSetEvaluationDate(
                EvalDateLib);

        // convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function CALSettingsSetEvaluationDate : " << e.what());
        }
    }
예제 #7
0
 RepositoryXL &RepositoryXL::instance() {
     if (instance_) {
         RepositoryXL *ret = dynamic_cast<RepositoryXL*>(instance_);
         if (ret) return *ret;
     }
     OH_FAIL("Attempt to reference uninitialized RepositoryXL object");
 }
예제 #8
0
    std::string ohObjectSaveString(
            const std::vector<std::string>& ObjectList,
            const ObjectHandler::property_t &Overwrite,
            const ObjectHandler::property_t &Trigger) {

        try {

        // convert input datatypes to C++ datatypes

        bool OverwriteCpp = ObjectHandler::convert2<bool>(
            Overwrite, "Overwrite", false);

        // convert input datatypes to Object references

        std::vector<boost::shared_ptr<ObjectHandler::Object> > ObjectListObjPtr =
            ObjectHandler::getObjectVector<ObjectHandler::Object>(ObjectList);

        // invoke the utility function

        std::string returnValue = ObjectHandler::SerializationFactory::instance().saveObjectString(
                ObjectListObjPtr,
                OverwriteCpp);

        // convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function ohObjectSaveString : " << e.what());
        }
    }
예제 #9
0
 void qlAssetSwap::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "PAYBONDCOUPON")==0)
         PayBondCoupon_ = ObjectHandler::convert2<bool>(value);
     else if(strcmp(nameUpper.c_str(), "BOND")==0)
         Bond_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLEANPRICE")==0)
         CleanPrice_ = ObjectHandler::convert2<double>(value);
     else if(strcmp(nameUpper.c_str(), "IBORINDEX")==0)
         IborIndex_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "SPREAD")==0)
         Spread_ = ObjectHandler::convert2<double>(value);
     else if(strcmp(nameUpper.c_str(), "FLOATINGLEGSCHEDULE")==0)
         FloatingLegSchedule_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "FLOATINGLEGDAYCOUNTER")==0)
         FloatingLegDayCounter_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "PARASSETSWAP")==0)
         ParAssetSwap_ = ObjectHandler::convert2<bool>(value);
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }
예제 #10
0
    std::vector<std::string> ohObjectLoadString(
            const std::string &Xml,
            const ObjectHandler::property_t &Overwrite,
            const ObjectHandler::property_t &Trigger) {

        try {

        // convert input datatypes to C++ datatypes

        bool OverwriteCpp = ObjectHandler::convert2<bool>(
            Overwrite, "Overwrite", false);

        // invoke the utility function

        std::vector<std::string> returnValue = ObjectHandler::SerializationFactory::instance().loadObjectString(
                Xml,
                OverwriteCpp);

        // convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function ohObjectLoadString : " << e.what());
        }
    }
예제 #11
0
 void qlSchedule::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0)
         EffectiveDate_ = value;
     else if(strcmp(nameUpper.c_str(), "TERMINATIONDATE")==0)
         TerminationDate_ = value;
     else if(strcmp(nameUpper.c_str(), "TENOR")==0)
         Tenor_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         Calendar_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CONVENTION")==0)
         Convention_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "TERMDATECONV")==0)
         TermDateConv_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "GENRULE")==0)
         GenRule_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "ENDOFMONTH")==0)
         EndOfMonth_ = ObjectHandler::convert2<bool>(value);
     else if(strcmp(nameUpper.c_str(), "FIRSTDATE")==0)
         FirstDate_ = value;
     else if(strcmp(nameUpper.c_str(), "NEXTTOLASTDATE")==0)
         NextToLastDate_ = value;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }
예제 #12
0
void operToOper(OPER *xTarget, const OPER *xSource) {
    if (xSource->xltype == xltypeNum) {
        xTarget->xltype = xltypeNum;
        xTarget->val.num = xSource->val.num;
        return;
    } else if (xSource->xltype == xltypeStr) {
        // Must use type unsigned char (BYTE) to process the 0th byte of Excel byte-counted string
        unsigned char len = xSource->val.str[0];
        xTarget->val.str = new char[ len + 1 ];
        xTarget->xltype = xltypeStr | xlbitDLLFree;
        xTarget->val.str[0] = len;
        if (len)
            strncpy(xTarget->val.str + 1, xSource->val.str + 1, len);
        return;
    } else if (xSource->xltype == xltypeErr) {
        xTarget->xltype = xltypeErr;
        xTarget->val.err = xSource->val.err;
        return;
    } else if (xSource->xltype == xltypeNil) {
        xTarget->xltype = xltypeNil;
        return;
    } else {
        OH_FAIL("operToOper: unexpected OPER type: " << xSource->xltype);
    }
}
예제 #13
0
 ObjectHandler::property_t qlAssetSwap::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "PAYBONDCOUPON")==0)
         return PayBondCoupon_;
     else if(strcmp(nameUpper.c_str(), "BOND")==0)
         return Bond_;
     else if(strcmp(nameUpper.c_str(), "CLEANPRICE")==0)
         return CleanPrice_;
     else if(strcmp(nameUpper.c_str(), "IBORINDEX")==0)
         return IborIndex_;
     else if(strcmp(nameUpper.c_str(), "SPREAD")==0)
         return Spread_;
     else if(strcmp(nameUpper.c_str(), "FLOATINGLEGSCHEDULE")==0)
         return FloatingLegSchedule_;
     else if(strcmp(nameUpper.c_str(), "FLOATINGLEGDAYCOUNTER")==0)
         return FloatingLegDayCounter_;
     else if(strcmp(nameUpper.c_str(), "PARASSETSWAP")==0)
         return ParAssetSwap_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #14
0
    std::string qlIntegralNtdEngine(
            const std::string &ObjectId,
            const std::string &IntegrationStep,
            const std::string &YieldCurve,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert input datatypes to QuantLib datatypes

        QuantLib::Period IntegrationStepLib;
        QuantLibAddin::cppToLibrary(IntegrationStep, IntegrationStepLib);

        // convert object IDs into library objects

        OH_GET_OBJECT(YieldCurveCoerce, YieldCurve, ObjectHandler::Object)
        QuantLib::Handle<QuantLib::YieldTermStructure> YieldCurveLibObj =
            QuantLibAddin::CoerceHandle<
                QuantLibAddin::YieldTermStructure,
                QuantLib::YieldTermStructure>()(
                    YieldCurveCoerce);

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::qlIntegralNtdEngine(
                ObjectId,
                IntegrationStep,
                YieldCurve,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::IntegralNtdEngine(
                valueObject,
                IntegrationStepLib,
                YieldCurveLibObj,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function qlIntegralNtdEngine : " << e.what());
        }
    }
예제 #15
0
 ObjectHandler::property_t qlSchedule::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0)
         return EffectiveDate_;
     else if(strcmp(nameUpper.c_str(), "TERMINATIONDATE")==0)
         return TerminationDate_;
     else if(strcmp(nameUpper.c_str(), "TENOR")==0)
         return Tenor_;
     else if(strcmp(nameUpper.c_str(), "CALENDAR")==0)
         return Calendar_;
     else if(strcmp(nameUpper.c_str(), "CONVENTION")==0)
         return Convention_;
     else if(strcmp(nameUpper.c_str(), "TERMDATECONV")==0)
         return TermDateConv_;
     else if(strcmp(nameUpper.c_str(), "GENRULE")==0)
         return GenRule_;
     else if(strcmp(nameUpper.c_str(), "ENDOFMONTH")==0)
         return EndOfMonth_;
     else if(strcmp(nameUpper.c_str(), "FIRSTDATE")==0)
         return FirstDate_;
     else if(strcmp(nameUpper.c_str(), "NEXTTOLASTDATE")==0)
         return NextToLastDate_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #16
0
 void qlOvernightIndexedSwap::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "PAYERRECEIVER")==0)
         PayerReceiver_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "NOMINAL")==0)
         Nominal_ = ObjectHandler::vector::convert2<double>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "SCHEDULE")==0)
         Schedule_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "FIXEDRATE")==0)
         FixedRate_ = ObjectHandler::convert2<double>(value);
     else if(strcmp(nameUpper.c_str(), "FIXDAYCOUNTER")==0)
         FixDayCounter_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "OVERNIGHTINDEX")==0)
         OvernightIndex_ = ObjectHandler::convert2<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "SPREAD")==0)
         Spread_ = ObjectHandler::convert2<double>(value);
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }
예제 #17
0
 ObjectHandler::property_t qlOvernightIndexedSwap::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "PAYERRECEIVER")==0)
         return PayerReceiver_;
     else if(strcmp(nameUpper.c_str(), "NOMINAL")==0)
         return Nominal_;
     else if(strcmp(nameUpper.c_str(), "SCHEDULE")==0)
         return Schedule_;
     else if(strcmp(nameUpper.c_str(), "FIXEDRATE")==0)
         return FixedRate_;
     else if(strcmp(nameUpper.c_str(), "FIXDAYCOUNTER")==0)
         return FixDayCounter_;
     else if(strcmp(nameUpper.c_str(), "OVERNIGHTINDEX")==0)
         return OvernightIndex_;
     else if(strcmp(nameUpper.c_str(), "SPREAD")==0)
         return Spread_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #18
0
    std::string CALCapFloor(
            const std::string &ObjectId,
            const std::string &OptionType,
            const std::string &LegID,
            const std::vector<double>& Strikes,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert input datatypes to QuantLib enumerated datatypes

        QuantLib::CapFloor::Type OptionTypeEnum =
            ObjectHandler::Create<QuantLib::CapFloor::Type>()(OptionType);

        // convert object IDs into library objects

        OH_GET_UNDERLYING(LegIDLibObj, LegID,
            QuantLibAddin::Leg, QuantLib::Leg)

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::CALCapFloor(
                ObjectId,
                OptionType,
                LegID,
                Strikes,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::CapFloor(
                valueObject,
                OptionTypeEnum,
                LegIDLibObj,
                Strikes,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function CALCapFloor : " << e.what());
        }
    }
예제 #19
0
 value_t convert2(const container_t& c, const std::string &parameterName) {
     try {
         return convert2<value_t, container_t>(c);
     }
     catch(const std::exception& e) {
         OH_FAIL("Error converting parameter '" << parameterName << "' : '" << e.what());
     }
 }
예제 #20
0
 value_t convert2(const container_t& c) {
     try {
         return c.operator value_t();
     }
     catch(const std::exception& e) {
         OH_FAIL("Unable to convert type '" << c.type().name()
             << "' to type '" << typeid(value_t).name() << "' - " << e.what());
     }
 }
예제 #21
0
    std::string qlIssuer(
            const std::string &ObjectId,
            const ObjectHandler::property_t &DefaultCurves,
            const std::string &DefaultEvents,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        std::string DefaultCurvesCpp = ObjectHandler::convert2<std::string>(
            DefaultCurves, "DefaultCurves", "");

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert object IDs into library objects

        OH_GET_REFERENCE_DEFAULT(DefaultCurvesLibObjPtr, DefaultCurvesCpp,
            QuantLibAddin::DefaultProbabilityTermStructure, QuantLib::DefaultProbabilityTermStructure)

        OH_GET_REFERENCE(DefaultEventsLibObjPtr, DefaultEvents,
            QuantLibAddin::DefaultEventSet, QuantLib::DefaultEventSet)

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::qlIssuer(
                ObjectId,
                DefaultCurvesCpp,
                DefaultEvents,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::Issuer(
                valueObject,
                DefaultCurvesLibObjPtr,
                DefaultEventsLibObjPtr,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function qlIssuer : " << e.what());
        }
    }
예제 #22
0
    std::string qlScheduleTruncated(
            const std::string &ObjectId,
            const std::string &OriginalSchedule,
            const ObjectHandler::property_t &TruncationDate,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert input datatypes to QuantLib datatypes

        QuantLib::Date TruncationDateLib = ObjectHandler::convert2<QuantLib::Date>(
            TruncationDate, "TruncationDate");

        // convert object IDs into library objects

        OH_GET_REFERENCE(OriginalScheduleLibObjPtr, OriginalSchedule,
            QuantLibAddin::Schedule, QuantLib::Schedule)

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::qlScheduleTruncated(
                ObjectId,
                OriginalSchedule,
                TruncationDate,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::Schedule(
                valueObject,
                OriginalScheduleLibObjPtr,
                TruncationDateLib,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function qlScheduleTruncated : " << e.what());
        }
    }
예제 #23
0
    std::string qlVanillaSwapFromSwapIndex(
            const std::string &ObjectId,
            const std::string &SwapIndex,
            const ObjectHandler::property_t &FixingDate,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert input datatypes to QuantLib datatypes

        QuantLib::Date FixingDateLib = ObjectHandler::convert2<QuantLib::Date>(
            FixingDate, "FixingDate");

        // convert object IDs into library objects

        OH_GET_REFERENCE(SwapIndexLibObjPtr, SwapIndex,
            QuantLibAddin::SwapIndex, QuantLib::SwapIndex)

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::qlVanillaSwapFromSwapIndex(
                ObjectId,
                SwapIndex,
                FixingDate,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::VanillaSwap(
                valueObject,
                SwapIndexLibObjPtr,
                FixingDateLib,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function qlVanillaSwapFromSwapIndex : " << e.what());
        }
    }
예제 #24
0
 value_t convert2(const container_t& c, const std::string &parameterName, const value_t& defaultValue) {
     try {
         if(c.missing())    
             return defaultValue;
         return convert2<value_t, container_t>(c);
     }
     catch(const std::exception& e) {
         OH_FAIL("Error converting parameter '" << parameterName << "' : '" << e.what());
     }
 }
예제 #25
0
 inline void ObjectWrapper::recreate(){
     try {
         object_ = SerializationFactory::instance().recreateObject( 
             object_->properties());
         dirty_ = false;
         updateTime_ = getTime();
     } catch (const std::exception &e) {
         OH_FAIL("Error in function ObjectWrapper::recreate() : " << e.what());
     }
 }
예제 #26
0
    std::string CALVanillaOption(
            const std::string &ObjectId,
            const std::string &Payoff,
            const std::string &Exercise,
            const ObjectHandler::property_t &Permanent,
            const ObjectHandler::property_t &Trigger,
            const bool &Overwrite) {

        try {

        // convert input datatypes to C++ datatypes

        bool PermanentCpp = ObjectHandler::convert2<bool>(
            Permanent, "Permanent", false);

        // convert object IDs into library objects

        OH_GET_REFERENCE(PayoffLibObjPtr, Payoff,
            QuantLibAddin::StrikedTypePayoff, QuantLib::StrikedTypePayoff)

        OH_GET_REFERENCE(ExerciseLibObjPtr, Exercise,
            QuantLibAddin::Exercise, QuantLib::Exercise)

        // Construct the Value Object

        boost::shared_ptr<ObjectHandler::ValueObject> valueObject(
            new QuantLibAddin::ValueObjects::CALVanillaOption(
                ObjectId,
                Payoff,
                Exercise,
                PermanentCpp));

        // Construct the Object
        
        boost::shared_ptr<ObjectHandler::Object> object(
            new QuantLibAddin::VanillaOption(
                valueObject,
                PayoffLibObjPtr,
                ExerciseLibObjPtr,
                PermanentCpp));

        // Store the Object in the Repository

        std::string returnValue =
            ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite);

        // Convert and return the return value

        return returnValue;

        } catch (const std::exception &e) {
            OH_FAIL("Error in function CALVanillaOption : " << e.what());
        }
    }
예제 #27
0
void ESTSValueObject::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
        std::string nameUpper = boost::algorithm::to_upper_copy(name);
        if (strcmp(nameUpper.c_str(), "OBJECTID")==0)
            objectId_ = boost::get<std::string>(value);
        else if (strcmp(nameUpper.c_str(), "CLASSNAME")==0)
            className_ = boost::get<std::string>(value);
        else if (strcmp(nameUpper.c_str(), "PERMANENT")==0)
            permanent_ = boost::get<bool>(value);
        else
            OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
    }
예제 #28
0
ObjectHandler::property_t ESTSValueObject::getSystemProperty(const std::string& name) const {
        std::string nameUpper = boost::algorithm::to_upper_copy(name);
        if (strcmp(nameUpper.c_str(), "OBJECTID")==0)
            return objectId_;
        else if (strcmp(nameUpper.c_str(), "CLASSNAME")==0)
            return className_;
        else if (strcmp(nameUpper.c_str(), "PERMANENT")==0)
            //return (long)permanent_;
            return (bool)permanent_;
        else
            OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
    }
예제 #29
0
 ObjectHandler::property_t qlScheduleFromDateVector::getSystemProperty(const std::string& name) const {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         return objectId_;
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         return className_;
     else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0)
         return EffectiveDate_;
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         return Permanent_;
     else
         OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'");
 }
예제 #30
0
 void qlScheduleFromDateVector::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) {
     std::string nameUpper = boost::algorithm::to_upper_copy(name);
     if(strcmp(nameUpper.c_str(), "OBJECTID")==0)
         objectId_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0)
         className_ = boost::get<std::string>(value);
     else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0)
         EffectiveDate_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper);
     else if(strcmp(nameUpper.c_str(), "PERMANENT")==0)
         Permanent_ = ObjectHandler::convert2<bool>(value);
     else
         OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'");
 }