Skip to content

Commit fd2578f

Browse files
author
sebastien.bouvard
committed
QPR-12830 Fix MC
2 parents 3e26c0b + 2443759 commit fd2578f

145 files changed

Lines changed: 10662 additions & 1892 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Docker/Dockerfile-Test

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,27 @@ FROM ${DOCKER_REPO}debian:${DEBIAN_TAG}
44

55
RUN apt-get update \
66
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
7-
ca-certificates dos2unix python3 python3-pip python3-venv python3-dev libxml2-utils xsltproc \
7+
ca-certificates dos2unix gnupg python3 python3-pip python3-venv python3-dev libxml2-utils xsltproc curl git \
88
-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \
99
&& update-ca-certificates \
1010
&& apt-get clean \
1111
&& rm -rf /var/lib/apt/lists/*
1212

13+
RUN sh -c 'curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg' \
14+
&& sh -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null' \
15+
&& apt-get update \
16+
&& apt-get install -f -y docker-ce-cli \
17+
-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \
18+
&& apt-get clean \
19+
&& rm -rf /var/lib/apt/lists/*
1320

1421
# Create and activate virtual environment
1522
RUN python3 -m venv /venv
1623
ENV PATH="/venv/bin:$PATH"
1724

1825
# Install Python packages inside the virtual environment
1926
RUN pip3 install --break-system-packages \
20-
matplotlib pandas pytest pytest-xdist pytest-timeout datacompy jsondiff lxml xmldiff jupyter xmldiff numpy scipy ipywidgets papermill \
27+
matplotlib pandas pytest pytest-xdist pytest-timeout pytest-rerunfailures datacompy jsondiff lxml jupyter xmldiff numpy scipy ipywidgets papermill python-dotenv requests xmlschema clang-format openpyxl \
2128
&& rm -rf ~/.cache/pip
2229

2330
CMD bash

Docs/UserGuide/tradedata/scriptedtrades.tex

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,6 +1103,110 @@ \subsubsection{Floating Strike Forward Starting Option}
11031103
Allowable values: See Table \ref{tab:currency} for allowable currency codes.
11041104
\end{itemize}
11051105
1106+
\subsubsection{ACR Option}
1107+
1108+
% we only have a scripted trade representation for this at the moment
1109+
1110+
An ACR Option is represented as {\em acr option}, refer to Section
1111+
\ref{app:scriptedtrade} for an introduction.
1112+
1113+
\begin{minted}[fontsize=\footnotesize]{xml}
1114+
<Trade id="ArcOption">
1115+
<TradeType>ScriptedTrade</TradeType>
1116+
<Envelope>
1117+
<CounterParty>CPTY_A</CounterParty>
1118+
<NettingSetId>CPTY_A</NettingSetId>
1119+
<AdditionalFields/>
1120+
</Envelope>
1121+
<ArcOptionData>
1122+
<LongShort type="longShort">Short</LongShort>
1123+
<SettlementDate type="event">2020-07-20</SettlementDate>
1124+
<Notional type="number">100000000</Notional>
1125+
<StrikeFactor type="number">0.9950</StrikeFactor>
1126+
<BarrierFactor type="number">0.9840</StrikeFactor>
1127+
<CapRate type="number">0.02</CapRate>
1128+
<Offset type="number">0.0628</Offset>
1129+
<ValuationSchedule type="event">
1130+
<ScheduleData>
1131+
<Rules>
1132+
<StartDate>2020-01-15</StartDate>
1133+
<EndDate>2020-07-10</EndDate>
1134+
<Tenor>1M</Tenor>
1135+
<Calendar>US</Calendar>
1136+
<Convention>Following</Convention>
1137+
<TermConvention>Following</TermConvention>
1138+
<Rule>Forward</Rule>
1139+
</Rules>
1140+
</ScheduleData>
1141+
</ValuationSchedule>
1142+
<Underlying type="index">FX-ECB-JPY-USD</Underlying>
1143+
<PayCcy type="currency">JPY</PayCcy>
1144+
<Expiry type="event">2020-07-15</Expiry>
1145+
</ArcOptionData>
1146+
</Trade>
1147+
\end{minted}
1148+
1149+
The script referenced in the trade above is shown in Listing \ref{lst:arc_option}.
1150+
1151+
\begin{listing}[hbt]
1152+
\begin{minted}[fontsize=\footnotesize]{Basic}
1153+
NUMBER d, effectiveExchangeRate, netAccAmount, currPrice, pay;
1154+
NUMBER payoff, strike, sr1, sr2, sr3, itm, K, expectedN, settlementAmount;
1155+
1156+
netAccAmount = 0;
1157+
1158+
FOR d IN (2, SIZE(ValuationSchedule), 1) DO
1159+
sr2 = Underlying(ValuationSchedule[d]);
1160+
sr1 = Underlying(ValuationSchedule[d-1]);
1161+
K = sr1*StrikeFactor;
1162+
IF sr2 < sr1*BarrierFactor THEN
1163+
itm = Notional*((1/sr2)-(1/K));
1164+
ELSE
1165+
itm = 0;
1166+
END;
1167+
netAccAmount = netAccAmount + itm;
1168+
END;
1169+
1170+
expectedN = SIZE(ValuationSchedule) - 1;
1171+
sr3 = Underlying(ValuationSchedule[expectedN]);
1172+
1173+
effectiveExchangeRate = Notional / ((Notional/sr3)-netAccAmount);
1174+
1175+
IF effectiveExchangeRate >= CapRate THEN
1176+
settlementAmount = Notional/(CapRate + Offset);
1177+
ELSE
1178+
settlementAmount = Notional/(effectiveExchangeRate + Offset);
1179+
END;
1180+
1181+
pay = PAY(settlementAmount, Expiry, SettlementDate, PayCcy);
1182+
Option = pay;
1183+
\end{minted}
1184+
\caption{Payoff script for an Arc Option.}
1185+
\label{lst:arc_option}
1186+
\end{listing}
1187+
1188+
The meanings and allowable values in the \lstinline!ArcOptionData! node below.
1189+
1190+
\begin{itemize}
1191+
\item{}[index] \lstinline!Underlying!: Underlying index. \\
1192+
Allowable values: See Section \ref{data_index} for allowable values.
1193+
\item{}[longShort] \lstinline!LongShort!: Own party position in the option. \\
1194+
Allowable values: \emph{Long, Short}.
1195+
\item{}[number] \lstinline!StrikeFactor!: The strike factor used within ITM computation.
1196+
\item{}[number] \lstinline!BarrierFactor!: The barrier factor used within the condition for the ITM computation.
1197+
\item{}[number] \lstinline!Notional!: Notional amount. \\
1198+
Allowable values: Any non-negative number.
1199+
\item{}[number] \lstinline!CapRate!: Rate used to compute the settlement amount.
1200+
\item{}[number] \lstinline!Offset!: Offset used to compute the settlement amount.
1201+
\item{}[event] \lstinline!SettlementDate!: Settlement date. \\
1202+
Allowable values: See \lstinline!Date! in Table \ref{tab:allow_stand_data}.
1203+
\item{}[currency] \lstinline!SettlementCurrency!: The payment currency. For FX, where the underlying is provided
1204+
in the form \lstinline!FX-SOURCE-CCY1-CCY2! (see Table \ref{tab:fxindex_data}) this should
1205+
be \lstinline!CCY2!. If \lstinline!CCY1! or the currency of the underlying (for EQ and
1206+
COMM underlyings), this will result in a quanto payoff. Notice section \ref{sss:payccy_st}. \\
1207+
Allowable values: See Table \ref{tab:currency} for allowable currency codes.
1208+
\end{itemize}
1209+
11061210
\subsubsection{Forward Starting Swaption}
11071211
11081212
% we only have a scripted trade representation for this at the moment
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0"?>
2+
<ORE>
3+
<Setup>
4+
<Parameter name="asofDate">2016-02-05</Parameter>
5+
<Parameter name="inputPath">Input</Parameter>
6+
<Parameter name="outputPath">Output/swap_hw2f</Parameter>
7+
<Parameter name="logFile">log.txt</Parameter>
8+
<Parameter name="logMask">31</Parameter>
9+
<Parameter name="marketDataFile">../../Input/market_20160205.txt</Parameter>
10+
<Parameter name="fixingDataFile">../../Input/fixings_20160205.txt</Parameter>
11+
<Parameter name="implyTodaysFixings">Y</Parameter>
12+
<Parameter name="curveConfigFile">../../Input/curveconfig.xml</Parameter>
13+
<Parameter name="conventionsFile">../../Input/conventions.xml</Parameter>
14+
<Parameter name="marketConfigFile">../../Input/todaysmarket.xml</Parameter>
15+
<Parameter name="pricingEnginesFile">../../Input/pricingengine.xml</Parameter>
16+
<Parameter name="portfolioFile">portfolio_swap_swaptions.xml</Parameter>
17+
<Parameter name="observationModel">None</Parameter>
18+
<Parameter name="continueOnError">false</Parameter>
19+
<Parameter name="calendarAdjustment">../../Input/calendaradjustment.xml</Parameter>
20+
<Parameter name="currencyConfiguration">../../Input/currencies.xml</Parameter>
21+
</Setup>
22+
<Markets>
23+
<Parameter name="lgmcalibration">collateral_inccy</Parameter>
24+
<Parameter name="fxcalibration">xois_eur</Parameter>
25+
<Parameter name="pricing">xois_eur</Parameter>
26+
<Parameter name="simulation">xois_eur</Parameter>
27+
</Markets>
28+
<Analytics>
29+
<Analytic type="npv">
30+
<Parameter name="active">Y</Parameter>
31+
<Parameter name="baseCurrency">EUR</Parameter>
32+
<Parameter name="outputFileName">npv_swaptions.csv</Parameter>
33+
<Parameter name="additionalResults">Y</Parameter>
34+
<Parameter name="additionalResultsReportPrecision">12</Parameter>
35+
</Analytic>
36+
</Analytics>
37+
</ORE>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?xml version="1.0"?>
2+
<ORE>
3+
<Setup>
4+
<Parameter name="asofDate">2016-02-05</Parameter>
5+
<Parameter name="inputPath">Input</Parameter>
6+
<Parameter name="outputPath">Output/swap</Parameter>
7+
<Parameter name="logFile">log.txt</Parameter>
8+
<Parameter name="logMask">31</Parameter>
9+
<Parameter name="marketDataFile">../../Input/market_20160205.txt</Parameter>
10+
<Parameter name="fixingDataFile">../../Input/fixings_20160205.txt</Parameter>
11+
<Parameter name="implyTodaysFixings">Y</Parameter>
12+
<Parameter name="curveConfigFile">../../Input/curveconfig.xml</Parameter>
13+
<Parameter name="conventionsFile">../../Input/conventions.xml</Parameter>
14+
<Parameter name="marketConfigFile">../../Input/todaysmarket.xml</Parameter>
15+
<Parameter name="pricingEnginesFile">../../Input/pricingengine.xml</Parameter>
16+
<Parameter name="portfolioFile">portfolio_swap_swaptions.xml</Parameter>
17+
<Parameter name="observationModel">None</Parameter>
18+
<Parameter name="continueOnError">false</Parameter>
19+
<Parameter name="calendarAdjustment">../../Input/calendaradjustment.xml</Parameter>
20+
<Parameter name="currencyConfiguration">../../Input/currencies.xml</Parameter>
21+
</Setup>
22+
<Markets>
23+
<Parameter name="lgmcalibration">collateral_inccy</Parameter>
24+
<Parameter name="fxcalibration">xois_eur</Parameter>
25+
<Parameter name="pricing">xois_eur</Parameter>
26+
<Parameter name="simulation">xois_eur</Parameter>
27+
</Markets>
28+
<Analytics>
29+
<Analytic type="npv">
30+
<Parameter name="active">Y</Parameter>
31+
<Parameter name="baseCurrency">EUR</Parameter>
32+
<Parameter name="outputFileName">npv_swaptions.csv</Parameter>
33+
<Parameter name="additionalResults">Y</Parameter>
34+
<Parameter name="additionalResultsReportPrecision">12</Parameter>
35+
</Analytic>
36+
</Analytics>
37+
</ORE>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0"?>
2+
<ORE>
3+
<Setup>
4+
<Parameter name="asofDate">2016-02-05</Parameter>
5+
<Parameter name="inputPath">Input</Parameter>
6+
<Parameter name="outputPath">Output/swapflat</Parameter>
7+
<Parameter name="logFile">log.txt</Parameter>
8+
<Parameter name="logMask">31</Parameter>
9+
<Parameter name="marketDataFile">../../Input/market_20160205_flat.txt</Parameter>
10+
<Parameter name="fixingDataFile">../../Input/fixings_20160205.txt</Parameter>
11+
<Parameter name="implyTodaysFixings">Y</Parameter>
12+
<Parameter name="curveConfigFile">../../Input/curveconfig.xml</Parameter>
13+
<Parameter name="conventionsFile">../../Input/conventions.xml</Parameter>
14+
<Parameter name="marketConfigFile">../../Input/todaysmarket.xml</Parameter>
15+
<Parameter name="pricingEnginesFile">../../Input/pricingengine.xml</Parameter>
16+
<Parameter name="portfolioFile">portfolio_swapflat_swaptions.xml</Parameter>
17+
<Parameter name="observationModel">None</Parameter>
18+
<Parameter name="continueOnError">false</Parameter>
19+
<Parameter name="calendarAdjustment">../../Input/calendaradjustment.xml</Parameter>
20+
<Parameter name="currencyConfiguration">../../Input/currencies.xml</Parameter>
21+
</Setup>
22+
<Markets>
23+
<Parameter name="lgmcalibration">libor</Parameter>
24+
<Parameter name="fxcalibration">libor</Parameter>
25+
<Parameter name="eqcalibration">libor</Parameter>
26+
<Parameter name="pricing">libor</Parameter>
27+
<Parameter name="simulation">libor</Parameter>
28+
</Markets>
29+
<Analytics>
30+
<Analytic type="npv">
31+
<Parameter name="active">Y</Parameter>
32+
<Parameter name="baseCurrency">EUR</Parameter>
33+
<Parameter name="outputFileName">npv_swaptions.csv</Parameter>
34+
<Parameter name="additionalResults">Y</Parameter>
35+
<Parameter name="additionalResultsReportPrecision">12</Parameter>
36+
</Analytic>
37+
</Analytics>
38+
</ORE>

Examples/Exposure/Input/portfolio_swap.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
</LegData>
7272
</SwapData>
7373
</Trade>
74+
<!--
7475
<Trade id="Payer_Swaption_01_19">
7576
<TradeType>Swaption</TradeType>
7677
<Envelope>
@@ -3148,5 +3149,6 @@
31483149
</ScheduleData>
31493150
</LegData>
31503151
</SwaptionData>
3151-
</Trade>
3152+
</Trade>
3153+
-->
31523154
</Portfolio>

0 commit comments

Comments
 (0)