diff --git a/README.md b/README.md index 693fcff..b4df4ac 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Please refer to [how to build](#building-the-native-addon) below | -------- | ------------- | ------- | ------------- | | 1.7.1 | 1.7.0 | 6.9.1 | 0.1.x | | 1.8.1 | 1.8.0 | 6.9.5 | 0.2.x | +| 1.9.2 | 1.9.0 | 6.9.5 | 0.3.x | ## Building the native addon @@ -133,4 +134,4 @@ ql.SymmetricSchurDecomposition('mtx#1',mtx1).then(function(obj){ //C2 formula: = 0.01580103250921176, 0.01377474504269164, 0.012784934140218302 ] -``` +``` \ No newline at end of file diff --git a/lib/quantlib.js b/lib/quantlib.js index 145e2c5..aa55e33 100644 --- a/lib/quantlib.js +++ b/lib/quantlib.js @@ -353,8 +353,8 @@ exports.CreditBasketSetLossModel = promisify(rawApi.CreditBasketSetLossModel); exports.CreditBasketSize = promisify(rawApi.CreditBasketSize); exports.CreditBasketLiveNotional = promisify(rawApi.CreditBasketLiveNotional); exports.CreditBasketLoss = promisify(rawApi.CreditBasketLoss); -exports.CrediBasketAttachLive = promisify(rawApi.CrediBasketAttachLive); -exports.CrediBasketDetachLive = promisify(rawApi.CrediBasketDetachLive); +exports.CreditBasketAttachLive = promisify(rawApi.CreditBasketAttachLive); +exports.CreditBasketDetachLive = promisify(rawApi.CreditBasketDetachLive); exports.ExpectedTrancheLoss = promisify(rawApi.ExpectedTrancheLoss); exports.CreditBasketPercentile = promisify(rawApi.CreditBasketPercentile); exports.CreditBasketESF = promisify(rawApi.CreditBasketESF); diff --git a/package.json b/package.json index 997f48a..fc56982 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "quantlib", "description": "QuantLib Asyn Bindings for Node.js", - "version": "0.2.1", + "version": "0.3.0", "keywords": [ "quantlib" ], diff --git a/quantlibnode.cpp b/quantlibnode.cpp index c9d223c..a05608f 100644 --- a/quantlibnode.cpp +++ b/quantlibnode.cpp @@ -373,8 +373,8 @@ NAN_MODULE_INIT(init){ Nan::SetMethod(target, "CreditBasketSize", QuantLibNode::CreditBasketSize); Nan::SetMethod(target, "CreditBasketLiveNotional", QuantLibNode::CreditBasketLiveNotional); Nan::SetMethod(target, "CreditBasketLoss", QuantLibNode::CreditBasketLoss); - Nan::SetMethod(target, "CrediBasketAttachLive", QuantLibNode::CrediBasketAttachLive); - Nan::SetMethod(target, "CrediBasketDetachLive", QuantLibNode::CrediBasketDetachLive); + Nan::SetMethod(target, "CreditBasketAttachLive", QuantLibNode::CreditBasketAttachLive); + Nan::SetMethod(target, "CreditBasketDetachLive", QuantLibNode::CreditBasketDetachLive); Nan::SetMethod(target, "ExpectedTrancheLoss", QuantLibNode::ExpectedTrancheLoss); Nan::SetMethod(target, "CreditBasketPercentile", QuantLibNode::CreditBasketPercentile); Nan::SetMethod(target, "CreditBasketESF", QuantLibNode::CreditBasketESF); diff --git a/quantlibnode.hpp b/quantlibnode.hpp index f6c0c32..834e625 100644 --- a/quantlibnode.hpp +++ b/quantlibnode.hpp @@ -421,8 +421,8 @@ class QuantLibNode : public Nan::ObjectWrap { static NAN_METHOD(CreditBasketSize); static NAN_METHOD(CreditBasketLiveNotional); static NAN_METHOD(CreditBasketLoss); - static NAN_METHOD(CrediBasketAttachLive); - static NAN_METHOD(CrediBasketDetachLive); + static NAN_METHOD(CreditBasketAttachLive); + static NAN_METHOD(CreditBasketDetachLive); static NAN_METHOD(ExpectedTrancheLoss); static NAN_METHOD(CreditBasketPercentile); static NAN_METHOD(CreditBasketESF); diff --git a/src/basketlossmodels.cpp b/src/basketlossmodels.cpp index bc7c56b..4c78283 100644 --- a/src/basketlossmodels.cpp +++ b/src/basketlossmodels.cpp @@ -32,7 +32,7 @@ void GaussianLHPLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGaussianLHPLossmodel( mObjectID, mCorrelation, - mRecoveyRates, + mRecoveryRates, false )); @@ -41,7 +41,7 @@ void GaussianLHPLossmodelWorker::Execute(){ new QuantLibAddin::GaussianLHPLossModel( valueObject, mCorrelation, - mRecoveyRates, + mRecoveryRates, false )); @@ -78,7 +78,7 @@ NAN_METHOD(QuantLibNode::GaussianLHPLossmodel) { return Nan::ThrowError("Correlation is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } // convert js argument to c++ type String::Utf8Value strObjectID(info[0]->ToString()); @@ -88,11 +88,11 @@ NAN_METHOD(QuantLibNode::GaussianLHPLossmodel) { double CorrelationCpp = Nan::To(info[1]).FromJust(); // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } @@ -103,7 +103,7 @@ NAN_METHOD(QuantLibNode::GaussianLHPLossmodel) { callback ,ObjectIDCpp ,CorrelationCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp )); } @@ -132,7 +132,7 @@ void IHGaussPoolLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlIHGaussPoolLossModel( mObjectID, mCorrelation, - mRecoveyRates, + mRecoveryRates, mNumBuckets, false )); @@ -142,7 +142,7 @@ void IHGaussPoolLossModelWorker::Execute(){ new QuantLibAddin::IHGaussPoolLossModel( valueObject, mCorrelation, - mRecoveyRates, + mRecoveryRates, NumBucketsLib, false )); @@ -180,7 +180,7 @@ NAN_METHOD(QuantLibNode::IHGaussPoolLossModel) { return Nan::ThrowError("Correlation is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsNumber()) { return Nan::ThrowError("NumBuckets is required."); @@ -193,11 +193,11 @@ NAN_METHOD(QuantLibNode::IHGaussPoolLossModel) { double CorrelationCpp = Nan::To(info[1]).FromJust(); // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -211,7 +211,7 @@ NAN_METHOD(QuantLibNode::IHGaussPoolLossModel) { callback ,ObjectIDCpp ,CorrelationCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,NumBucketsCpp )); @@ -241,7 +241,7 @@ void IHStudentPoolLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlIHStudentPoolLossModel( mObjectID, mCorrelation, - mRecoveyRates, + mRecoveryRates, mTtraits, mNumBuckets, false @@ -252,7 +252,7 @@ void IHStudentPoolLossModelWorker::Execute(){ new QuantLibAddin::IHStudentPoolLossModel( valueObject, mCorrelation, - mRecoveyRates, + mRecoveryRates, mTtraits, NumBucketsLib, false @@ -291,7 +291,7 @@ NAN_METHOD(QuantLibNode::IHStudentPoolLossModel) { return Nan::ThrowError("Correlation is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsArray()) { return Nan::ThrowError("Ttraits is required."); @@ -307,11 +307,11 @@ NAN_METHOD(QuantLibNode::IHStudentPoolLossModel) { double CorrelationCpp = Nan::To(info[1]).FromJust(); // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -333,7 +333,7 @@ NAN_METHOD(QuantLibNode::IHStudentPoolLossModel) { callback ,ObjectIDCpp ,CorrelationCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,TtraitsCpp ,NumBucketsCpp )); @@ -357,7 +357,7 @@ void GBinomialLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGBinomialLossmodel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -366,7 +366,7 @@ void GBinomialLossmodelWorker::Execute(){ new QuantLibAddin::GaussianBinomialLossModel( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -403,7 +403,7 @@ NAN_METHOD(QuantLibNode::GBinomialLossmodel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } // convert js argument to c++ type String::Utf8Value strObjectID(info[0]->ToString()); @@ -423,11 +423,11 @@ NAN_METHOD(QuantLibNode::GBinomialLossmodel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } @@ -438,7 +438,7 @@ NAN_METHOD(QuantLibNode::GBinomialLossmodel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp )); } @@ -460,7 +460,7 @@ void TBinomialLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlTBinomialLossmodel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, false )); @@ -470,7 +470,7 @@ void TBinomialLossmodelWorker::Execute(){ new QuantLibAddin::TBinomialLossModel( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, false )); @@ -508,7 +508,7 @@ NAN_METHOD(QuantLibNode::TBinomialLossmodel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsArray()) { return Nan::ThrowError("Ttraits is required."); @@ -531,11 +531,11 @@ NAN_METHOD(QuantLibNode::TBinomialLossmodel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -554,7 +554,7 @@ NAN_METHOD(QuantLibNode::TBinomialLossmodel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,TtraitsCpp )); @@ -715,7 +715,7 @@ void GMCLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGMCLossModel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mNumSimulations, false )); @@ -725,7 +725,7 @@ void GMCLossModelWorker::Execute(){ new QuantLibAddin::GaussianRandomDefaultLM( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, NumSimulationsLib, false )); @@ -763,7 +763,7 @@ NAN_METHOD(QuantLibNode::GMCLossModel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsNumber()) { return Nan::ThrowError("NumSimulations is required."); @@ -786,11 +786,11 @@ NAN_METHOD(QuantLibNode::GMCLossModel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -804,7 +804,7 @@ NAN_METHOD(QuantLibNode::GMCLossModel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,NumSimulationsCpp )); @@ -834,7 +834,7 @@ void GRandomRRMCLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGRandomRRMCLossModel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mModelA, mNumSimulations, false @@ -845,7 +845,7 @@ void GRandomRRMCLossModelWorker::Execute(){ new QuantLibAddin::GaussianRandomLossLM( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, mModelA, NumSimulationsLib, false @@ -884,7 +884,7 @@ NAN_METHOD(QuantLibNode::GRandomRRMCLossModel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsNumber()) { return Nan::ThrowError("ModelA is required."); @@ -910,11 +910,11 @@ NAN_METHOD(QuantLibNode::GRandomRRMCLossModel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -931,7 +931,7 @@ NAN_METHOD(QuantLibNode::GRandomRRMCLossModel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,ModelACpp ,NumSimulationsCpp )); @@ -960,7 +960,7 @@ void TMCLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlTMCLossModel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, mNumSimulations, false @@ -971,7 +971,7 @@ void TMCLossModelWorker::Execute(){ new QuantLibAddin::TRandomDefaultLM( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, NumSimulationsLib, false @@ -1010,7 +1010,7 @@ NAN_METHOD(QuantLibNode::TMCLossModel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsArray()) { return Nan::ThrowError("Ttraits is required."); @@ -1036,11 +1036,11 @@ NAN_METHOD(QuantLibNode::TMCLossModel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -1062,7 +1062,7 @@ NAN_METHOD(QuantLibNode::TMCLossModel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,TtraitsCpp ,NumSimulationsCpp )); @@ -1093,7 +1093,7 @@ void TRandomRRMCLossModelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlTRandomRRMCLossModel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, mModelA, mNumSimulations, @@ -1105,7 +1105,7 @@ void TRandomRRMCLossModelWorker::Execute(){ new QuantLibAddin::TRandomLossLM( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, mModelA, NumSimulationsLib, @@ -1145,7 +1145,7 @@ NAN_METHOD(QuantLibNode::TRandomRRMCLossModel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsArray()) { return Nan::ThrowError("Ttraits is required."); @@ -1174,11 +1174,11 @@ NAN_METHOD(QuantLibNode::TRandomRRMCLossModel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -1203,7 +1203,7 @@ NAN_METHOD(QuantLibNode::TRandomRRMCLossModel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,TtraitsCpp ,ModelACpp ,NumSimulationsCpp @@ -1228,7 +1228,7 @@ void GSaddlePointLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGSaddlePointLossmodel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -1237,7 +1237,7 @@ void GSaddlePointLossmodelWorker::Execute(){ new QuantLibAddin::SaddlePointLossModel( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -1274,7 +1274,7 @@ NAN_METHOD(QuantLibNode::GSaddlePointLossmodel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } // convert js argument to c++ type String::Utf8Value strObjectID(info[0]->ToString()); @@ -1294,11 +1294,11 @@ NAN_METHOD(QuantLibNode::GSaddlePointLossmodel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } @@ -1309,7 +1309,7 @@ NAN_METHOD(QuantLibNode::GSaddlePointLossmodel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp )); } @@ -1331,7 +1331,7 @@ void TSaddlePointLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlTSaddlePointLossmodel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, false )); @@ -1341,7 +1341,7 @@ void TSaddlePointLossmodelWorker::Execute(){ new QuantLibAddin::TSaddlePointLossModel( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, mTtraits, false )); @@ -1379,7 +1379,7 @@ NAN_METHOD(QuantLibNode::TSaddlePointLossmodel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } if (info.Length() == 3 || !info[3]->IsArray()) { return Nan::ThrowError("Ttraits is required."); @@ -1402,11 +1402,11 @@ NAN_METHOD(QuantLibNode::TSaddlePointLossmodel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } // convert js argument to c++ type @@ -1425,7 +1425,7 @@ NAN_METHOD(QuantLibNode::TSaddlePointLossmodel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp ,TtraitsCpp )); @@ -1448,7 +1448,7 @@ void GRecursiveLossmodelWorker::Execute(){ new QuantLibAddin::ValueObjects::qlGRecursiveLossmodel( mObjectID, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -1457,7 +1457,7 @@ void GRecursiveLossmodelWorker::Execute(){ new QuantLibAddin::RecursiveGaussLossModel( valueObject, mFactors, - mRecoveyRates, + mRecoveryRates, false )); @@ -1494,7 +1494,7 @@ NAN_METHOD(QuantLibNode::GRecursiveLossmodel) { return Nan::ThrowError("Factors is required."); } if (info.Length() == 2 || !info[2]->IsArray()) { - return Nan::ThrowError("RecoveyRates is required."); + return Nan::ThrowError("RecoveryRates is required."); } // convert js argument to c++ type String::Utf8Value strObjectID(info[0]->ToString()); @@ -1514,11 +1514,11 @@ NAN_METHOD(QuantLibNode::GRecursiveLossmodel) { } // convert js argument to c++ type - std::vectorRecoveyRatesCpp; + std::vectorRecoveryRatesCpp; - Local RecoveyRatesArray = info[2].As(); - for (unsigned int i = 0; i < RecoveyRatesArray->Length(); i++){ - RecoveyRatesCpp.push_back(Nan::To(Nan::Get(RecoveyRatesArray, i).ToLocalChecked()).FromJust()); + Local RecoveryRatesArray = info[2].As(); + for (unsigned int i = 0; i < RecoveryRatesArray->Length(); i++){ + RecoveryRatesCpp.push_back(Nan::To(Nan::Get(RecoveryRatesArray, i).ToLocalChecked()).FromJust()); } @@ -1529,7 +1529,7 @@ NAN_METHOD(QuantLibNode::GRecursiveLossmodel) { callback ,ObjectIDCpp ,FactorsCpp - ,RecoveyRatesCpp + ,RecoveryRatesCpp )); } diff --git a/src/basketlossmodels.hpp b/src/basketlossmodels.hpp index eb83799..5ddccae 100644 --- a/src/basketlossmodels.hpp +++ b/src/basketlossmodels.hpp @@ -22,7 +22,7 @@ class GaussianLHPLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; double mCorrelation; - std::vector mRecoveyRates; + std::vector mRecoveryRates; string mReturnValue; @@ -32,12 +32,12 @@ class GaussianLHPLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,double Correlation - ,std::vector RecoveyRates + ,std::vector RecoveryRates ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mCorrelation(Correlation) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) { }; @@ -56,7 +56,7 @@ class IHGaussPoolLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; double mCorrelation; - std::vector mRecoveyRates; + std::vector mRecoveryRates; long mNumBuckets; string mReturnValue; @@ -67,13 +67,13 @@ class IHGaussPoolLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,double Correlation - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,long NumBuckets ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mCorrelation(Correlation) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mNumBuckets(NumBuckets) { @@ -93,7 +93,7 @@ class IHStudentPoolLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; double mCorrelation; - std::vector mRecoveyRates; + std::vector mRecoveryRates; std::vector mTtraits; long mNumBuckets; @@ -105,14 +105,14 @@ class IHStudentPoolLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,double Correlation - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,std::vector Ttraits ,long NumBuckets ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mCorrelation(Correlation) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mTtraits(Ttraits) ,mNumBuckets(NumBuckets) { @@ -133,7 +133,7 @@ class GBinomialLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; string mReturnValue; @@ -143,12 +143,12 @@ class GBinomialLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) { }; @@ -167,7 +167,7 @@ class TBinomialLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; std::vector mTtraits; string mReturnValue; @@ -178,13 +178,13 @@ class TBinomialLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,std::vector Ttraits ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mTtraits(Ttraits) { @@ -244,7 +244,7 @@ class GMCLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; long mNumSimulations; string mReturnValue; @@ -255,13 +255,13 @@ class GMCLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,long NumSimulations ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mNumSimulations(NumSimulations) { @@ -281,7 +281,7 @@ class GRandomRRMCLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; double mModelA; long mNumSimulations; @@ -293,14 +293,14 @@ class GRandomRRMCLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,double ModelA ,long NumSimulations ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mModelA(ModelA) ,mNumSimulations(NumSimulations) { @@ -321,7 +321,7 @@ class TMCLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; std::vector mTtraits; long mNumSimulations; @@ -333,14 +333,14 @@ class TMCLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,std::vector Ttraits ,long NumSimulations ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mTtraits(Ttraits) ,mNumSimulations(NumSimulations) { @@ -361,7 +361,7 @@ class TRandomRRMCLossModelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; std::vector mTtraits; double mModelA; long mNumSimulations; @@ -374,7 +374,7 @@ class TRandomRRMCLossModelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,std::vector Ttraits ,double ModelA ,long NumSimulations @@ -382,7 +382,7 @@ class TRandomRRMCLossModelWorker : public Nan::AsyncWorker { Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mTtraits(Ttraits) ,mModelA(ModelA) ,mNumSimulations(NumSimulations) @@ -404,7 +404,7 @@ class GSaddlePointLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; string mReturnValue; @@ -414,12 +414,12 @@ class GSaddlePointLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) { }; @@ -438,7 +438,7 @@ class TSaddlePointLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; std::vector mTtraits; string mReturnValue; @@ -449,13 +449,13 @@ class TSaddlePointLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ,std::vector Ttraits ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) ,mTtraits(Ttraits) { @@ -475,7 +475,7 @@ class GRecursiveLossmodelWorker : public Nan::AsyncWorker { public: string mObjectID; std::vector< std::vector > mFactors; - std::vector mRecoveyRates; + std::vector mRecoveryRates; string mReturnValue; @@ -485,12 +485,12 @@ class GRecursiveLossmodelWorker : public Nan::AsyncWorker { Nan::Callback *callback ,string ObjectID ,std::vector< std::vector > Factors - ,std::vector RecoveyRates + ,std::vector RecoveryRates ): Nan::AsyncWorker(callback) ,mObjectID(ObjectID) ,mFactors(Factors) - ,mRecoveyRates(RecoveyRates) + ,mRecoveryRates(RecoveryRates) { }; diff --git a/src/capfloor.cpp b/src/capfloor.cpp index 2b981fe..89d2564 100644 --- a/src/capfloor.cpp +++ b/src/capfloor.cpp @@ -718,6 +718,7 @@ void CapFloorImpliedVolatilityWorker::Execute(){ // invoke the member function + std::map strEnum; mReturnValue = ObjectIDLibObjPtr->impliedVolatility( mPrice , @@ -732,6 +733,8 @@ void CapFloorImpliedVolatilityWorker::Execute(){ mMinVol , mMaxVol + , + strEnum[mVolatilityType] , mDisplacement ); @@ -777,7 +780,10 @@ NAN_METHOD(QuantLibNode::CapFloorImpliedVolatility) { if (info.Length() == 7 || !info[7]->IsNumber()) { return Nan::ThrowError("MaxVol is required."); } - if (info.Length() == 8 || !info[8]->IsNumber()) { + if (info.Length() == 8 || !info[8]->IsString()) { + return Nan::ThrowError("VolatilityType is required."); + } + if (info.Length() == 9 || !info[9]->IsNumber()) { return Nan::ThrowError("Displacement is required."); } // convert js argument to c++ type @@ -808,11 +814,15 @@ NAN_METHOD(QuantLibNode::CapFloorImpliedVolatility) { double MaxVolCpp = Nan::To(info[7]).FromJust(); // convert js argument to c++ type - double DisplacementCpp = Nan::To(info[8]).FromJust(); + String::Utf8Value strVolatilityType(info[8]->ToString()); + string VolatilityTypeCpp(strdup(*strVolatilityType)); + + // convert js argument to c++ type + double DisplacementCpp = Nan::To(info[9]).FromJust(); // declare callback - Nan::Callback *callback = new Nan::Callback(info[9].As()); + Nan::Callback *callback = new Nan::Callback(info[10].As()); // launch Async worker Nan::AsyncQueueWorker(new CapFloorImpliedVolatilityWorker( callback @@ -824,6 +834,7 @@ NAN_METHOD(QuantLibNode::CapFloorImpliedVolatility) { ,MaxIterCpp ,MinVolCpp ,MaxVolCpp + ,VolatilityTypeCpp ,DisplacementCpp )); diff --git a/src/capfloor.hpp b/src/capfloor.hpp index 48ddd02..333cba3 100644 --- a/src/capfloor.hpp +++ b/src/capfloor.hpp @@ -282,6 +282,7 @@ class CapFloorImpliedVolatilityWorker : public Nan::AsyncWorker { ObjectHandler::property_t mMaxIter; double mMinVol; double mMaxVol; + string mVolatilityType; double mDisplacement; double mReturnValue; @@ -298,6 +299,7 @@ class CapFloorImpliedVolatilityWorker : public Nan::AsyncWorker { ,ObjectHandler::property_t MaxIter ,double MinVol ,double MaxVol + ,string VolatilityType ,double Displacement ): Nan::AsyncWorker(callback) @@ -309,6 +311,7 @@ class CapFloorImpliedVolatilityWorker : public Nan::AsyncWorker { ,mMaxIter(MaxIter) ,mMinVol(MinVol) ,mMaxVol(MaxVol) + ,mVolatilityType(VolatilityType) ,mDisplacement(Displacement) { diff --git a/src/defaultbasket.cpp b/src/defaultbasket.cpp index e132105..9bba061 100644 --- a/src/defaultbasket.cpp +++ b/src/defaultbasket.cpp @@ -444,7 +444,7 @@ NAN_METHOD(QuantLibNode::CreditBasketLoss) { // //} -void CrediBasketAttachLiveWorker::Execute(){ +void CreditBasketAttachLiveWorker::Execute(){ try{ // convert object IDs into library objects @@ -467,7 +467,7 @@ void CrediBasketAttachLiveWorker::Execute(){ } -void CrediBasketAttachLiveWorker::HandleOKCallback(){ +void CreditBasketAttachLiveWorker::HandleOKCallback(){ Nan::HandleScope scope; @@ -479,7 +479,7 @@ void CrediBasketAttachLiveWorker::HandleOKCallback(){ callback->Call(2, argv); } -NAN_METHOD(QuantLibNode::CrediBasketAttachLive) { +NAN_METHOD(QuantLibNode::CreditBasketAttachLive) { // validate js arguments if (info.Length() == 0 || !info[0]->IsString()) { @@ -493,22 +493,22 @@ NAN_METHOD(QuantLibNode::CrediBasketAttachLive) { // declare callback Nan::Callback *callback = new Nan::Callback(info[1].As()); // launch Async worker - Nan::AsyncQueueWorker(new CrediBasketAttachLiveWorker( + Nan::AsyncQueueWorker(new CreditBasketAttachLiveWorker( callback ,ObjectIDCpp )); } -//CrediBasketAttachLiveWorker::~CrediBasketAttachLiveWorker(){ +//CreditBasketAttachLiveWorker::~CreditBasketAttachLiveWorker(){ // //} -//void CrediBasketAttachLiveWorker::Destroy(){ +//void CreditBasketAttachLiveWorker::Destroy(){ // //} -void CrediBasketDetachLiveWorker::Execute(){ +void CreditBasketDetachLiveWorker::Execute(){ try{ // convert object IDs into library objects @@ -531,7 +531,7 @@ void CrediBasketDetachLiveWorker::Execute(){ } -void CrediBasketDetachLiveWorker::HandleOKCallback(){ +void CreditBasketDetachLiveWorker::HandleOKCallback(){ Nan::HandleScope scope; @@ -543,7 +543,7 @@ void CrediBasketDetachLiveWorker::HandleOKCallback(){ callback->Call(2, argv); } -NAN_METHOD(QuantLibNode::CrediBasketDetachLive) { +NAN_METHOD(QuantLibNode::CreditBasketDetachLive) { // validate js arguments if (info.Length() == 0 || !info[0]->IsString()) { @@ -557,18 +557,18 @@ NAN_METHOD(QuantLibNode::CrediBasketDetachLive) { // declare callback Nan::Callback *callback = new Nan::Callback(info[1].As()); // launch Async worker - Nan::AsyncQueueWorker(new CrediBasketDetachLiveWorker( + Nan::AsyncQueueWorker(new CreditBasketDetachLiveWorker( callback ,ObjectIDCpp )); } -//CrediBasketDetachLiveWorker::~CrediBasketDetachLiveWorker(){ +//CreditBasketDetachLiveWorker::~CreditBasketDetachLiveWorker(){ // //} -//void CrediBasketDetachLiveWorker::Destroy(){ +//void CreditBasketDetachLiveWorker::Destroy(){ // //} diff --git a/src/defaultbasket.hpp b/src/defaultbasket.hpp index 0a1f4ec..f852ae7 100644 --- a/src/defaultbasket.hpp +++ b/src/defaultbasket.hpp @@ -180,7 +180,7 @@ class CreditBasketLossWorker : public Nan::AsyncWorker { }; -class CrediBasketAttachLiveWorker : public Nan::AsyncWorker { +class CreditBasketAttachLiveWorker : public Nan::AsyncWorker { public: string mObjectID; @@ -188,7 +188,7 @@ class CrediBasketAttachLiveWorker : public Nan::AsyncWorker { string mError; - CrediBasketAttachLiveWorker( + CreditBasketAttachLiveWorker( Nan::Callback *callback ,string ObjectID ): @@ -198,7 +198,7 @@ class CrediBasketAttachLiveWorker : public Nan::AsyncWorker { }; - //~CrediBasketAttachLiveWorker(); + //~CreditBasketAttachLiveWorker(); //void Destroy(); @@ -208,7 +208,7 @@ class CrediBasketAttachLiveWorker : public Nan::AsyncWorker { }; -class CrediBasketDetachLiveWorker : public Nan::AsyncWorker { +class CreditBasketDetachLiveWorker : public Nan::AsyncWorker { public: string mObjectID; @@ -216,7 +216,7 @@ class CrediBasketDetachLiveWorker : public Nan::AsyncWorker { string mError; - CrediBasketDetachLiveWorker( + CreditBasketDetachLiveWorker( Nan::Callback *callback ,string ObjectID ): @@ -226,7 +226,7 @@ class CrediBasketDetachLiveWorker : public Nan::AsyncWorker { }; - //~CrediBasketDetachLiveWorker(); + //~CreditBasketDetachLiveWorker(); //void Destroy(); diff --git a/src/piecewiseyieldcurve.cpp b/src/piecewiseyieldcurve.cpp index 365dcfc..b8450e9 100644 --- a/src/piecewiseyieldcurve.cpp +++ b/src/piecewiseyieldcurve.cpp @@ -285,7 +285,6 @@ void PiecewiseYieldCurveMixedInterpolationWorker::Execute(){ )); // Construct the Object - std::map strEnum; boost::shared_ptr object( new QuantLibAddin::PiecewiseYieldCurve(