Portfolio Analytics: Performance Attribution and Measurement
Module: Fintech AI | Difficulty: Advanced
Brinson Attribution
Risk-Adjusted Returns
| Metric | Formula | Interpretation | |--------|---------|---------------| | Sharpe | | Return per risk | | Treynor | | Return per systematic risk | | Jensen | | Alpha |
import numpy as np
class PerformanceAttribution:
def __init__(self, portfolio_weights, benchmark_weights,
portfolio_returns, benchmark_returns):
self.wp = portfolio_weights; self.wb = benchmark_weights
self.rp = portfolio_returns; self.rb = benchmark_returns
def brinson_attribution(self):
allocation = (self.wp - self.wb) * (self.rb - self.rb.sum())
selection = self.wb * (self.rp - self.rb)
interaction = (self.wp - self.wb) * (self.rp - self.rb)
return {
'allocation': allocation.sum(),
'selection': selection.sum(),
'interaction': interaction.sum(),
'total': self.rp.sum() - self.rb.sum()
}
Research Insight: Performance attribution reveals the sources of portfolio returns. The Brinson model decomposes active return into allocation and selection effects. This helps identify whether a manager adds value through asset allocation or security selection.