A Multi-instrument strategies involves in trading multiple instruments which may or may not be correlated. They can trade bi-direction (buy and sell). The goal is to make profit with means of "buy low and sell high", through taking position and flatting position at the right price and right time.
Hedge funds, proprietary trading business in i-bank and individual traders - whoever believe they have some winning strategies...
We call these two instruments as leg 1 and leg 2 respectively. We calculate the average price of leg1 instrument as AP1 and average price of leg2 instrument as AP2 over certain period from the historical data captured.
We define a factor called Average Ratio as below:
AR = AP1/AP2
We capture real time market price of both legs as MP1 and MP2, and define a factor called Market Ratio as below:MR = MP1/MP2
The following is the idea of how we make profit:When we take position, we take the short side and the long side in the same dollar value - hence dollar neutral. The merit of dollar neutral strategy is immune to market risk in theory. The risk lies at whether the stocks prices are really correlated.
As a super set to Pairs strategy, Dollar Neutral Strategy allows more than one instrument per leg. The following are strategy parameters for Dollar Neutral Strategy
Strategy level parametersinstrument.Value = instrument.Weight / sum(instrument.Weight) * strategy.Value
Ref qty parameter at instrument level is calculated asinstrument.Ref qty = instrument.value / instrument.Ref price
Assuming instrument.Price is the current price for a instrument in our strategy, the current market factor MF is defined asMF = (Strategy.Value - SUM(instrument.Price * instrument.Ref qty)) / Value
The strategy logic goes like thisHigh stop > High take > High flat > Low flat > Low take > Low stop
For software implementation, please refer to classes in package com.cyanspring.strategy.multiinstrument.dollarneutral. Here is a xml dump of a Dollar Neutral Strategy parameters:<com.cyanspring.common.event.strategy.NewMultiInstrumentStrategyEvent> <priority>NORMAL</priority> <txId>20120626-130244-297-0505T</txId> <strategy> <entry> <string>Low stop</string> <string>-0.05</string> </entry> <entry> <string>High stop</string> <string>0.05</string> </entry> <entry> <string>Value</string> <string>50000</string> </entry> <entry> <string>Low flat</string> <string>-0.01</string> </entry> <entry> <string>High flat</string> <string>0.01</string> </entry> <entry> <string>High take</string> <string>0.02</string> </entry> <entry> <string>Strategy</string> <string>DOLLAR_NEUTRAL</string> </entry> <entry> <string>Low take</string> <string>-0.02</string> </entry> <entry> <string>Allow diff</string> <string>100</string> </entry> </strategy> <instruments> <map> <entry> <string>Leg</string> <string>1</string> </entry> <entry> <string>Weight</string> <string>1</string> </entry> <entry> <string>Ref price</string> <string>55</string> </entry> <entry> <string>Symbol</string> <string>RIO.AX</string> </entry> </map> <map> <entry> <string>Leg</string> <string>1</string> </entry> <entry> <string>Weight</string> <string>2</string> </entry> <entry> <string>Ref price</string> <string>20.5</string> </entry> <entry> <string>Symbol</string> <string>WBC.AX</string> </entry> </map> <map> <entry> <string>Leg</string> <string>2</string> </entry> <entry> <string>Weight</string> <string>1</string> </entry> <entry> <string>Ref price</string> <string>37</string> </entry> <entry> <string>Symbol</string> <string>BHP.AX</string> </entry> </map> <map> <entry> <string>Leg</string> <string>2</string> </entry> <entry> <string>Weight</string> <string>2</string> </entry> <entry> <string>Ref price</string> <string>21.6</string> </entry> <entry> <string>Symbol</string> <string>ANZ.AX</string> </entry> </map> </instruments> </com.cyanspring.common.event.strategy.NewMultiInstrumentStrategyEvent>