## Give a range for turnover

Generate random portfolios whose turnover from the existing portfolio is in a given range.

## Preparation

This presumes that you can do basic random portfolio generation.  For example, that you have mastered “Very simple long-only”.

• Portfolio Probe

You need to have the Portfolio Probe package loaded into your R session:

`require(PortfolioProbe)`

If you don’t have Portfolio Probe, see “Demo or Buy”.

## Doing it

We generate 1000 random portfolios with a limit on turnover (buys plus sells):

```rpTurnover <- random.portfolio(1000, priceVector,
long.only=TRUE, gross=grossVal, port.size=10,
existing=curPortfol, turnover=c(21000, 32000))```

We are forcing the turnover to be between 21,000 and 32,000 (dollars).

Remember that each time you execute this command, you get a different set of portfolios.

## Explanation

The `turnover` argument takes a numeric vector of length two.  The numbers are in currency units, and give the lower and upper limits on how much trading (buys plus sells) can take place.

You can give `turnover` a single number, in which case that will be the upper bound — the lower bound is understood to be zero.

## Further details

It is possible to get the random trades rather than the random portfolios.  All you need to do is use the `out.trade` argument:

```ranTradeTurnover <- random.portfolio(1000, priceVector,
long.only=TRUE, gross=grossVal, port.size=10,
existing=curPortfol, turnover=c(21000, 32000),

This is precisely the same as the call that created `rpTurnover` except for the addition of “`out.trade=TRUE`“.

We can get the gross valuation of the random trades (that is, the turnover) with the command:

```ranValTurnover <- valuation(ranTradeTurnover,
priceVector, collapse=TRUE)```

The minimum and maximum of the turnover are:

```> range(ranValTurnover)
[1] 21000.79 31998.76```

We can see that turnover satisfies the constraints that we set by using the `trade.distance` function.  First we create a vector of the value of the turnover for each random portfolio:

```rpTurnTurn <- sapply(rpTurnover, function(x)
```> range(rpTurnTurn)