FIA system requirements
FIA is a stand-alone C++ program that reads in CSV files and exports CSV and XLS files. It has a command-line/configuration file driven interface. There is no GUI. The interface and system requirements have deliberately been kept simple to assist deployment, speed, ease of installation, and use in batch mode.
Windows 7, Windows XP, Linux (Ubuntu). Program is written in cross-platform C++ and should readily be portable to other environments. Runs satisfactorily on low-end PCs. Currently single processor only, future releases may include multi-threading capabilities to use multiple cores.
- C++: Visual C++ Runtime Redistributable for Windows, libstd++ library for Linux
- LibXL: third-party library that allows a C++ program to generate Excel reports without requiring any Windows components. The library uses one external DLL/shared library.
- OpenCV (Open Source Computer Vision): released under BSD licence by Intel, free for commercial use; requires shared libraries to be distributed with application.
All these files are supplied together with the main EXE.
FIA does not use a database. CSV files are read into memory and processed internally.
FIA was developed using Microsoft Visual C++ Express v9, gcc, STL, Boost. The program is about 20,000 lines of C++. Code is cross-platform and uses a single set of files for Windows and Linux, with #idfefs to cover minor differences between environments.
- Local backup: Mercurial, weekly backups to CD, cloned to other PCs
- Remote backup: Mercurial on BitBucket.org
Quality assurance and testing
- QA tools: PC-Lint for code review, AutomatedQA for code coverage and profiling, Artistic Style for code formatting and consistency, Make for automatic rebuilds.
- Regression tests: Around 20 test cases (basic functionality, edge cases etc) are run before releasing a new build. Results are automatically compared using diff against known verified results files to ensure output is correct.
- Stress tests: Test suite generates very large files to stress-test system on data sets comparable to the largest benchmarks (e.g. 50,000 securities, 500 days). The test suite is available to users on request.
Copy protection (planned)
For on-site installations, FIA will be dongle protected to discourage casual copying.
FIA runs a considerable number of data consistency checks before beginning processing. If an issue is found, a diagnostic message indicating the exact line and column number of the issue is returned to the user. Processing then terminates in a controlled manner.
Interface with external systems
One of FIA’s core aims was to make data requirements as simple as possible.
FIA requires the following files in CSV format:
- Weight and returns file, exported from existing performance measurement system or benchmark vendor. We anticipate the user will run a batch process on a regular basis to generate these files.
- Security definition file containing security master data, such as bond names, ID codes, coupons, maturity dates etc. This is supplied as a CSV file with varying numbers of columns. This file can either be set up by the user using Excel or a text editor, or may be exported from the existing performance measurement system. The same security master file can be used for all portfolios.
- Yield curve file, containing historical values of zero coupon rates. We can supply this data for most sovereign curves, or the user may decide to use their own data from an in-house database, Bloomberg etc.
The same yield curve file can be used for all portfolios.
Detailed formats and examples are available in the ‘FIA User Guide’ and on our web site.
The program may be driven entirely by command-line prompts, but for convenience we recommend using configuration files which store the various values of the program’s arguments. These files can be set up or modified in any text editor.
We have a partnership agreement with RIMES data, who can supply benchmark data pre-formatted for use in FIA.