Skip to content

Commit 022410b

Browse files
pcaspersjenkins
authored andcommitted
QPR-12337 wip
1 parent 1137580 commit 022410b

1 file changed

Lines changed: 212 additions & 84 deletions

File tree

Docs/UserGuide/parameterisation/pricingengines.tex

Lines changed: 212 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)