Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Let's say the characteristics that I am interested in are

  1. FX
  2. Country
  3. Security selection

I have the benchmark weights and returns, the FX returns, and the portfolio weights and returns. Can someone give a few pointers on how I would be able to get the performance attributions for 1,2,3?

share|improve this question

You can approach this in two ways:

You could calculate what is known as a naive currency attribution to measure the value added due to currency decisions. This would give you one portion of the manager's value added. You could then use a single factor Brinson model to calculate attribution in the local markets, which would give you a country allocation and a security selection.

Alternatively, you could, measure the manager's value added from currency decisions using the Karnosky Singer model. This would give you multiple components, including a value added due to currency decisions on the physical securities, and a value added due to hedging of currency. Attribution if the local market value added would then be done using a Brinson style approach, after separating local Eurodeposit rates from local returns (these would be included in the currency part of the attribution).

Either approach could be done using arithmetic or geometric math.

share|improve this answer

I am not sure you need to setup complicated models to achieve what you try to get to (unless I misunderstand your question):

  • FX: Let's say your portfolio base currency is USD and you want to know what the performance attribution is of changes in xxx/USD or USD/xxx rates. You simply identify assets in your portfolio that are denominated in non-USD currencies, such as EUR denominated bonds or European stocks denominated in EUR. You know the returns of EUR/USD and you know the assets' returns over your measure period. Simply strip the fx returns off the total asset's return and you get your relative fx attribution for that particular asset. You do that for all assets in your portfolio and aggregate the fx attribution to get a portfolio fx attribution.

  • Country : Not sure what you exactly mean but if you have a country benchmark then you can apply the above in similar ways: Just identify the assets that would be part of that country "bucket", isolate the country benchmark return from your total asset's return and proceed as above.

  • Security selection? You mean asset class or individual asset? Either way, same as above.

The assumption of all that is that the residual return of each asset (after stripping off all other return attributions is the alpha (excess return) generated in each asset. This assumes you identify all return attribution that are not directly attributable to the asset itself (fx, country, industry, sector, ...).

Example, you have a EUR denominated stock holding. You reduce the usd converted return of the stock over the observed period by eur/usd returns. If stock price changed between t0 -> t1 from euro 100 -> euro 150, and eur/usd rate changed from 1.30 -> 1.40 then your usd denominated return is (150*1.4 / 100*1.3 - 1 = 61.5%) and has to be reduced by about 7.7% -> 53.8% return. So fx attribution here is about 7.7% for this particular asset.

Please clarify in case I misunderstood anything about your question.

share|improve this answer

Enhancing the Karnosky/Singer model with a good approach to temporal compounding will give you a good analysis for a Brinson-type attribution at the fund level.

share|improve this answer

For all practical purpose you may want to take a look at the PortfolioAttribution code here: https://github.com/R-Finance/PortfolioAttribution

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.