# Liquidity and Position Sizing



## rx2 (24 January 2012)

Hi,

I am currently (still) working on my first mechanical trading system and just revisiting how I manage liquidity and maximum position sizing, and whether there is a better way.

My trading system is a short term mean reversion system, with the average trade being 4 days. I trade only the ASX 300. I will be buying and selling in the opening auction. I am trying to design a liquidity filter / position size algorithm that will give me a good chance of getting filled with minimal affect on market price. These are my current thoughts:


// Initial liquidity filter
// Average turnover over a 30 day period is > $250K

Turnover = MA(close * Volume, 30);
Buy = Turnover > 250000;


// Position sizing

PositionSize = equity / 8; // Divide equity into 8 equal parcels.
MaxPositionSize = Turnover * 0.02; // Max position size is 2% of average turnover
if(MaxPositionSize < PositionSize) // Is maximum position size < parcel size?
	PositionSize = MaxPositionSize;


My current strategy raises a few questions:

1. One of the problems with the above is how Turnover is calculated. Because there are infrequent days where extreme volume occurs this can significantly distort the Turnover figure, which leads to taking position sizes higher than desired. One way I have considered to overcome this is remove any data point that > 2 standard devs from the average. Does this seem a good solution, or are there better ways to handle such situations?

2. Would 2% of average daily turnover be a good number and ensure there is minimal affect on price?

3. Considering my average trade length is 4 days is an average daily turnover over a period 30 days sensible? Since I will be selling very quickly, one thought is that maybe I should only look at the last 5 days as an average?

4. Are there better ways to do what I am trying to achieve? 

5. I did try another approach described by another forum which looked at: average daily turnover / average daily ticks = $per tick and then your maximum position size is a % of $per tick. In the case of the original poster, it was suggested 20%. I see the logic of the solution, however, in my opinion this approach has flaws, especially when dealing with stocks that only have a tick range of 2-3 per day, which a lot of <0.10 stocks do. What happens, is when you have a lower amount of ticks you are increase your % of the average daily turnover, to a maximum of 20% if there was only 1 tick.

Cheers


----------



## AlterEgo (24 January 2012)

rx2 said:


> 1. One of the problems with the above is how Turnover is calculated. Because there are infrequent days where extreme volume occurs this can significantly distort the Turnover figure, which leads to taking position sizes higher than desired. One way I have considered to overcome this is remove any data point that > 2 standard devs from the average. Does this seem a good solution, or are there better ways to handle such situations?




A simpler way is to use the *median *volume rather than the average.


----------



## banco (24 January 2012)

Couldn't you just increase the average turnover to give yourself a margin of safety?


----------



## tech/a (24 January 2012)

Answered your question on " The Chartist " as did others


----------



## Boggo (24 January 2012)

tech/a said:


> Answered your question on " The Chartist " as did others




He/she might be Irish - to be sure, to be sure


----------



## rx2 (24 January 2012)

tech/a said:


> Answered your question on " The Chartist " as did others




Thanks tech/a for your response... I just read it  Not Irish - but two different communities (one being a private forum). I am interested in reaching out to get a diverse set of thoughts and opinions.


----------



## rx2 (24 January 2012)

AlterEgo said:


> A simpler way is to use the *median *volume rather than the average.




Thanks AlterEgo - also crossed my mind using the Median. I have also just tried another method, which is a 5 bar moving average of volume*close - then take the lowest average across the last 30 days.

MATurnover = MA(V*C, 5);
MaxPosSize = LLV(MATurnover, 30) * 0.03;


----------

