IMLInvestment
Model Library

Implementation contracts / v1.0.0

Linear rebalance cost drag

Convert a symmetric per-side basis-point cost and traded weights into a one-period return approximation.

Synthetic educational references. Not a fitted investment strategy, forecast, provider model or client return. First publication: 2026-10-16. Model and engine version 1.0.0.

Calculation contract

cost_fraction = gross_traded_weight * cost_bps / 10000; net_approx = gross_return - cost_fraction
Version 1.0.0 input contract
InputAllowed valuesMeaning
beforeAligned long-only weights summing to oneDrifted pretrade fractions
afterSame-length weights summing to oneTargets before cost-funded cash adjustment
cost_bps0 to 1000 basis points per traded notionalSame assumed rate for buys and sells
gross_returnDecimal, -1 to 10One-period return before this assumed cost

Method and interpretation

The default gross traded fraction is 0.4 and the per-side cost is ten basis points, or 0.001. The assumed drag is therefore 0.0004 of starting NAV, equal to four basis points. Subtracting it from 0.02 gives an approximate net return of 0.0196.

Multiplying the same rate by one-way turnover would halve the stated per-side cost. Conversely, an already round-trip cost quote cannot be used as a per-side rate without adjustment. Record the quote convention before comparing outputs.

Where the reference stops

This linear reference is not an execution estimate. It has no participation, spread, impact, tax, financing or order timing model, and does not re-solve holdings after fees. A net approximation below -100% is possible under extreme inputs and signals that the additive illustration is outside a feasible funded account.

Published synthetic inputs

{
  "before": [
    0.6,
    0.4
  ],
  "after": [
    0.4,
    0.6
  ],
  "cost_bps": 10,
  "gross_return": 0.02
}

Frozen calculation output

{
  "trades": [
    -0.19999999999999996,
    0.19999999999999996
  ],
  "gross_traded_weight": 0.3999999999999999,
  "one_way_turnover": 0.19999999999999996,
  "cost_fraction": 0.0003999999999999999,
  "net_return_approximation": 0.0196
}

Both vectors use the same pretrade NAV and asset order, sum to one, and exclude external flows. before means drifted pretrade weights, not an earlier target.

Symmetric basis-point cost per buy and sell notional. Linear one-period approximation; no spread/impact calibration, tax, financing or cash re-solve.

Verification coverage

  • Basis-point conversion, gross-versus-one-way factor and zero-cost identity.
  • Costs remain explicit in exports and never relabelled as actual broker charges.

Unit and independent-reference checks test arithmetic and rejection rules, not future investment performance.

Method references

Read the assumptions in context

Allocation references

Turnover definitions: count the trades before comparing the number

Distinguish gross trading, half-turnover, cash movements and drift using a fully reconciled synthetic rebalance.

Allocation references

Transaction cost units: from a quoted rate to portfolio drag

Reconcile basis points, trade notional, ticket fees and portfolio-level drag without confusing a cost assumption with observed execution.