Interactive reports
💹

Interactive reports

Unlike other reports in FIA, interactive reports can be configured in numerous different ways by passing parameters to the ReportSectors setting.

To turn interactive reports on, set

InteractiveAttributionReport = 1

Interactive report name

For XLS and CSV reports, the name of this report is of the form

💡
portfolio name + “_” + benchmark name + “#”+ [sector_names] + “_” + interval + “_” + batch id

where

portfolio name is the value in column 2 of the portfolio weights and returns file

benchmark name is the value in column 2 of the benchmark weights and returns file (only shown if file is supplied)

sector names are the sector names prodivded in the ReportSectors setting in the configuration file (can be left unset)

interval is specified in the configuration file (can be left unset)

batch_id is specified in the configuration file (can be left unset)

Reporting using one sector

To generate a report that decomposes results by industry and security, set

ReportSectors=Industry,Security

This will generate an Excel report that looks as follows:

image

Note that

  • the sectors used in the report decomposition are shown in cell A7
  • all quanities displayed (weights, returns, contributions, risks etc) are summarised for each sector, here in cells A9 and A14
  • a portfolio-level summary is shown in the SUMMARY row, here row 8

Sector variables

All interactive reports can be decomposed using the following variables:

Currency, Credit, Curve, Maturity, Duration, Coupon, Security 

These variables are always available as they are either set up for each security in the master file, or calculated internally.

In addition, any partition set up in the security master file can be used in an interactive report. However, if a value is not defined, it will be set to N/A on the report.

In this example, securities have been classified by Industry and Issuer, so the variables

Industry, Issuer

can also be used in the report.

In general, an interactive report is defined by assigning a comma-delimited list of sectors to ReportSectors. Spaces are ignored, as is the case of the sector name(s).

Drilldown

An attribution report can contain a very large amount of information, and it can be difficult to see what is going on without the ability to interact with, and 'slice and dice', the output.

FIA's interactive reports are designed to be modified and viewed in this way by the user.

The numbered grey boxes on the left hand side can be used to roll up the report. For instance, to roll the report up to the Industry level, click on the box labelled '2' just above row 1. The report will now look as follows:

image

Click on '3' to expand the report to the fullest amount, or '1' to roll the report up to the summary level.

In addition, the '+' and '-' boxes on the left axis can be used to open up or close individual sectors.

Position of totals

In these examples, totals are shown at the top of each interval. To show totals at the bottom of each interval, set

TotalsAtTop=0

in the configuration file.

Showing individual securities

If you want the interactive report to show individual securities, add Security to the end of the list of sectors. If you leave this off, the report will only be generated down to the level of the last sectors.

Order of sectors

Sectors should be shown in order of increasing detail. For instance, in this case Industry contains Issuer, which contains Security. You can use sectors in a different order, but the report will be difficult to interpret.

Number of sectors

Up to eight levels of sector can be displayed. This is a limitation imposed by Excel.

Interactive reports in CSV format

If you set CSVReport=1 when generating an interactive report, a CSV file containing the same data will be generated, including subtotal rows.

Reporting using multiple sectors

For more complex reports, you can decompose results by multiple sectors.

For instance, to see the above report decomposed by industry and issuer, set

ReportSectors=Industry, Issuer, Security

This will generate a report that looks as follows:

image

As before, the names of the sectors used are in cell A7. Here, there are subtotals at the issuer, industry and portfolio levels.

Report colums

Default columns

By default, FIA shows weights, attribution contributions and base currency returns on interactive reports.

Portfolio, benchmark and active columns

If FIA is run on a single portfolio, the interactive report shows data for that portfolio and each variable has data shown in one column.

If FIA is run on a portfolio and benchmark, in most cases the interactive report displays data for portfolio, benchmark and the active value. Each variable has data shown in three columns. Exceptions are when it only makes sense to display an active return, such as for asset allocation return, generated by mismatches between a portfolio and a benchmark sector allocations.

Customising report columns

To change the columns shown on an interactive report, select one or more column IDs from the list below, and add them in comma-delimited format to the InteractiveAttributionReport assignment, with the names of the sectors and the column IDs separated by a pipe ('|') symbol, preceeded by a COLUMNS = statment.

