Working with Simple Numerix Trades
This example shows how to price a callable reverse floater using Numerix® CROSSASSET.
Initialize Numerix environment.
import com.numerix.integration.*; import com.numerix.integration.implementation.*; n = numerix('i:\NumeriX_java_10_3_0\data')
n =
Path: 'i:\NumeriX_java_10_3_0\data'
RepositoryPath: 'i:\NumeriX_java_10_3_0\data\Repository'
Repository: [1x1 com.numerix.integration.implementation.FileSystemRepository]
Context: [1x1 com.numerix.integration.implementation.LocalCalculationContext]
LookupsPath: 'i:\NumeriX_java_10_3_0\data\Data\LookupRules'
MarketsPath: 'i:\NumeriX_java_10_3_0\data\Data\Markets'
FixingsPath: 'i:\NumeriX_java_10_3_0\data\Data\Fixings'
TradesPath: 'i:\NumeriX_java_10_3_0\data\Data\Trades'
Parameters: [1x1 com.numerix.integration.implementation.CalculationParameters]Create a market.
quotes = java.util.HashMap; quotes.put('IR.USD-LIBOR-3M.SWAP-1Y.MID', 0.0066056); quotes.put('IR.USD-LIBOR-3M.SWAP-10Y.MID', 0.022465005); quotes.put('IR.USD-LIBOR-3M.SWAP-20Y.MID', 0.027544995); market = Market('EOD_14-NOV-2011', DateExtensions.date('14-Nov-2011'), quotes.entrySet);
Define a trade instance for a callable reverse floater based on instrument
template located in the Repository.
tradeDescriptor = 'TRADE.IR.CALLABLEREVERSEFLOATER'; tradeParameters = java.util.HashMap; tradeParameters.put('Trade ID','1001'); tradeParameters.put('Quote Type', 'MID'); tradeParameters.put('Currency', 'USD'); tradeParameters.put('Notional', 1000000.0); tradeParameters.put('Effective Date', DateExtensions.date('1-Dec-2011')); tradeParameters.put('Termination Date', DateExtensions.date('1-Dec-2021')); tradeParameters.put('IR Index', 'LIBOR'); tradeParameters.put('IR Index Tenor', '3M'); tradeParameters.put('Structured Freq', '3M'); tradeParameters.put('Structured Side', 'Receive'); tradeParameters.put('Structured Coupon Floor', 0.0); tradeParameters.put('Structured Coupon UpBd', 0.08); tradeParameters.put('StructuredCoupon Multiplier', 1.4); tradeParameters.put('Structured Coupon Cap', 0.05); tradeParameters.put('Structured Basis', 'ACT/360'); tradeParameters.put('Funding Freq', '3M'); tradeParameters.put('Funding Side', 'Pay'); tradeParameters.put('Funding Spread', 0.003); tradeParameters.put('Funding Basis', 'ACT/360'); tradeParameters.put('Call Start Date', DateExtensions.date('1-Dec-2013')); tradeParameters.put('Call End Date', DateExtensions.date('1-Dec-2020')); tradeParameters.put('Option Side', 'Short'); tradeParameters.put('Option Type', 'Right to Terminate'); tradeParameters.put('Call Frequency', '3M'); tradeParameters.put('Model', 'IR.USD-LIBOR-3M.MID.DET'); tradeParameters.put('Method', 'BackwardAnalytic');
Create the trade instance.
trade = RepositoryExtensions.createTradeInstance(n.Repository, tradeDescriptor, tradeParameters)
Price the trade.
results = CalculationContextExtensions.calculate(n.Context, trade, market, Request.getAll);
Parse the results for MATLAB® and display.
r = n.parseResults(results) disp([r.Name r.Category r.Currency r.Data])
r =
Category: {13x1 cell}
Currency: {13x1 cell}
Name: {13x1 cell}
Data: {13x1 cell}
'Reporting Currency' 'Price' '' 'USD'
'Structured Cashflow Log' 'Cashflow' '' {41x20 cell}
'Structured Leg PV Accrued' 'Price' 'USD' [ 0]
'PV' 'Price' 'USD' [ 6.4133e+04]
'Structured Leg PV Clean' 'Price' 'USD' [ 4.2637e+05]
'Option PV' 'Price' 'USD' [-1.3220e+05]
'Funding Cashflow Log' 'Cashflow' '' {41x20 cell}
'Structured Leg PV' 'Price' 'USD' [ 4.2637e+05]
'Funding Leg PV' 'Price' 'USD' [-2.3004e+05]
'Funding Leg PV Accrued' 'Price' 'USD' [ 0]
'Funding Leg PV Clean' 'Price' 'USD' [-2.3004e+05]
'Yield Risk Report' '' '' { 4x30 cell}
'Messages' '' '' { 4x1 cell}See Also
numerix | parseResults | numerixCrossAsset
Topics
- Working with Advanced Numerix Trades
- Use Numerix to Price Cash Deposits
- Use Numerix for Interest-Rate Risk Assessment