Overview
Summary
A Surfaces content objects allow you to retrieve Volatility Surface data within a specific session.
Example of usage
import { IPA } from '@refinitiv-data/data';
const session = /* session creation is omitted */;
(async () => {
try {
await session.open();
const definitionCap = IPA.Surfaces.Cap.Definition({
instrumentCode: 'USD',
surfaceTag: 'USD_Strike__Tenor_',
surfaceLayout: {
format: IPA.Surfaces.Cap.LayoutFormat.Matrix,
},
surfaceParameters: {
valuationDate: '2020-03-20',
xAxis: IPA.Surfaces.Cap.AxisUnit.Strike,
yAxis: IPA.Surfaces.Cap.AxisUnit.Tenor,
},
// this individual 'outputs' will be ignored if multiple objects are requested
outputs: [IPA.Surfaces.Cap.Output.Data, IPA.Surfaces.Cap.Output.Description],
});
const definitionEti = IPA.Surfaces.Eti.Definition({
instrumentCode: 'BNPP.PA@RIC',
surfaceTag: '1',
surfaceLayout: {
format: IPA.Surfaces.Eti.LayoutFormat.Matrix,
yPointCount: 10,
},
surfaceParameters: {
priceSide: IPA.Surfaces.Eti.PriceSide.Mid,
volatilityModel: IPA.Surfaces.Eti.VolatilityModel.SVI,
xAxis: IPA.Surfaces.Eti.AxisUnit.Date,
yAxis: IPA.Surfaces.Eti.AxisUnit.Strike,
},
});
const definitionFx = IPA.Surfaces.Fx.Definition({
fxCrossCode: 'EURUSD',
surfaceTag: 'FxVol-EURUSD',
surfaceLayout: {
format: IPA.Surfaces.Fx.LayoutFormat.Matrix,
},
surfaceParameters: {
xAxis: IPA.Surfaces.Fx.AxisUnit.Date,
yAxis: IPA.Surfaces.Fx.AxisUnit.Strike,
calculationDate: '2018-08-20T00:00:00Z',
returnAtm: true,
},
});
const definitionSw = IPA.Surfaces.Swaption.Definition({
instrumentCode: 'EUR',
surfaceTag: 'My EUR VolCube',
surfaceLayout: {
format: IPA.Surfaces.Swaption.LayoutFormat.NDimensionalArray,
},
surfaceParameters: {
xAxis: IPA.Surfaces.Swaption.AxisUnit.Strike,
yAxis: IPA.Surfaces.Swaption.AxisUnit.Tenor,
zAxis: IPA.Surfaces.Swaption.AxisUnit.Expiry,
calculationDate: '2020-04-20',
shiftPercent: 3,
includeCapletsVolatility: true,
},
});
// Multiple objects
const multiVS = IPA.Surfaces.Definition({
definitions: [definitionCap, definitionEti, definitionFx, definitionSw],
});
const multiSurfaceResponse = await multiVS.getData(session);
console.log('Surfaces multiple data: ', multiSurfaceResponse.data.raw);
// Multiple objects with outputs
const multiVSWithOutputs = IPA.Surfaces.Definition({
definitions: [definitionCap, definitionEti, definitionFx, definitionSw],
// this outputs will be applied for all the objects
outputs: [IPA.Surfaces.Output.Headers, IPA.Surfaces.Output.Constituents],
});
const multiVSResponseWithOutputs = await multiVSWithOutputs.getData(session);
console.log("Surfaces multiple with 'outputs' data: ", multiVSResponseWithOutputs.data.raw);
} catch (err) {
console.log(err);
} finally {
session.close();
}
})();