Этот пример показывает, как использовать Numerix® CROSSASSET API, чтобы оценить денежный вклад от MATLAB®. Торговые параметры читаются из Cashdeposit1.csv
в папке Numerix Data Trades
.
Инициализируйте среду Numerix.
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]
Создайте рынок.
market = Market('EOD_16-APR-2012', DateExtensions.date('16-APR-2012'), []);
Считайте файл Cashdeposit1.csv
из папки Numerix Trades
.
[~,~,tradeInfo] = xlsread([n.TradesPath '\Cashdeposit1.csv'])
tradeInfo = 'Template' 'String' 'TRADE.IR.CASHDEPOSIT' 'Trade ID' 'ID' 'CASHDEP1001' 'Quote Type' 'String' 'MID' 'Effective Date' 'Date' '4/1/2012' 'Maturity' 'Date' '4/1/2013' 'Notional' 'Double' [ 100] 'Currency' 'Currency' 'USD' 'Coupon Rate' 'Double' [ 0.0500] 'Yield' 'Double' [ 0.0440] 'IR Index' 'String' 'Libor' 'IR Index Tenor' 'Tenor' '3m'
Задайте торговый экземпляр от импортированного инструмента CASHDEP1001
.
tradeDescriptor = tradeInfo{1,3}; tradeParameters = java.util.HashMap; numTradeInfoFields = size(tradeInfo,1); for i = 2:numTradeInfoFields switch tradeInfo{i,2} case {'DATE','Date'} tradeParameters.put(tradeInfo{i,1},DateExtensions.date(datestr(tradeInfo{i,3},'dd-mmm-yyyy'))); otherwise tradeParameters.put(tradeInfo{i,1},tradeInfo{i,3}); end end
Создайте торговый экземпляр.
trade = RepositoryExtensions.createTradeInstance(n.Repository, tradeDescriptor, tradeParameters);
Оцените торговлю.
results = CalculationContextExtensions.calculate(n.Context, trade, market, Request.getAll);
Проанализируйте результаты для MATLAB и отображения.
r = n.parseResults(results) disp([r.Name r.Category r.Currency r.Data])
r = Category: {9x1 cell} Currency: {9x1 cell} Name: {9x1 cell} Data: {9x1 cell} 'Modified Duration' 'Price' '' [ 0.9349] 'Accrued Interest' 'Price' 'USD' [ 0.2083] 'Reporting Currency' 'Price' '' 'USD' 'PV' 'Price' 'USD' [ 100.7607] 'Instrument' 'Price' '' [1x85 char] 'Clean Price' 'Price' 'USD' [ 100.5524] 'Convexity' 'Price' '' [ 1.7481] 'YTM' 'Price' '' [] 'Messages' '' '' []
numerix
| numerixCrossAsset
| parseResults