波動率

Quantlib 錯誤初始化 CapFloor C++ 類

  • February 16, 2021

我想使用 QuantLib 作為 C++ 庫來為利率衍生品定價,特別是 Cap&Floors。稍微簡化一下,假設我有一個不同期限的 EURLibor1Y 利率向量,我稱之為r,以及一個恆定的 caplet 波動率,我稱之為vol。每當我嘗試使用以下程式碼設置 Cap/Floor 對象時

   Volatility vol = 0.180253;
   boost::shared_ptr<OptionletVolatilityStructure> vol_ptr = boost::make_shared<ConstantOptionletVolatility>(settlement,cal,ModifiedFollowing,vol,Actual360());
   RelinkableHandle<OptionletVolatilityStructure> vol_handle(vol_ptr);
   boost::shared_ptr<YieldTermStructure> curve = boost::make_shared<InterpolatedForwardCurve<LogLinear>>(dates,r,Actual360());
   RelinkableHandle<YieldTermStructure> ts_handle(curve);
   boost::shared_ptr<IborIndex> index = boost::make_shared<EURLibor1Y>(ts_handle);
   IborLeg floatingLeg(schd,index);
   Cap cap(floatingLeg,r);

我收到一個執行時錯誤,說“在拋出 ‘QuantLib::Error’ what() 的實例後呼叫終止:沒有給出名義”,知道如何解決這個問題嗎?

編輯:在初始化 Cap 時,我使用向量r,因為我希望它是 ATM。

沒關係,剛發現問題。IborLeg 類有一個名為“withNotionals(Real)”的方法,用於設置名義值。

引用自:https://quant.stackexchange.com/questions/61195