Portfolio Construction: From Theory to Practice
Module: Fintech AI | Difficulty: Advanced
Rebalancing
Transaction Cost
Turnover
Rebalancing Frequency
| Frequency | TC | Tracking Error | |-----------|-----|----------------| | Daily | High | Low | | Weekly | Medium | Low-Medium | | Monthly | Low | Medium | | Quarterly | Very Low | High |
import numpy as np
class PortfolioRebalancer:
def __init__(self, target_weights, turnover_limit=0.1):
self.target = target_weights; self.limit = turnover_limit
def rebalance(self, current_weights, costs):
desired = self.target
turnover = np.abs(desired - current_weights).sum() / 2
if turnover > self.limit:
scale = self.limit / turnover
desired = current_weights + scale * (desired - current_weights)
tc = np.abs(desired - current_weights).dot(costs)
return desired, tc
Research Insight: Practical portfolio construction differs from theory because of transaction costs, taxes, and constraints. The key insight is that frequent rebalancing improves tracking but increases costs. The optimal rebalancing frequency depends on the trade-off between these effects.