Version 2.7.0
Build 254
ShowSecurityID deprecated, SecurityIdentifier added with valid values NAME, ID, NAME_ID
Build 253
Convexity for perturbational securities now displayed if C is supplied
Build 252
Corrected issue with annualised performance contribution
Build 251
Decision-based attribution functionality added
Version 2.6.1
Build 248, 249, 250
Internal refactor
Build 247
5, 30 year AU bond futures added
More work done on context reports - all Brinson settings (BF/BHB, interaction, FX) confirmed
Fixed bug in context report for AA; added equation showing how AA and SS returns calculated
Build 246
OffBenchmark functionality added for spread return
Spread added to security and portfolio risk reports
Build 245
New switch ResidualIsSpread does what it says. Used for when SpreadAllocationSectors is active and spread data is not available
Build 244
EE and MV were shown the wrong way round in interactive reports, corrected
Build 243
More diagnostic info supplied in routine VerifySecurityDefined, including date when a subportfolio has missing data
ValidateYTM bypassed if ImpliedAnalytics is off
Build 242
For sectors or securities with leverage, local and base returns now correct
Build 241
P and B always shown even when Brinson active, unless ShowActiveOnly is on; sector classifications with empty value now ignored, instead of setting up an empty sector
Build 240
Bug involving unallocated sectors fixed - if a sector is not set up, its value is set to the unclassified label
Bug in ranked reports fixed - active data in wrong place when Brinson attribution active
Build 239
Bug fixed in SummaryAttributionReport: when ShowRiskType is on, active residual was zero in all cases
Build 237, 238
Internal refactor
Build 236
Active weight, return, contribution added to ranked reports
Build 235
Log report restructured: error, warning, advice categories added
Build 234
Adjusted local and base returns on interactive report to be consistent with contributions in all circumstances
Build 233
New switch ImpliedAnalytics, UnclassifiedLabel added
Build 232
Reduction of duplicate error messages
Bank bill futures pricing function FT_BILL_FUTURE added
Build 231
Minor reformats of context reports
Build 230
Custom names can be assigned to stand-alone reports
Version 2.6.0
Build 229
Check on zero holdings in ranked reports amended
Build 228
Fix for multiple single-portfolio ranked reports; SingleDrilldownReport has p_sorted_security_weights etc cleared
Build 227
New checks for coupon frequency between 0 and 12, not negative
Build 226
New boolean switch Unfold added - if true, interactive reports are unfolded by default. Applies to columns as well as rows
Ranked report tabs and file names changed to portfolio_name, report name, interval, TOP_BOTTOM, rank_count, type with type left blank for context report
Build 223, 224, 225
Corrected case when only securities shown in ranked report, an empty gap was left in each report
Build 222
Names of indices in index file, and names refernced in risk functions, are converted to upper-case internally
Build 221
ShowSecurityID now display security code in brackets after security name instead of replacing it
Version 2.5.2
Build 220
Context reporting and ranked contributions, holdings reporting added
ShowActiveOnly with no benchmark data downgraded to warning, turns ShowActiveOnly off
Build 219
Bug fixed in PriceReturn when custom residual buckets set up in security master file
FX explicitly disallowed as residual sector
Boolean add_spreads switch added, default spread label changed to Spread from OAS
Build 218
Boolean switches LookThrough, RootLevelOnly removed from code
Build 217
Code updated to calculate net MV, EE, EE_W for nested portfolios correctly
FilterPortfolio and FilterBenchmark switches added for ESG attribution
Paydown return calculation amended, check that PSA < 1666
Build 216
If one or more non-alphanumeric characters present in portfolio names, each is converted to ‘_’ rather than FIA generating error message
Build 215
Risk function Inflation now shown as Inflation on reports
Build 214
New risk function Inflation3m added
Build 213
Internal improvements to error handling will now provide impoved diagnostics when running via the Web API
Build 212
BlankZeros functionality rewritten after clarification from users
Build 211
New setting BlankZeros added: if true, zero values in CSV and XLSX reports are shown as blanks
Build 210
Input data files with type CSV are assumed to be comma-delimited. Input data files with type TXT are assumed to be tab-delimited. TXT files can be used when, for instance, security names include commas.
If ShowActiveOnly is on, a benchmark must be present or FIA will halt.
Build 209
All labels on summary report are now user-configurable
Test added for duplicate supplied tab names in Excel report
Wrong sort order for maturity and duration buckets in interactive report when securities are not shown was fixed
Interactive reports now have alternating white and grey column backgrounds
All tabs in Excel reports can have their names supplied by user
Maximum file upload size in API increased to 1GB
Build 208
Undefined securities only flagged once
Security IDs can now include punctuation characters
Build 207
Bug fix: Overflow appeared in credit return labels when SpreadAttribution was false, corrected
Build 206
Internal refactoring
Build 205
MV and EE formats changed to dollars in interactive reports
Build 204
Internal refactoring and speed increase
Build 203
Internal refactoring and speed increase
Build 202 (3rd April 2023)
Identical results generated when BrinsonAllocationSectors=NONE and when BrinsonAllocationSectors not set. New internal tests added for consistency of absolute and relative performance data on reports.
Build 201 (28th March 2023)
In some circumstances Excel will leave orphan records when summarising from top. TotalsAtTop now defaults to False and is deprecated for future use,
Build 200 (14th March 2023)
LOCAL_ME deprecated as not needed, identical to local active contribution
Build 198-199
Internal development builds, new regression testing suite put in place
Version 2.4.6
Build 197
Program aborts cleanly if bad data found on end date; start and end dates on summary and interactive report now match StartDate and EndDate in configuration file
Build 188-196
Internal development builds, extensive refactoring of interactive reporting routines to allow generation of JSON reports.
Build 187 (11th January 2023)
SORT option added to interactive reports, allowing security-level data to be sorted by weight, base and local return, and base and local contribution. Sort order can be applied to portfolio, benchmark and active values if applicable. The SortDescending boolean switch controls whether values are ascending or descending.
ME_LOCAL_C and ME_BASE_C colums added to interactive report to display local and base management contributions.
Version 2.4.5
Build 186 (7th January 2023)
Some warning messages that were being directed to console now written to log file.
If bad data provided at some date in the run (eg portfolio return < -1), program now generates reports from first good date after that date, and the issue is recorded in the log file.
In some cases, running Brinson attribution when annualisation was active generated incorrect results - fixed.
When annualisation run, results calculated over full period rather than period held.
Build 185 (22nd December 2022)
New boolean switch ShowActiveOnly added: when portfolio and benchmark provided, only active data is shown on reports
Build 184 (16th December 2022)
Bug in CalculateYieldCurveEffects fixed: in some circumstances. when combination of yc-sensitive and non yc-sensitive securities present, carry return wrongly assigned to duration return
In security attribution report, interval over which security is held is used when calculating annualised return
Build 183 (8th December 2022)
Aggregate return error (portfolio return < -1) downgraded to warning in all cases at client request
Security attribution and unit price report annualisation corrected
Build 182 (7th December 2022)
Corrected issue in which reports could show inconsistent totals when a sector’s weight was exactly zero with non-zero return and Brinson allocation in use
Build 181 (6th December 2022)
Internal release
Build 180 (26th November 2022)
Aggregate return error (portfolio return < -1) downgraded to warning in some cases
Build 179 (24th November 2022)
BrinsonAllocationSector=SECURITY now treated as special case, consistent with other sector settings
Request for allocation analysis without benchmark present downgraded to warning
Build 178 (23rd November 2022)
Names of allocation sectors updated to reflect documentation
Request for allocation analysis without benchmark present flagged as error
Build 177 (21st November 2022)
Corrected issue seen when using OffBenchmarkSector over multiple reporting intervals (MTD, QTD etc). A non-zero benchmark holding over some dates affected results over all intervals, even when there was a zero holding in that interval.
Build 176 (19th November 2022)
Bug fixed when calculating rolldown from first principles
Rolldown assigned its own risk category on summary attribution report
Build 175 (14th November 2022)
Summary attribution report now groups return types together
Security attribution returns and summary unit price reports can be annualised
Build 174 (7th November 2022)
Reports over given date intervals and over selected intervals (eg, MTD) now work correctly when Carino smooth is active and Brinson attribution is in use
Build 173 (30th October 2022)
QuantLib bond pricing routines integrated with OpenPricing API as a proof of concept. QuantLib code is about 10 times slower than FIA’s custom routines, so not included in production
Build 172 (21st October 2022)
Compiled with source code for LibXL to fix authorisation isssue when called in virtual Linux enviroments
Build 171 (10th October 2022)
Issue with calling order of OffBenchmark and OffBenchmarkSector corrected
Build 170 (2nd October 2022)
Internal release
Build 169 (26th September 2022)
New AnnualisedReturn switch added, making annualised returns available on reports where relevant.
Build 168 (20th September 2022)
Internal release
Build 167 (12th September 2022)
Internal numerical limits changed to handle cases where asset allocation is very small (<10^-9) and return is very large. Previously, this could lead to inconsistent active base returns and attribution contributions.
API function FIA_get_version() now works correctly
Build 166 (8th September 2022)
New unit tests added to test file headers in supplied data.
New unit test added for verification that portfolio and benchmark names are different.
Build 165 (5th September 2022)
Internal bug fixed when geometric smoothing active, benchmark returns zero.
Total return for base returns on interactive report corrected to show absolute values.
Version 2.4.4
Build 164 (10th July 2022)
LibXL build upgraded to v4.0.4, statically linked to Linux distribution
Logging code updated in Windows
Build 163 (15th June 2022)
File encryption for Web API added
JSON reporting added
Build 162 (1st June 2022)
OffBenchmarkSector functionality added
Build 161 (23rd May 2022)
Unit price reports added
Total curve changes added to yield curve reports
Build 160 (13th May 2022)
Corrected bug in yield curve report for date, risk sheet
Simplified spread attribution in place, replacing OAS and Z-spread attribution
If a security has no maturity date defined, this quantity is shown as blank on security risk and attribution reports, rather than 1-Jan-2000
If CarryAllocationSectors or ResidualAllocationSectors active, names of these effects now reflects any changes made to the base variable name (eg ‘Residual’ changed to ‘Credit’)
UseCashOffset switch removed
Pricing return amended to give correct return when no position present in portfolio or benchmark files
New logging functionality applied to API client code