This page lists additions and improvements planned for FIA. They are not presented in any particular order or priority.
|External pricing||The current release of FIA has its pricing routines build into the core attribution engine.
This enhancement will move all pricing routines into an external DLL (for Windows) or shared library (for Linux) via a documented API. The pricing code will be available to registered users so that they can modify or extend the library for custom pricing.
The security master table will be updated so that the security type field will now be set to the name of the appropriate pricing function. An additional column will contain the path of the library that contains this function.
|Data-driven API||FIA is currently called from a single function call (FIA_RunAttribution) that assumes a constant number of inputs and a fixed configuration object structure.
This approach is not future-proof, in that any modifications to FIA's capabilities will modify the signature of the function call and potentially change the configuration object. This will break existing code for users of the pricing engine.
To ensure that future versions of FIA are backwards compatible with existing code, we will rewrite the API in a data-driven format.
The proposed API replacement uses the following functions
int FIA_initialise ( const USER_OPTIONS u);
int FIA_load ( const STRING_MATRIX& m, const int data_type);
int FIA_parameter (const int parameter_type);
int FIA_save ( const STRING_MATRIX &output);
int FIA_CSV_report( const string path, const int CSV_report_type);
int FIA_XLS_report(const string path, const int XLS_report_type);
Values of data_type, CSV_report_type and XLS_report_type are supplied in an openly distributable header file. For instance, turning convexity attribution on requires a call of type FIA_parameter (FIA_CONVEXITY);
This interface mechanism ensures that all future upgrades will be backwards compatible with user code, while allowing unlimited new report types, imported files, and additional functionality.
|Complete and available in release 1.13|
|Command-line override||Currently, FIA is driven by a configuration file.
In some cases, it may be useful to override one or more of the options specified in this file from the command line. For instance, if convexity attribution is set to FALSE in a configuration file config.cnf, it should be possible to set this parameter to TRUE by setting
fia32 -c config.cnf --convexity_attribution=TRUE
|Risk attribution report||An additional report will be added that decomposes portfolio tracking error in terms of individual security contributions. These contributions will be further decomposed by source of risk, so that (for instance) contribution to tracking error from non-paralled curve shifts may be calculated.
The approach will be based on the paper by Gregoire and van Oppens with some internal enhancements.
|Complete and available in release 1.12|
|Import pricing contribution||At present, the weight and returns file assumes that per-period return is sufficient for accurate performance reporting. However, this assumption breaks when a security is bought and sold out over a single period, so that its weight may be zero at the start and end of an interval, but its contribution to performance is non-zero.
This case will be handled by allowing FIA to import performance contribution in place of simple return. A switch labelled PERFORMANCE_CONTRIBTUION will be added to the configuration file to tell the program if returns data is being provided in this format.
|Additional analytics import||At present, the only risk numbers that can be specified and imported are yield to maturity, duration, spread duration and convexity.
This enhancement will allow further variables, such as 'greeks' (delta, gamma, etc) to be defined and imported by the user.
|Benchmark roll-up||Large benchmarks may contain many thousands of securities that are not present in the portfolio. The presence of these securities can make security-level attribution reports large and unwieldy.
This enhancement will combine the weight and performance contributions of all securities that are not present in the portfolio into a single line
|Longitudinal data||The yield curve file contains one type of longitudinal data, in which information about a particular set of variables is provided at a single point in time.
The most commonly used longitudinal variable is a yield curve, at which yields at various future tenor points are supplied at a given date. Other longitudinal variables are volatility term structures and prepayment vectors for mortgage-backed securities.
This enhancement will allow each security to access an unlimited number of longitudinal variables for pricing and attribution purposes.