QM009 Hands-on Lab
Change the transaction-cost assumption without changing the trading rule
Goal
This lab uses the same four-period synthetic three-asset path as QM009. The portfolio targets and rebalance dates stay fixed. You change only the proportional transaction-cost rate.
The example is a numerical illustration, not an estimate of real execution cost.
Run the Python version
From the lab folder:
python python/qm009_hands_on.py 10The final argument is the cost assumption in basis points per dollar of modeled pre-cost absolute trade notional. Try:
python python/qm009_hands_on.py 0
python python/qm009_hands_on.py 10
python python/qm009_hands_on.py 25What to inspect
- Cumulative full-L1 and one-way turnover do not change when only the cost rate changes.
- Terminal net wealth falls as the declared cost rate increases.
- The non-rebalance period still has no strategy-driven turnover.
- The 10-bps case uses full buy-plus-sell modeled notional, not the half-L1 one-way statistic as the direct cost base.
Try one change
Change one of the target weights in data/qm009_three_asset_case.csv while keeping each target fully invested. Turnover should change because the required trade changes. Keep the cost denominator convention unchanged so that the effect is interpretable.
R version
If base R is available:
Rscript r/qm009_hands_on.R 10The Python and R scripts implement the same reduced-form proportional-cost convention.