CLEAN
Valuation library for mortgage-backed securities
Changes

Version: 6.3.4
Date: 20210730
Copyright (c) 2005-2021, Andrew Kalotay Associates. All rights reserved.

Version 6.3.4 (July 30, 2021)

  • More extensive documentation

Version 6.3.3 (January 25, 2021)

  • Shifted lognormal interest rate model added

Version 6.3.2 (September 6, 2019)

  • C API restored

Version 6.3.1 (July 18, 2018)

  • Windows DLL now has version information

Version 6.3.0 (June 28, 2018)

  • Distribution now builds 32-bit and 64 debug and release versions

Version 6.2.9 (June 15, 2018)

  • Changes made to avoid premature garbage collection by Java and C# APIs
  • Array and Optional accessors now return by value
  • ValuationReport, CashflowReport, Cashflows, YieldReport now use return-by-value accessor functions, instead of being a simple data struct

Version 6.2.8 (March 5, 2018)

Version 6.2.7 (December 26, 2017)

  • Removed extraneous code from mbs.cpp

Version 6.2.6 (December 20, 2017

  • Factor == 0 returns fatal error

Version 6.2.5 (December 15, 2017)

  • Removed Java wrapper library
  • Incorporated Java API SWIG code into aka_clean shared library

Version 6.2.4 (December 13, 2017)

  • Added error checking for Input::Mbs data fields

Version 6.2.3 (October 20, 2017)

  • Implemented java_heap.i in effort to improve memory manage by SWIG Java API
  • Moved SWIG code into separate Java wrapper shared library

Version 6.2.2 (September 19, 2017)

  • Made CLEAN thread-safe by removing all mutable and reference class members

Version 6.2.1 (September 16, 2017)

  • Java exception messages prefixed by "AKA CLEAN"
  • Added handling of std::exception

Version 6.2.0 (September 16, 2017)

  • Added out of memory and runtime exception handling in Java API

Version 6.1.9 (September 12, 2017)

  • Full rebuild

Version 6.1.8 (September 1, 2017)

  • Restored return-by-value instead of return-by-reference compute methods.

Version 6.1.5 (June 13, 2016)

  • Fixed AdjustBuckets.
  • Fixed MbsScenarioAnalysis.

Version 6.1.4 (April 4, 2016)

  • MbsScenarioAnalysis: Fixed OAS discounting. C++ is no longer forgiving if operator--() is applied to an iterator pointing to the beginning of a container

Version 6.1.3 (March 1, 2016)

  • Refactored some code to avoid use of raw pointers
  • Converted to new build system

Version 6.1.2 (August 18, 2015)

  • Renamed aka_clean5_release.* to aka_clean.*. Old C/C++ API removed from distribution.

Version 6.1.1 (July 9, 2015)

  • Moved structs and templates in namespace AndrewKalotayAssociates to AndrewKalotayAssociates::Common to avoid conflicts with BondOAS.
  • Revised C++ API, so SWIG-generated Java API works in Windows. This requires all objects containing an Array be returned by reference and not by value.
  • Replaced any Array object returned by a function by a struct containing the Array object. This for some reason is needed to generate working Java and C# API's using SWIG.

Version 6.1.0 (2015-6-3)

  • New C# API implemented using SWIG

Version 6.0.0 (2013-10-7)

  • In cashflow report, cashflows are smoothed as a function of time, eliminating spikes due to time gaps between checking for refinancings. Cashflows are smoothed by default, but smoothing can turned off, mostly for internal debugging purposes.

Version 5.9.0 (2013-2-8)

  • Updated AkaCleanTest.java with new example
  • Fixed spreadsheet when using dirty price as input

Version 5.8.9 (2013-1-18)

  • Restored missing 64-bit binaries

Version 5.8.8 (2013-1-17)

  • Moved "Calculate" button on Cashflows sheet

Version 5.8.7 (2013-1-7)

  • Excel spreadsheet has sheet "Cashflows" demonstrating cashflow projection

Version 5.8.6 (2013-1-3)

  • Updated Java API and sample Java code

Version 5.8.5 (2012-10-30)

  • Updated .Net API

Version 5.8.4 (2012-10-17)

  • Restored Java API
  • Class template Array now inherits from std::vector
  • Class template String now inherits from std::string

Version 5.8.3 (2012-10-16)

  • MbsYield now allows negative yields

Version 5.8.2 (2012-10-4)

  • MbsYield now handles zero remaining life more gracefully

Version 5.8.1 (2012-10-4)

  • Corrected implementation of PrepaymentSpeeds and MbsYield to account for age of MBS when constructing PrepaymentSpeeds using PSA

Version 5.8.0 (2012-10-3)

  • Added new class PrepaymentSpeeds that can be constructed using either a CPR or PSA
  • Changed MbsYield functions to use PrepaymentSpeeds object instead of a double representing speed

Version 5.7.1 (2012-9-7)

  • Added missing header file mbs_yield.h to release distribution

Version 5.7.0 (2012-7-30)

  • New member function compute_cashflows for MbsValuation. Generates projected cashflows.

Version 5.6.0 (2012-6-3)

  • New C# API

Version 5.5.0 (2012-6-2)

  • Added risk measure computations for InterestRateModel constructed with discount factor curve

Version 5.4.8 (2012-5-16)

  • Added InterestRateModel constructor taking discount factor curve

Version 5.4.7 (2012-5-14)

  • Added check for prepayment vectors of size 0

Version 5.4.6 (2012-2-27)

  • Full rebuild on Solaris x86 to eliminate unwanted dependency on stlport

Version 5.4.5 (2012-2-23)

  • Rebuild on Solaris x86 using stdcxx4 instead of stlport4

Version 5.4.4 (2012-1-31)

  • Rebuild

Version 5.4.3 (2012-1-30)

  • Added MbsYield class for price-yield functions
  • Renamed Example.java to AkaCleanTest.java
  • Added yield computation to AkaCleanTest.java
  • Added use of config file to set license and find native libraries

Version 5.4.1 (2011-10-27)

  • Fixed Array class so build using Sun C 5.8 works
  • Fixed Java API

Version 5.4.0 (2011-9-13)

  • Fixed bug in AkaCleanVbVersionString that caused memory leak and crashes

Version 5.3.4 (2011-5-14)

  • Added refinancing option value to Output::Price

Version 5.3.3 (2011-4-20)

  • Rebuilding. Creating Solaris x86-64 build

Version 5.3.2 (2011-4-9)

  • Rebuild

Version 5.3.0 (2011-3-26)

  • Updated spreadsheet to account for changes made in 5.2.0

Version 5.3.1 (2011-4-5)

  • Minor cleanup of API

Version 5.2.0 (2011-2-19)

  • MbsValuation::compute_valuation_report now does not require an InterestRateModel with preconstructed lattices for computing risks. Bumped lattices are built if needed and not already constructed

Version 5.1.3 (2011-2-16)

  • InterestRateModel: added member function that resets model to new yield curve and volatility
  • New command-line executable that calculates timings for
    • Constructing an InterestRateModel
    • Computing OAS to price
    • Computing OAS to price and risks (including partial durations)
    • Computing price to OAS
    • Computing price to OAS and risks (including partial durations)

Version 5.1.2 (2011-1-12)

  • Fixed incorrect homeowner credit spread value in Example.java
  • InterestRateModel, MbsValuation: added member functions that report the inputs used by constructor

Version 5.1.1 (2011-1-6)

  • Installs all shared libraries
  • Both old and new Java API's distributed
  • Both old C API and new C++ API distributed

Version 5.0.7 (2010-10-8)

  • Cosmetic changes to new spreadsheet delineating more clearly different types of inputs

Version 5.0.6 (2010-9-9)

  • Updated spreadsheet using old API and repaired scenario analysis

Version 5.0.5 (2010-8-25)

  • Updated data in spreadsheet

Version 5.0.4 (2010-8-24)

  • Streamlined C++ and VB API
  • Streamlined Excel spreadsheet

Version 5.0.3 (2010-8-23)

  • Implemented forward settlement and accrued interest properly

Version 5.0.2 (2010-8-22)

  • Implemented expected life
  • Old API working

Version 5.0.1 (2010-8-22)

  • Fixed bugs in:
    • VBA code in spreadsheet
    • Prepayment speed computation

Version 5.0.0 (2010-8-20)

  • Major new release
  • Added following new features:
    • Yield curve now includes forward or futures yields for Eurodollar futures
    • Choice of lognormal or normal interest rate model
    • Computes following types of duration and convexity:
      • Effective
      • OAS
      • Homeowner credit spread
      • Volatility
    • Computes partial durations
    • Computes expected prepayments
  • New cleaner API

Version 4.51 (2010-3-17)

  • Fixed handling of default speed and default recovery fraction in spreadsheet

Version 4.50 (2010-3-15)

  • Added new field "principal_multiplier" to AkaCleanMbsTerms to allow valuation of IO's

Version 4.47 (2010-3-7)

  • Converted template method in MbsState class to free function, so that Clean will compile using Sun C++ 5.5

Version 4.46 (2010-2-19)

  • Removed license from spreadsheet

Version 4.44 (2010-2-10)

  • Fixed typos in spreadsheet headers

Version 4.43 (2010-2-4)

  • Fixed handling of reinvestment OAS in spreadsheet

Version 4.42 (2010-2-3)

  • Tweaking duration calculation

Version 4.41 (2010-2-2)

  • Fixed default default recovery rate value

Version 4.40 (2010-2-1)

  • Improved duration computation

Version 4.31 (2010-1-7)

  • Windows libraries are now linked to shared C/C++ runtime libraries
  • Added Microsoft distribution of shared C/C++ runtime libraries: vcredist.exe

Version 4.30 (2009-11-28)

  • Refinancing cost is now a fixed percentage of the original principal amount, instead of a fixed percentage of the amount outstanding at time of refinancing

Version 4.11 (2009-11-11)

  • Thinned out extremely extremely sparse lattice even more

Version 4.10 (2009-10-15)

  • Added compile-time control of number of buckets
  • Added light version of CLEAN with only 3 buckets
  • Added an extremely extremely sparse lattice setting

Version 4.01 (2009-9-27)

  • Recompile Windows version using VC++ 2008

Version 4.00 (2009-6-22)

  • Added modeling of default and recovery rates

Version 3.00 (2009-5-26)

  • Fixing Java win32 scripts

Version 2.99 (2009-5-12)

  • Added Java wrapper to distribution

Version 2.98 (2009-5-9)

  • Added Solaris Sun Studio 12 build

Version 2.97 (2009-4-26)

  • Fixing Solaris gcc 64-bit build

Version 2.97 (2009-4-26)

  • Fixing Solaris gcc 64-bit build

Version 2.95 (2009-2-3)

  • Tweaks to build to make Sparc Solaris gcc build work

Version 2.94 (2009-1-12)

  • Fixed duration and convexity calculation

Version 2.93 (2009-1-12)

  • Restored missing header files

Version 2.92 (2009-1-9)

  • Added calibration functions to C++ API
  • Revised clean_calibration_and_setup.pdf

Version 2.91 (2008-12-12)

  • New release of Java wrapper. AdjustFactor added to Java API
  • AdjustFactor implementation fixed

Version 2.90 (2008-12-10)

  • New release of Java wrapper. Fixed memory issue in the function AkaCleanFindCurrentCouponTba
  • Clean setup and calibration document created

Version 2.80 (2008-12-1)

  • Fixed calculation of effective convexity
  • Added new function for computing accrued interest

Version 2.70 (2008-11-24)

  • Added spreadsheet back to distribution

Version 2.60 (2008-10-16)

  • Added new functionality for calibrating mortgagor OAS to difference between mortgage coupon and the current mortgage coupon and calibrating MBS OAS to TBA prices

Version 2.50 (2008-7-23)

  • Added more explanations to documentation

Version 2.40 (2008-7-3)

  • Replaced boost::array by std::vector in ExpectedCashflows class. Reduces stack usage to below 256K for function compute_cashflow_vector. Needed for Microsoft web apps

Version 2.30 (2008-1-5)

  • Fixed handling of first mortgage payment date
  • Removed asserts from release version

Version 2.20 (2007-12-6)

  • Added new lattice density: extremely sparse

Version 2.10 (2007-11-30)

  • Added new lattice density: very sparse

Version 1.99 (2006-8-2)

  • Restored missing C++ header and documentation files

Version 1.98 (2006-6-9)

  • Tweaks to example_cpp.cpp and cpp_api.h documentation

Version 1.97

  • Three lattice densities now available: sparse, default, dense

Version 1.96

  • Sparser lattice to increase speed
  • New, faster prepayment vector generation
  • Typos corrected in spreadsheet

Version 1.93

  • Reorganized layout of library

Version 1.92

  • New projected prepayment vector function
  • ComputeValuationReport made faster

Version 1.90

  • Streamlined lattice to shorten computation time

Version 1.82

  • Now computes expected life and average prepayment speed
  • Return analysis implemented
  • Global objects now managed by handles
  • C++ API implemented
  • C and VB API's revamped

Version 1.44

  • More bug fixes

Version 1.43

  • Extraneous fields in spreadsheet removed

Version 1.40 (2005-5-21)

  • New API implemented

Version 1.31 (2004-8-9)

  • First release of CLEAN as Linux shared library

Version 1.30

  • First release of CLEAN as Win32 DLL