Newsletter ~ Summer 2006
Table of Contents
New Products, Versions
SciCalibrator – Custom calibration models
SciFinance for Credit module expansion
SciSTCDO – Single tranche pricer version 2.0
SciFinance Editor - SciFinance modeling interface
Events
WBS 3rd Fixed Income Conference - Amsterdam
Risk Magazine's Quant Congress Europe - London
Publications and Website
Expanded SciFinance Examples catalogs
Get a password to the SciComp Resource Center
New SciFinance Features
C++ code generation functionality
SciDateLib source code library for date functionality
New ASPEN Language/ Numerical Method Features
SciPDE:
New PDE code structure for accelerated pricing and risk sensitivity
Improved algorithms for American exercise
New UpwindDifference and VanLeer discretization methods
SciMC:
Computing a full Gamma with FullGammaMatrix
Extending Sobol beyond 360 dimensions
RegularizeCorrelationMatrix repairs unphysical correlation matrices
GreeksNoCache allows more complex sensitivity computations
Added flexibility for MCMultiPass code structures
New TerminalDistribution statement
New Products, Versions
SciFinance 4.0 released
SciFinance 4.0, the latest version of SciComp's automated Coding technology for quickly creating derivative pricing and risk models, has been released. SciFinance models can be created by simply modifying one of hundreds of model templates provided with the system or by writing a model specification comprised of arbitrary PDEs, PIDEs or SDEs, numerical algorithms and keywords. SciFinance does the rest by automating the programming task to produce fully documented C/C++ source code or Excel spreadsheets and add-ins. COM, .Net and Java wrappers can also be automatically generated.
With over 10 years of development and input from over 70 banks and partners, SciFinance 4.0 is a complete derivatives pricing and risk model development environment. Details of many new features are included in this newsletter.
Click
here for more information on SciFinance.
SciCalibrator -- Automated coding for custom calibration models
SciCalibrator is a new complimentary product to SciFinance that allows users to specify calibration problems at a high level and then generate the corresponding source code (C/C++) for use with a given model or as a standalone routine. SciCalibrator provides calibration routines for equity/FX/commodity models including CEV, stochastic volatility (with and without jumps), local volatility, Kou double exponential jump, VG and CGMY models; generic short rate models (including Gaussian and lognormal) with interest rate and/or hazard rate calibration to volatility term structure of cap/swaptions or CDS spreads; and LIBOR market model calibration (including exact fit to caps and least square fit of parameterized correlation matrix of swaptions).
Available techniques include simulated annealing and Levenberg-Marquart optimization, with either system- or user-provided calibration functions. SciCalibrator also includes utilities for reading and preprocessing market data.
Click here for more information on SciCalibrator.
SciFinance for Credit module expansion
The SciFinance credit module, SciFinance for Credit, includes deep support for collateralized debt obligations (CDOs), single tranches CDOs (STCDOs), exotics credit linked notes (CLNs), CDO-squareds, cash CDOs, collateralized loan obligations (CLOs), synthetic CDOs, credit default swaps, defaultable bonds and single-name instruments. Users can structure credit instruments in limitless ways using a wide variety of numerical methods, customize models of default and interest rate and apply calibrations.
Click here for more information on credit coverage.
SciSTCDO -- Single Tranche CDO pricer -- Version 2.0
SciSTCDO, a standalone pricing and risk engine for single-tranche collateralized debt obligations is now at version 2.0. The newly released enhancements include implementation of base correlations within the Large Pool Gaussian Copula Model (Large Pool Model), additional calibration functionality and sensitivity to changes in interest rates and correlation.
The Large Pool Model is a quick, user-friendly model for valuing CDO structures that requires a minimal amount of data. The newly released enhancements complement the existing analytic capabilities of SciSTCDO's high performance Monte Carlo method and a fast, specialized semi-analytic approach. The trio of pricing approaches provide users alternative valuation methodologies and cross-checking capabilities for both prices and risk measures. SciSTCDO features a standard Microsoft Excel interface for ease-of-use.
Click
here for more information on SciSTCDO.
SciFinance Editor -- SciFinance Modeling Interface
SciFinance Editor is a robust, user-friendly interface for
developing, editing and reviewing ASPEN specifications. The SciFinance
Editor includes keyword highlighting, macro expansion, interactive
features such as mouse-sensitive access to keyword help,
access to on-line documentation and SciFinance Examples Catalogs and
improved ASPEN specification organization.For more information on the
SciFinance Editor, Click to email
SciComp sales.
News and Events
SciComp to Exhibit at WBS 3rd Fixed Income Conference - Amsterdam
SciComp would like to invite you to the 3rd Fixed Income Conference to be held in Amsterdam 20-22 September 2006. As a gold sponsor of the conference, SciComp can offer you a 25% discount off the standard conference price! Email our sales team to receive the discount. Click to email SciComp sales.
The main conference on 21-22 September offers a three-streamed format with Credit Derivatives, Interest Rate Modelling and Hybrid Products streams. Workshops on Wednesday 20th September include Credit Derivatives Modelling, Credit Hybrids, Interest Rate Modelling & Interest Rate Hybrids.
Visit us at our booth, we would like to discuss with you how we can help to take your derivatives pricing to the next level.
Click here for more information on WBS and the 3rd Fixed Income Conference.
SciComp Sponsors Quant Congress Europe - London
Join us as we co-sponsor Risk Magazine's Quant Congress Europe, London 11-12 October 2006. As a sponsor of the conference, SciComp can offer you a 25% discount off the standard conference price.Click to email SciComp sales.
Quant Congress Europe 2006, is an exciting forum where senior executives and high level academics examine the latest cutting-edge issues across the quantitative analysis, trading, risk management and investment markets. Stop by our booth and we will be happy to answer any questions you might have about SciComp's product line.
Click here for more information on Quant Congress Europe 2006.
Publications and Website
Expanded SciFinance Examples catalogs
The SciFinance Examples Catalogs provide hundreds of pricing and risk model templates for all asset classes. The latest release includes many new model templates as well as an update of existing templates. A recent focus was placed on new credit (e.g. CLOs, exotic CLNs, STCDOs) and fixed income (e.g. callable range accrual notes, CMS and CMS spread options) instruments.
Get a password to the SciComp Resource Center
Data sheets, articles, examples and publications can be found in the SciComp Resource Center. If you don't already have a password for the Resource Center, request one using the link below.
Click here to request a password.
New SciFinance Features
C++ code generation functionality
SciFinance can now optionally synthesize C++ code to facilitate integration with existing systems and code. The C++ interface offers simple, finely tuned array classes which can be easily and efficiently populated with user code. The array classes avoid any unnecessary copying of data, so that a simple interface is provided to C++ programmers without sacrificing performance. The use of C++ exceptions to signal errors, in place of return codes, also makes the code more natural and intuitive to C++ programmers. See the SciFinance release notes for details.
SciDateLib source code library for date functionality
In previous versions of SciFinance, daycount/calendar/rollover date computations were available via the SciXL interface only. It was expected that for the sake of consistency, models integrated into larger risk systems would use the date functionality of the host system, processing date streams into year fractions before sending the data to SciFinance models. In response to user requests for a standalone SciFinance source code library for date functionality, three new ASPEN statements have been introduced.
SciDateInterval[allDates,DeltaT,ipd,{RollConvention,Adjust,DayCount}];
produces an array of coupon date intervals (accrual periods). Intervals are expressed as year fractions from the array of coupon dates, according to the specified date roll convention, adjustment, and day count conventions (see SciFinance documentation for details). The index ipd associated with the DeltaT array can be used in a DiscreteEvents date array so that DeltaT may be used without explicit indexing within the discrete event.
If the elements of the input date array allDates are valid dates (expressed as whole numbers according to the Excel serial date convention, e.g. Jan 01 2006 38718) then day count, adjustment, and roll conventions are operative.
You can also input dates expressed as year fractions (numbers less than 30000), in which case, intervals are computed by differencing the date array, allowing you to bypass the date conventions when comparing numerical results to analytic formulae.
SciDateYearFrac[ValueDate,allDates,allDatesYF,{0,0,1}];
converts allDates from input date format to year fractions. It is similar to SciDateInterval except that instead of creating an array of year fraction intervals, DeltaT, between neighboring dates in the allDates array, it creates an array of year fraction intervals, allDatesYF, between each date in allDates and ValueDate.
These functions are similar to the SciXL/SciIntegrator functionality, but because their source code is available (in SciDateLib), the functions can be customized and used in models implemented in risk systems running on non-Windows platforms.
By default, the holidays used in computing the rolled dates for both SciDateInterval and SciDateYearFrac are read in serial format from a file Holidays.dat. This can be changed if additional arguments are given (see documentation for details).
SciDateBuildSchedule[Inception,Period,CouponInterval,allDates,iad,ncoup];
builds a date array allDates (indexed by iad from 0 to ncomp), which can used by SciDateInterval and SciDateYearFrac statements. The allDates array is defined by the built-in function NextDate, as
FormulaArray[allDates, {iad,0,ncoup},
NextDate[InceptionDate,Period,iad*CouponInterval]];
New ASPEN Language/ Numerical Method Features
ASPEN (Algorithm SPEcification Notation) is a concise, flexible, and extensible language for specifying the derivatives structures you want to model with SciFinance. Below are some of ASPEN's newest features, grouped by SciPDE (finite difference method) and SciMC (Monte Carlo).
New PDE code structure for accelerated pricing and risk sensitivity (SciPDE)
The standard finite difference architecture of SciFinance-generated PDE codes can be modified to one that includes three functions for pricing, interpolation access, and storage deallocation. This new feature is invoked by the specification statement PersistentGrid;
- The new finite-difference pricing function returns a C structure containing the dependent variables, option PVs, and Greeks for all grid points. The structure also contains any auxiliary Arrays required by interpolation functions.
- The new interpolation access function uses the methods given in the specification to interpolates over the data stored in the C structure for arbitrary coordinate tuples.
- A deallocation function is
provided to free the
structure storage.
Improved algorithms for American exercise (SciPDE)
An alternative to the SOR algorithm for American options is the "penalty" method. In this technique, a space-dependent nonlinear penalty term is added to the PDE. For each time step, if the current iterate does not violate the constraints, then the penalty term is zero. However, if the constraints are violated, the penalty term is set to a value that is very large and of a sign to drive the next iterate toward the constraint. Iterations continue until a suitable convergence criterion is met, at which point the code continues with the next time step. The advantage of this method is that the penalty term can be used with solvers other than SOR, because the iteration loop is outside of the solver itself. In particular, the method works with TriDiagonal solvers in 1D and ADI solvers in multi-D. See the SciFinance documentation under PenaltyMethod for the details of how to specify this method.
It can be shown that sufficiency
conditions exist to ensure monotonic convergence of the nonlinear
penalty iteration and
ensure that the solution of the penalty problem is an approximate
solution to the corresponding LC problem. In practice, the algorithm
often works well even when these sufficiency conditions are not met.
New UpwindDifference and VanLeer discretization methods (SciPDE)
Upwind differencing stabilizes the oscillations by adding a numerical diffusion (by offsetting the drift term finite difference operator by one grid point in the upwind direction). The additional numerical diffusion eliminates the spurious oscillations, but because it is applied indiscriminately may lead to errors even in the smooth part of the solution. These errors can be minimized by choosing a fine grid (errors caused by the extra numerical diffusion are proportional to dx). But this may not always be practical, especially in multi- dimensional computations.
In one dimension you can simply say:
UpwindDifference;
Otherwise you can specify a subset of directions to be upwind differenced with:
UpwindDifference[dir];
VanLeer discretization provides an elegant way to stabilize the oscillations that can arise in finite difference solutions in convection-dominated (low volatility) regimes such as fixed income and FX modeling. In fact the method can be used when the volatility is zero, as in the "Path" direction of continuously monitored path dependencies.
This flux-limiter algorithm adaptively switches from upwinding to centered difference to avoid creating new maxima or minima in the evolving solution. Second order accuracy is maintained in smooth sections of the solution with numerical diffusion added locally only where required.
In one dimension, the specification
VanLeerDifference;
overrides the default second-order central differencing on drift terms only. In multiple dimensions, the specification
VanLeerDifference[dir];
allows you to specify which drift
direction will be treated
with the van Leer flux limiter.
Computing a full Gamma with FullGammaMatrix (SciMC)
The default Gamma computation in SciMC models for multi-factor structures is limited to the diagonal components of the Gamma matrix. Using the specification statement
FullGammaMatrix;
specifies that the entire Gamma matrix be computed. Because this computation can be time consuming (the Gamma matrix is nD x nD for an nD dimensional structure), you may want to add Boolean switches to the Gamma (and perhaps Delta) computations, as in
Gamma == if[Dswitch, der[V, {Spot,2}]];
Extending Sobol beyond 360 dimensions (SciMC)
SciMC's Sobol sequence generator has a maximum dimension of 360, which may be insufficient for models with many assets and/or many time steps. The specification statement
Sobol[ExtendQR[ran4,nQRDimMax,Seed]];
creates a code that uses Sobol sequence numbers up to and including dimension nQRDimMax, and thereafter uses pseudo-random numbers from the chosen pseudo-random generators, e.g. ran4, which is initialized using Seed.
The Brownian bridge path construction that is automatically used whenever quasi-random sequences are used in conjunction with time stepping is also used with extended Sobol sequences. Thus, most of the variance remains in the lower dimensions of the combined quasi/pseudo random sequence. These dimensions are filled with Sobol numbers, so if nQRDimMax represents a significant fraction of the total dimensions, much of the variance reduction associated with Sobol sequences may remain. Because this is payoff and path dependency dependent, some numerical experimentation is in order when extended sequences are used.
RegularizeCorrelationMatrix repairs unphysical correlation matrices (SciMC)
A new statement is now available:
RegularizeCorrelationMatrix[oldrho, newrho]
When correlation matrices are derived via statistical methods from market data a few outliers, stale quotes, etc can often lead to invalid results. In risk management computations, perturbations of otherwise valid correlation matrices can also lead to non-valid ones.
Rebonato et al [1] describes several methods of regularizing non-valid correlation matrices that closely approximates a target symmetric but non-valid matrix.
By default, SciMC codes stop with an error if the correlation matrix is invalid. Adding the ASPEN statement
RegularizeCorrelationMatrix[rho,rhonew];
creates code that uses the second
(spectral decomposition)
method in [1] to create a valid correlation matrix rhonew from the
possibly invalid input matrix rho. In subsequent computations, rhonew
is used in place of rho. In the case that rho is already a valid
correlation matrix, rhonew is identical to rho.
Reference:
[1] 'The most general methodology to create a valid
correlation matrix for risk management and option pricing purposes.' R
Rebonato, P. Jaeckel, Quantitative Research Centre of the NatWest
Group, Oct 1999. Available on the web.
GreeksNoCache allows more complex sensitivity computations (SciMC)
SciFinance's method for computing the Greeks when using Monte Carlo simulations is based on a central finite difference 'bump' of the parameter of interest. The computations with the perturbed parameters use the same random numbers. To save computations, these random numbers are cached by default. Although this is very efficient, it sometimes creates quite complex code when the effects of the perturbations must be followed through many chains of dependency for complex models. To instead invoke the simpler method of completely redoing the value computations with bumped parameters, with no attempt to cache intermediate values use:
GreeksNoCache;
The result is often simpler code, with a slight efficiency penalty.
Added flexibility for MCMultipass code structures
A new MCMultiPass construct, SolveSDEsWithTime, allows you to save time steps values and control which stochastic variables are output. DEtime table and the discount variable are also output. For example:
MCMultiPass[ SolveSDEsWithTime, NoComputePays ];
to avoid saving intermediate but otherwise unused stochastic variables, a list of stochastic variables can be given, indicating that those are the only Outputs. For example:
MCMultiPass[ SolveSDEsWithTime[RateIntegral,r],
NoComputePays ];
The NoFiles constuct indicates to MCMultiPass that no files are to be saved, but pointers are arguments in the generated code. If NoFiles is used, timestamping is automatically turned off. For example:
MCMultiPass[ SolveSDEsWithTime, NoComputePays,NoFiles ];
New TerminalDistribution statement (SciMC)
The TerminalDistribution statement causes computation and output of the realized terminal distributions of stochastic variables in Monte Carlo simulations. The distributions are discrete with bins that may be uniformly (default) or logarithmically spaced.
