@@ -209,19 +209,19 @@ \subsubsection{Product Type: EuropeanSwaption}
209209 </ModelParameters>
210210 <Engine>MC</Engine>
211211 <EngineParameters>
212- <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
213- <Parameter name="Training.Seed">42</Parameter>
214- <Parameter name="Training.Samples">10000</Parameter>
215- <Parameter name="Training.BasisFunction">Monomial</Parameter>
216- <Parameter name="Training.BasisFunctionOrder">6</Parameter>
217- <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
218- <Parameter name="Pricing.Seed">17</Parameter>
219- <Parameter name="Pricing.Samples">0</Parameter>
220- <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
221- <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
222- <Parameter name="MinObsDate">true</Parameter>
223- <Parameter name="RegressorModel">Simple</Parameter>
224- <Parameter name="SensitivityTemplate">IR_MC</Parameter>
212+ <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
213+ <Parameter name="Training.Seed">42</Parameter>
214+ <Parameter name="Training.Samples">10000</Parameter>
215+ <Parameter name="Training.BasisFunction">Monomial</Parameter>
216+ <Parameter name="Training.BasisFunctionOrder">6</Parameter>
217+ <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
218+ <Parameter name="Pricing.Seed">17</Parameter>
219+ <Parameter name="Pricing.Samples">0</Parameter>
220+ <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
221+ <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
222+ <Parameter name="MinObsDate">true</Parameter>
223+ <Parameter name="RegressorModel">Simple</Parameter>
224+ <Parameter name="SensitivityTemplate">IR_MC</Parameter>
225225 </EngineParameters>
226226</Product>
227227\end{minted}
@@ -337,12 +337,11 @@ \subsubsection{Product Type: BermudanSwaption}
337337 <Parameter name="Tolerance">0.20</Parameter>
338338 </ModelParameters>
339339 <Engine>FD</Engine>
340- <EngineParameters>
341- <Parameter name="Scheme">Douglas</Parameter>
342- <Parameter name="StateGridPoints">64</Parameter>
343- <Parameter name="TimeStepsPerYear">24</Parameter>
344- <Parameter name="MesherEpsilon">1E-4</Parameter>
345- </EngineParameters>
340+ <EngineParameters>
341+ <Parameter name="Scheme">Douglas</Parameter>
342+ <Parameter name="StateGridPoints">64</Parameter>
343+ <Parameter name="TimeStepsPerYear">24</Parameter>
344+ <Parameter name="MesherEpsilon">1E-4</Parameter>
346345 </EngineParameters>
347346</Product>
348347\end{minted}
@@ -411,19 +410,19 @@ \subsubsection{Product Type: BermudanSwaption}
411410 </ModelParameters>
412411 <Engine>MC</Engine>
413412 <EngineParameters>
414- <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
415- <Parameter name="Training.Seed">42</Parameter>
416- <Parameter name="Training.Samples">10000</Parameter>
417- <Parameter name="Training.BasisFunction">Monomial</Parameter>
418- <Parameter name="Training.BasisFunctionOrder">6</Parameter>
419- <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
420- <Parameter name="Pricing.Seed">17</Parameter>
421- <Parameter name="Pricing.Samples">0</Parameter>
422- <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
423- <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
424- <Parameter name="MinObsDate">true</Parameter>
425- <Parameter name="RegressorModel">Simple</Parameter>
426- <Parameter name="SensitivityTemplate">IR_MC</Parameter>
413+ <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
414+ <Parameter name="Training.Seed">42</Parameter>
415+ <Parameter name="Training.Samples">10000</Parameter>
416+ <Parameter name="Training.BasisFunction">Monomial</Parameter>
417+ <Parameter name="Training.BasisFunctionOrder">6</Parameter>
418+ <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
419+ <Parameter name="Pricing.Seed">17</Parameter>
420+ <Parameter name="Pricing.Samples">0</Parameter>
421+ <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
422+ <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
423+ <Parameter name="MinObsDate">true</Parameter>
424+ <Parameter name="RegressorModel">Simple</Parameter>
425+ <Parameter name="SensitivityTemplate">IR_MC</Parameter>
427426 </EngineParameters>
428427</Product>
429428\end{minted}
@@ -489,12 +488,11 @@ \subsubsection{Product Type: AmericanSwaption}
489488 <Parameter name="Tolerance">0.20</Parameter>
490489 </ModelParameters>
491490 <Engine>FD</Engine>
492- <EngineParameters>
493- <Parameter name="Scheme">Douglas</Parameter>
494- <Parameter name="StateGridPoints">64</Parameter>
495- <Parameter name="TimeStepsPerYear">24</Parameter>
496- <Parameter name="MesherEpsilon">1E-4</Parameter>
497- </EngineParameters>
491+ <EngineParameters>
492+ <Parameter name="Scheme">Douglas</Parameter>
493+ <Parameter name="StateGridPoints">64</Parameter>
494+ <Parameter name="TimeStepsPerYear">24</Parameter>
495+ <Parameter name="MesherEpsilon">1E-4</Parameter>
498496 </EngineParameters>
499497</Product>
500498\end{minted}
@@ -613,19 +611,19 @@ \subsubsection{Product Type: AmericanSwaption}
613611 </ModelParameters>
614612 <Engine>MC</Engine>
615613 <EngineParameters>
616- <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
617- <Parameter name="Training.Seed">42</Parameter>
618- <Parameter name="Training.Samples">10000</Parameter>
619- <Parameter name="Training.BasisFunction">Monomial</Parameter>
620- <Parameter name="Training.BasisFunctionOrder">6</Parameter>
621- <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
622- <Parameter name="Pricing.Seed">17</Parameter>
623- <Parameter name="Pricing.Samples">0</Parameter>
624- <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
625- <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
626- <Parameter name="MinObsDate">true</Parameter>
627- <Parameter name="RegressorModel">Simple</Parameter>
628- <Parameter name="SensitivityTemplate">IR_MC</Parameter>
614+ <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
615+ <Parameter name="Training.Seed">42</Parameter>
616+ <Parameter name="Training.Samples">10000</Parameter>
617+ <Parameter name="Training.BasisFunction">Monomial</Parameter>
618+ <Parameter name="Training.BasisFunctionOrder">6</Parameter>
619+ <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
620+ <Parameter name="Pricing.Seed">17</Parameter>
621+ <Parameter name="Pricing.Samples">0</Parameter>
622+ <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
623+ <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
624+ <Parameter name="MinObsDate">true</Parameter>
625+ <Parameter name="RegressorModel">Simple</Parameter>
626+ <Parameter name="SensitivityTemplate">IR_MC</Parameter>
629627 </EngineParameters>
630628</Product>
631629\end{minted}
@@ -663,16 +661,16 @@ \subsubsection{Product Type: BondRepo}
663661
664662\begin{longlisting}
665663\begin{minted}[fontsize=\footnotesize]{xml}
666- <Product type="BondRepo">
667- <Model>DiscountedCashflows</Model>
668- <ModelParameters>
669- <Parameter name="IncludeSecurityLeg">true</Parameter>
670- </ModelParameters>
671- <Engine>DiscountingRepoEngine</Engine>
672- <EngineParameters>
673- <Parameter name="SensitivityTemplate">IR_Analytical</Parameter>
674- </EngineParameters>
675- </Product>
664+ <Product type="BondRepo">
665+ <Model>DiscountedCashflows</Model>
666+ <ModelParameters>
667+ <Parameter name="IncludeSecurityLeg">true</Parameter>
668+ </ModelParameters>
669+ <Engine>DiscountingRepoEngine</Engine>
670+ <EngineParameters>
671+ <Parameter name="SensitivityTemplate">IR_Analytical</Parameter>
672+ </EngineParameters>
673+ </Product>
676674\end{minted}
677675\caption{Configuration for Product BondRepo, Model DiscountedCashflows, Engine DiscountingRepoEngine}
678676\label{lst:peconfig_BondRepo_DiscountedCashflows_DiscountingRepoEngine}
@@ -690,16 +688,16 @@ \subsubsection{Product Type: BondRepo}
690688
691689\begin{longlisting}
692690\begin{minted}[fontsize=\footnotesize]{xml}
693- < Product type="BondRepo">
694- <Model>Accrual</Model>
695- <ModelParameters>
696- <Parameter name="IncludeSecurityLeg">true</Parameter>
697- </ModelParameters>
698- <Engine>AccrualRepoEngine</Engine>
699- <EngineParameters>
700- <Parameter name="SensitivityTemplate">IR_Analytical</Parameter>
701- </EngineParameters>
702- </Product>
691+ Product type="BondRepo">
692+ <Model>Accrual</Model>
693+ <ModelParameters>
694+ <Parameter name="IncludeSecurityLeg">true</Parameter>
695+ </ModelParameters>
696+ <Engine>AccrualRepoEngine</Engine>
697+ <EngineParameters>
698+ <Parameter name="SensitivityTemplate">IR_Analytical</Parameter>
699+ </EngineParameters>
700+ </Product>
703701\end{minted}
704702\caption{Configuration for Product BondRepo, Model Accrual, Engine DiscountingBondRepoEngine}
705703\label{lst:peconfig_BondRepo_Accrual_AccrualBondRepoEngine}
@@ -2299,6 +2297,102 @@ \subsubsection{Product Type: EquityOptionAmerican}
22992297\label{lst:peconfig_EquityOptionAmerican_BlackScholesMerton_BaroneAdesiWhaleyApproximationEngine}
23002298\end{longlisting}
23012299
2300+ %--------------------------------------------------------
2301+ \subsubsection{Product Type: EquityVarianceSwap, CommodityVarianceSwap, FxVarianceSwap}
2302+ %--------------------------------------------------------
2303+
2304+ Used by trade type: EquityVarianceSwap, CommodityVarianceSwap, FxVarianceSwap
2305+
2306+ Available Model/Engine pairs: BlackScholesMerton/EquityVarianceSwap (resp. Commodity, Fx)
2307+
2308+ Engine description:
2309+
2310+ BlackScholesMerton/EquityVarianceSwap (resp. Commodity, Fx) builds a GeneralisedReplicatingVarianceSwapEngine or
2311+ VolatilityFromVarianceSwapEngine depending on MomentType Variance, Volatility. A sample configuration is shown in
2312+ listing \ref{lst:peconfig_EquityVarianceSwap_BlackScholesMerton_ReplicatingVarianceSwapEngine_1} and
2313+ \ref{lst:peconfig_EquityVarianceSwap_BlackScholesMerton_ReplicatingVarianceSwapEngine_2}. The example is for Equity, but
2314+ holds equally for product types CommodityVarianceSwap, FxVarianceSwap.
2315+
2316+ The parameters have the following meaning:
2317+
2318+ \begin{itemize}
2319+ \item Scheme [Optional, default GaussLobatto]: GaussLobatto or Segment, this determines the integration scheme used
2320+ \item Bounds [Optional, default PriceThreshold]: ``Fixed'': The integration bounds are found by
2321+
2322+ $$
2323+ \text{Lower} = F e ^ {m \sigma \sqrt{T}}, \text{Upper} = F e ^ {M \sigma \sqrt{T}}
2324+ $$
2325+
2326+ where $m$ is the FixedMinStdDevs and $M$ is the FixedMaxStdDevs parameter listed below and $\sigma$ is the ATMF
2327+ volatility of the underlying at maturity $T$.
2328+
2329+ ``PriceThreshold'': The integration bounds are found by looking for the largest (smallest) strikes Lower, Upper such
2330+ that the integrand in the replication formula above is below the PriceThreshold parameter listed below. The search
2331+ starts at the forward level $F$ for Lower, Upper and then Lower, Upper are updated by factors $1-p$ resp. $1+p$ where
2332+ $p$ is the PriceThresholdStep parameter below, until either the price threshold criterium is met or the number of
2333+ updates exceeds the MaxPriceThresholdSteps parameter.
2334+
2335+ \item Accuracy [Optional, default $10^{-5}$]: Numerical accuracy tolerance for the numerical integration. This only
2336+ applies to the GaussLobatto scheme.
2337+ \item MaxIterations [Optional, default $1000$]: The maximum number of iterations performed in the numerical
2338+ integration. This only applies to the GaussLobatto scheme.
2339+ \item Steps [Optional, default $100$]: The number of steps in the Segment numerical integration scheme (only applies for
2340+ this scheme).
2341+ \item PriceThreshold [Optional, default $10^{-10}$]: Used to determine the integration bounds if Bounds = PriceThredshold, see above.
2342+ \item MaxPriceThresholdSteps [Optional, default $100$]: Used to determine the integration bounds if Bounds = PriceThredshold, see above.
2343+ \item PriceThresholdStep [Option, default $0.1$]: Used to determine the integration bounds if Bounds = PriceThredshold, see above.
2344+ \item FixedMinStdDevs [Optional, default $-5$]: Used to determine the integration bounds if Bounds = Fixed, see above.
2345+ \item FixedMaxStdDevs [Optional, default $5$]: Used to determine the integration bounds, if Bounds = Fixed, see above.
2346+ \item StaticTodaysSpot [Optional, default false]: If true the contribution to the variance from the last day before the
2347+ valuation date to the valuation date is ignored in scenario / sensitivity calculations. See below for more details.
2348+ \item SensitivityTemplate [optional]: the sensitivity template to use
2349+ \end{itemize}
2350+
2351+ \begin{listing}[ht]
2352+ \begin{minted}[fontsize=\footnotesize]{xml}
2353+ <Product type="EquityVarianceSwap">
2354+ <Model>BlackScholesMerton</Model>
2355+ <ModelParameters>
2356+ <Parameter name="StaticTodaysSpot">false</Parameter>
2357+ </ModelParameters>
2358+ <Engine>ReplicatingVarianceSwapEngine</Engine>
2359+ <EngineParameters>
2360+ <Parameter name="Scheme">Segment</Parameter>
2361+ <Parameter name="Bounds">PriceThreshold</Parameter>
2362+ <Parameter name="Steps">1000</Parameter>
2363+ <Parameter name="PriceThreshold">1E-10</Parameter>
2364+ <Parameter name="MaxPriceThresholdSteps">500</Parameter>
2365+ <Parameter name="PriceThresholdStep">0.1</Parameter>
2366+ </EngineParameters>
2367+ </Product>
2368+ \end{minted}
2369+ \caption{Configuration for Product EquityVarianceSwap, Model BlackScholesMerton, Engine ReplicatingVarianceSwapEngine,
2370+ ``Robust'' configuration using PriceThreshold if market smiles are of lower quality.}
2371+ \label{lst:peconfig_EquityVarianceSwap_BlackScholesMerton_ReplicatingVarianceSwapEngine_1}
2372+ \end{listing}
2373+
2374+ \begin{listing}[ht]
2375+ \begin{minted}[fontsize=\footnotesize]{xml}
2376+ <Product type="EquityVarianceSwap">
2377+ <Model>BlackScholesMerton</Model>
2378+ <ModelParameters>
2379+ <Parameter name="StaticTodaysSpot">false</Parameter>
2380+ </ModelParameters>
2381+ <Engine>ReplicatingVarianceSwapEngine</Engine>
2382+ <EngineParameters>
2383+ <Parameter name="Scheme">Segment</Parameter>
2384+ <Parameter name="Bounds">Fixed</Parameter>
2385+ <Parameter name="Steps">1000</Parameter>
2386+ <Parameter name="FixedMinStdDevs">-5.0</Parameter>
2387+ <Parameter name="FixedMaxStdDevs">5.0</Parameter>
2388+ </EngineParameters>
2389+ </Product>
2390+ \end{minted}
2391+ \caption{Configuration for Product EquityVarianceSwap, Model BlackScholesMerton, Engine ReplicatingVarianceSwapEngine,
2392+ Alternative ``Robust'' variance swap pricing engine configuration using fixed integration bounds.}
2393+ \label{lst:peconfig_EquityVarianceSwap_BlackScholesMerton_ReplicatingVarianceSwapEngine_2}
2394+ \end{listing}
2395+
23022396%--------------------------------------------------------
23032397\subsubsection{Product Type: FxAsianOptionArithmeticPrice}
23042398%--------------------------------------------------------
@@ -3057,6 +3151,40 @@ \subsubsection{Product Type: FxTouchOption}
30573151\label{lst:peconfig_FxTouchOption_GarmanKohlhagen_AnalyticDigitalAmericanEngine}
30583152\end{longlisting}
30593153
3154+ %--------------------------------------------------------
3155+ \subsubsection{Product Type: FxDoubleTouchOption}
3156+ %--------------------------------------------------------
3157+
3158+ Used by trade type: FxDoubleTouchOption
3159+
3160+ Available Model/Engine pairs: GarmanKohlhagen/AnalyticDoubleBarrierBinaryEngine
3161+
3162+ Engine description:
3163+
3164+ GarmanKohlhagen/AnalyticDoubleBarrierBinaryEngine builds a AnalyticDoubleBarrierBinaryEngine. A sample configuration is
3165+ shown in listing \ref{lst:peconfig_FxDoubleTouchOption_GarmanKohlhagen_AnalyticDoubleBarrierBinaryEngine}
3166+
3167+ The parameters have the following meaning:
3168+
3169+ \begin{itemize}
3170+ \item SensitivityTemplate [optional]: the sensitivity template to use
3171+ \end{itemize}
3172+
3173+ \begin{longlisting}
3174+ \begin{minted}[fontsize=\footnotesize]{xml}
3175+ <Product type="FxDoubleBarrierOption">
3176+ <Model>GarmanKohlhagen</Model>
3177+ <ModelParameters/>
3178+ <Engine>AnalyticDoubleBarrierEngine</Engine>
3179+ <EngineParameters>
3180+ <Parameter name="SensitivityTemplate">FX_Analytical</Parameter>
3181+ </EngineParameters>
3182+ </Product>
3183+ \end{minted}
3184+ \caption{Configuration for Product FxDoubleTouchOption, Model GarmanKohlhagen, Engine AnalyticDoubleBarrierBinaryEngine}
3185+ \label{lst:peconfig_FxDoubleTouchOption_GarmanKohlhagen_AnalyticDoubleBarrierBinaryEngine}
3186+ \end{longlisting}
3187+
30603188%--------------------------------------------------------
30613189\subsubsection{Product Type: MultiLegOption}
30623190%--------------------------------------------------------
@@ -3142,19 +3270,19 @@ \subsubsection{Product Type: MultiLegOption}
31423270 </ModelParameters>
31433271 <Engine>MC</Engine>
31443272 <EngineParameters>
3145- <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
3146- <Parameter name="Training.Seed">42</Parameter>
3147- <Parameter name="Training.Samples">10000</Parameter>
3148- <Parameter name="Training.BasisFunction">Monomial</Parameter>
3149- <Parameter name="Training.BasisFunctionOrder">6</Parameter>
3150- <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
3151- <Parameter name="Pricing.Seed">17</Parameter>
3152- <Parameter name="Pricing.Samples">0</Parameter>
3153- <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
3154- <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
3155- <Parameter name="MinObsDate">true</Parameter>
3156- <Parameter name="RegressorModel">Simple</Parameter>
3157- <Parameter name="SensitivityTemplate">IR_MC</Parameter>
3273+ <Parameter name="Training.Sequence">MersenneTwisterAntithetic</Parameter>
3274+ <Parameter name="Training.Seed">42</Parameter>
3275+ <Parameter name="Training.Samples">10000</Parameter>
3276+ <Parameter name="Training.BasisFunction">Monomial</Parameter>
3277+ <Parameter name="Training.BasisFunctionOrder">6</Parameter>
3278+ <Parameter name="Pricing.Sequence">SobolBrownianBridge</Parameter>
3279+ <Parameter name="Pricing.Seed">17</Parameter>
3280+ <Parameter name="Pricing.Samples">0</Parameter>
3281+ <Parameter name="BrownianBridgeOrdering">Steps</Parameter>
3282+ <Parameter name="SobolDirectionIntegers">JoeKuoD7</Parameter>
3283+ <Parameter name="MinObsDate">true</Parameter>
3284+ <Parameter name="RegressorModel">Simple</Parameter>
3285+ <Parameter name="SensitivityTemplate">IR_MC</Parameter>
31583286 </EngineParameters>
31593287</Product>
31603288\end{minted}
0 commit comments