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 10

The 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 25

What to inspect

  1. Cumulative full-L1 and one-way turnover do not change when only the cost rate changes.
  2. Terminal net wealth falls as the declared cost rate increases.
  3. The non-rebalance period still has no strategy-driven turnover.
  4. 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 10

The Python and R scripts implement the same reduced-form proportional-cost convention.