Version: 6.3.4
Date: 20210730
Copyright (c) 2021, Andrew Kalotay Associates. All rights reserved.
Building in C++
- Header files are in
include
directory
- If you want to move the header files, you must preserve directory hierachy
- Requires C++ 98 or newer compiler and standard C++ library
- Link to shared library:
- Windows:
WIN64/aka_clean.lib
(stub)
WIN64/aka_clean.dll
- Linux
- OS X
MACOSX64/libaka_clean.dylib
- Running client app
- Windows: Do one of the following:
- Put
aka_clean.dll
in same directory as app
- Put
aka_clean.dll
in a directory listed in the environment variable PATH
- Linux: Put
libaka_clean.so
into a directory listed in the environment variable LD_LIBRARY_PATH
- OS X: Put
libaka_clean.dylib
into a directory listed in the environment variable DYLD_LIBRARY_PATH
Building in Java
- Compiling client app
java/aka_clean.jar
must be in classpath
- Running Java client app
java/aka_clean.jar
must be in classpath
- Directory containing native C++ library must be listed in
java.library.path
Writing Code
Important
All input values are in absolute decimals. For example, 10% is entered as 0.10
Preliminaries for Java only
Namespaces
- All classes and structs are in the namespace
AndrewKalotayAssociates::Clean
- Data structs declared in the namespace
AndrewKalotayAssociates::Common
are all pulled into the namespace AndrewKalotayAssociates::Clean
- Input data structs are in subnamespace
Input
.
- Output data structs are in subnamespace
Output
.
C++, C#, Java
- Use static methods in the class Setup to initialize library using userid and license
- There are two different types of classes:
- Data structs that have no functionality but provide inputs to the classes and functions that actually do something. They are declared in the following header files:
- Classes that do the calculations and generate the output reports
- (C++) These classes are declared in the following header files:
- Sequence of steps (after library has been initialized)
- Set up input data structs needed for class constructors and methods
- Construct an InterestRateModel object
- For each MBS to be analyzed, construct an Mbs object
- Call Mbs class methods to generate output reports
- The InterestRateModel object can be reused for analyzing a set of MBSs, if you are using the same interest rate environment for all of them. Since the construction InterestRateModel is relatively expensive in CPU time, you should always do this if possible.