💡
Click on the link in the ‘Column ID’ label for more information about what the column represents and how it is calculated.
Column ID
Variable
Comments
Weight
Total weight is always 100%
Base currency return
Sum of base contributions is total base return
FX currency contribution
Sum of FX contributions is total FX return
Local currency contribution
Sum of local contributions is total local return
Effective exposure
Measured in dollars
Effective exposure weight
Sum of effective exposure weights is always 100%
Modified duration
Modified duration at security, sector and portfolio level
Modified duration contribution
Sum of modified duration contributions is portfolio modified duration
Modified duration weight
Sum of MD weights is 100%
Local currency return management effect
Only available when benchmark supplied
Local currency contribution management effect
Only available when benchmark supplied
Base currency return management effect
Only available when benchmark supplied
Base currency contribution management effect
Only available when benchmark supplied
Market value
Measured in dollars
Attribution contributions
Sum of attribution contributions (including FX) equals base return
Base currency return
Return including FX (in base currency terms)
Local currency return
Return excluding FX (in local currency terms)
Tracking error
Tracking error in %
Tracking error decomposed by risk
Tracking error decomposed by source of risk
Average weight over interval
May not sum of 100% due to changes in exposure over calculation interval
Normalised weight
Only available when benchmark supplied

For instance, to decompose a report by Industry and security, and to show weight, base return and local return, set

ReportSectors = Industry, Security | COLUMNS = AA, R_BASE, R_LOCAL

The interactive report will now look as follows:

image

Using column codes

Column codes can be supplied in any order. The interactive report will show the codes in the same order as they were supplied in the ReportSectors setting.

Any number of column codes may be used in a report. However, the report may be more usable if decomposed into two or more sub-reports. To do this, see the next section.

Generating multiple interactive reports

It is often useful to generate several interactive reports for the same portfolio, using different sector decompositions and variable lists.

To do this, FIA allows ReportSectors to be defined multiple times. A separate report is then generated for each setting.

For intance, to generate (i) a report that decomposes results by industry and issuer, and shows attributon contributions, and (ii) a report that decomposes results by issuer, and shows weights, set the following:

ReportSectors=Industry, Issuer, Security | COLUMNS=R_a
ReportSectors=Issuer, Security | COLUMNS = W

in the configuration file.

Names of interactive reports

The name of a report’s worksheet can be specified by adding

NAME=’sheetname’

to ReportSectors. For instance, set

ReportSectors = Industry, Issuer, Security | COLUMNS = AA, R | NAME = Weights and returns

The Excel worksheet generated by this command will then have the sheet name Weights and returns. A CSV or JSON file generated using the same settings will also have the same name.

Excel imposes a 31-character limit on the names of worksheets. FIA will therefore flag an error if a supplied worksheet name is longer than 31 characters.

Sorting data

Security-level data can be sorted by adding the option

SORT='sortvariable'

to ReportSectors. For instance, set

ReportSectors = Industry, Issuer, Security | SORT=R_BASE_A

to sort output by active base currency return.

If SORT is not set, security-level data is sorted by the name of the security, in ascending alphabetical order. Otherwise, SORT must be one (and only one) of the following values.

Valid options are as follows:

Sort code
Mnemonic
AA_P
Portfolio weight
AA_B
Benchmark weight
AA_A
Active weight (difference between portfolio and benchmark weight)
R_BASE_P
Portfolio base currency return
R_BASE_B
Benchmark base currency return
R_BASE_A
Active base currency return (difference between portfolio and benchmark base currency return)
R_LOCAL_P
Portfolio local currency return
R_LOCAL_B
Benchmark local currency return
R_LOCAL_A
Active base currency return (difference between portfolio and benchmark base currency return)
C_BASE_P
Portfolio base currency contribution
C_BASE_B
Benchmark base currency contribution
C_BASE_A
Active base currency contribution (difference between portfolio and benchmark base currency contribution)
C_LOCAL_P
Portfolio local currency contribution
C_LOCAL_B
Benchmark local currency contribution
C_LOCAL_A
Active local currency contribution (difference between portfolio and benchmark local currency contribution)

