From 465f0e8fc3f17322c1d9a93eed879edc1d53ac9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Gerdin=20B=C3=B6rjesson?= Date: Thu, 21 Apr 2022 17:43:01 +0200 Subject: [PATCH 1/3] Add docstrings to SviSmileSection constructors --- ql/experimental/volatility/svismilesection.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ql/experimental/volatility/svismilesection.hpp b/ql/experimental/volatility/svismilesection.hpp index f8fe074eec4..ada303a6c0f 100644 --- a/ql/experimental/volatility/svismilesection.hpp +++ b/ql/experimental/volatility/svismilesection.hpp @@ -33,11 +33,23 @@ namespace QuantLib { class SviSmileSection : public SmileSection { public: + //! \name Constructors + //@{ + /*! @param timeToExpiry Time to expiry + @param forward Forward price corresponding to the expiry date + @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, s, m + */ SviSmileSection(Time timeToExpiry, Rate forward, std::vector sviParameters); + /*! @param d Date of expiry + @param forward Forward price corresponding to the expiry date + @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, s, m + @param dc Day count method used to compute the time to expiry + */ SviSmileSection(const Date& d, Rate forward, std::vector sviParameters, const DayCounter& dc = Actual365Fixed()); + //@} Real minStrike() const override { return 0.0; } Real maxStrike() const override { return QL_MAX_REAL; } Real atmLevel() const override { return forward_; } From a62e993cb2ec76e288fd09e0654615e6f59bb2df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Gerdin=20B=C3=B6rjesson?= Date: Thu, 21 Apr 2022 18:42:19 +0200 Subject: [PATCH 2/3] Remove incorrect argument from docstring and error QL_REQ requires 5 values but logging message says to pass 6. --- ql/experimental/volatility/svismilesection.cpp | 2 +- ql/experimental/volatility/svismilesection.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ql/experimental/volatility/svismilesection.cpp b/ql/experimental/volatility/svismilesection.cpp index cf43db69674..74664689dc8 100644 --- a/ql/experimental/volatility/svismilesection.cpp +++ b/ql/experimental/volatility/svismilesection.cpp @@ -38,7 +38,7 @@ namespace QuantLib { void SviSmileSection::init() { QL_REQUIRE(params_.size() == 5, - "svi expects 5 parameters (a,b,sigma,rho,s,m) but (" + "svi expects 5 parameters (a,b,sigma,rho,m) but (" << params_.size() << ") given"); detail::checkSviParameters(params_[0], params_[1], params_[2], params_[3], params_[4]); diff --git a/ql/experimental/volatility/svismilesection.hpp b/ql/experimental/volatility/svismilesection.hpp index ada303a6c0f..6635f2c140c 100644 --- a/ql/experimental/volatility/svismilesection.hpp +++ b/ql/experimental/volatility/svismilesection.hpp @@ -37,12 +37,12 @@ class SviSmileSection : public SmileSection { //@{ /*! @param timeToExpiry Time to expiry @param forward Forward price corresponding to the expiry date - @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, s, m + @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, m */ SviSmileSection(Time timeToExpiry, Rate forward, std::vector sviParameters); /*! @param d Date of expiry @param forward Forward price corresponding to the expiry date - @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, s, m + @param sviParameters Expects SVI parameters as a vector composed of a, b, sigma, rho, m @param dc Day count method used to compute the time to expiry */ SviSmileSection(const Date& d, From aa83c001e59a1881a265b96026d9f3948fe15676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Gerdin=20B=C3=B6rjesson?= Date: Thu, 21 Apr 2022 18:42:46 +0200 Subject: [PATCH 3/3] Update return type to match declaration --- ql/experimental/volatility/svismilesection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ql/experimental/volatility/svismilesection.cpp b/ql/experimental/volatility/svismilesection.cpp index 74664689dc8..cdb385aa8f0 100644 --- a/ql/experimental/volatility/svismilesection.cpp +++ b/ql/experimental/volatility/svismilesection.cpp @@ -44,7 +44,7 @@ void SviSmileSection::init() { params_[4]); } -Real SviSmileSection::volatilityImpl(Rate strike) const { +Volatility SviSmileSection::volatilityImpl(Rate strike) const { Real k = std::log(std::max(strike, 1E-6) / forward_); Real totalVariance = detail::sviTotalVariance(params_[0], params_[1], params_[2],