MATLAB: Short sell with backtest Engine

backtestsellshort

What's the most effecient way to implement short selling strategies with the backtestEngine?
Using this Matlab example as a reference: https://www.mathworks.com/help/finance/backtest-investment-strategies-with-trading-signals.html
It appears that if you change crossoverRebalanceFcn to output negative portfolio weights, for example
change
new_weights(idx) = availableCapital / uninvestedAssets;
to
new_weights(idx) = -availableCapital / uninvestedAssets;
That seems to work. Is that the correct way to implement a short? Any other considerations with this approach or is there a better approach?

Best Answer

hello again Ando,
Yes, that is how you take short positions using the backtestEngine. You just set a negative weight on an asset. Since the total weights should equal to 1, shorting an asset will mean you have additional weight to allocate to long positions, or else the unallocated weight will stay in cash earning the RiskFreeRate.
cheers,
-brendan