The order in which sectors are displayed is not modified by the value of SORT. For instance, credit buckets will continue to be shown in the order AAA, AA+, AA, AA- etc. However, security-level data within each sector will be ordered according to the value of SORT.

FIA can use a sorting order even when the variable on which the sort ie based is not displayed.

Understanding totals in interactive reports

Interactive reports

The following conditions always hold over any of FIA’s interactive reports, when returns and contributions data is shown:

Total level, any interval

  • Active base return = Active base contribution
  • Active base return = Base management return
  • Active base return = Base management contribution
  • Active local return = Local management return

Any level, any interval

  • Active local contribution plus FX contribution = Base management contribution
  • Sum of non-FX attribution contributions = Local management contribution
  • Sum of all attribution contributions = Base management contribution

Total level, single interval

  • Active local return = Active local contribution
  • Active local return = active local management contribution
💡
Note that the last two conditions may not hold at total level over multiple intervals.

Comparing Brinson vs returns reports

Suppose we run two reports over the same portfolio and benchmark set, once generating Brinson attribution data, the other simply reporting on returns and contribution.

Total level, any interval

  • Active base returns
  • Active local returns
  • Active base management contributions
  • Active base management returns

will always match across the two reports.

Total level, single interval

  • Active local contributions
  • Active local management contributions

will always match across the two reports

Total level, multiple intervals

Active local contribution and active local management contribution may not match.

Discussion

The reader will note that the only quantities that may not match at an aggregate level are those that involve contributions. Returns data always matches.

The reason is that contributions are smoothed to ensure that they can be aggregated in a path-independent manner to sum up to the overall base returns of the portfolio. Since FX contribution is treated in the same way as other sources of contribution (such as asset allocation and stock selection return), it is also smoothed, and so FX and local contributions may be slightly distorted when aggregated over multiple intervals.

However, the sum of active local and active FX contributions will always equal the active base contribution, as shown above.

For this reason, summed active local contributions (which aggregate these distorted sources of contribution) may differ slightly from summed returns (for which there is no distortion).

This does not apply to calculations over a single interval, when smoothing does not affect contributions.

Ranked weights, returns and contributions

Ranked reports show the largest and smallest weights, returns and contributions of individual securities and sectors in the portfolio and benchmark, in ascending or descending order. If an interactive report is calculated using a given sector, ranked reports will show data for that sector in ranked order, as well as for individual securities.

The ranked report piggybacks off the values calculated in the interactive report, using the partitioned values calculated and displayed in the main report.

To generate a ranked report, add the ‘ranked=’ option to the ReportSectors setting, in the same way as for the ‘columns=’ and ‘name=’ options. As before, the ‘ranked=’ option must be separated from other options by a pipe (‘|’) symbol. Options can be provided in any order.

At present, there are four valid values for ‘ranked’, each corresponding to a particular type of report. These are

  • AA: weights
  • R_BASE: base currency returns
  • C_BASE: base currency contributions
  • R_A: attribution contributions

For example,

ReportSectors=Duration,Security|ranked=AA, R_BASE

will generate ranked reports for weights and base currency returns.

The new setting RankCount allows you to select how many ranked items are displayed. For instance, if RankCount=5 (the default), then the top 5 and bottom 5 of each of the above quantities are shown on the report.

Ranked attribution contributions

FIA also allows you to display ranked contributions from individual risks, shown in the same way as other ranked data. For instance, if the largest contribution to return was credit spread from BBB rated securities, then this will be the first item shown on the ranked attribution report. This information allows rapid interpretation of the attribution report, highlighting the main drivers of return.

Together with these ranked contributions, FIA also displays contextual information showing the context of these returns. In the above example, the top line will show the weight of BBB rated securities, the modified duration of that sector, and the change in yield of that sector. The product of the three quantities will be close to the given contribution.

This collated information is shown as contextual because, unless there is a very simple case, the relationship will not be exact. Weights, risks, and market drivers all change over time, and smoothing will adjust the contributions generated by the portfolio.

For this reason, the drivers shown are unlikely to combine exactly to the displayed contribution. However, they will be useful in interpreting the context (portfolio positioning, market conditions) in which gains or losses were made.