Dave
Look up SetPositionSize function
*SetPositionSize( size, method )
*
/method/ (ARRAY) defines how 'size' is interpreted
* spsValue (=1) - dollar value of size (as in previous versions)
* spsPercentOfEquity (=2) - size expressed as percent of
portfolio-level equity (size must be from ..100 (for regular
accounts) or .1000 for margin accounts)
* spsShares (=4) - size expressed in shares/contracts (size must be
> 0 )
* spsPercentOfPosition (=3) - size expressed as percent of currently
open position (for SCALING IN and SCALING OUT ONLY)
* spsNoChange (=0) - don't change previously set size for given bar
the second option allows a % of portfolio-level equity, which (as far as
I know) works out position size from the current portfolio equity during
in a backtest.
Some simple maths will allow you to convert this to trade size based on
risking a percent of portfolio equity per trade.
For any trade you want
TradeSize = RiskPct*Equity/StopSize
re-arrange it a bit
TradeSize = RiskPct/StopSize*Equity
therefore the Percent of Equity for the trade is RiskPct/StopSize
So use this in the SetPostionSize call. ie
SetPositionSize(RiskPct/StopSize,spsPercentOfEquity);
Personally I don't believe in compounding profits in backtesting, so
don't test this way myself, but that's another arguement.
Brenton
*
*
dbwyatt_1999 wrote:
Thanks James, the issue I have is not with calculating risk; it's the
fact that I need to use the custom Phase 2 backtester to get the
portfolio Equity value of each bar and most of my system logic
including my stop price calculations are currently in the regular
Phase 1 backtester code. Once the backtester moves from Phase 1 to
Phase 2, my Phase 2 custom backtester code does not have access to my
array variables calculated in Phase 1 (unless I'm not doing something
correctly). I'm trying to figure out the easiest way to get my stop
prices calculated in Phase 1 into my Phase 2 custom backtester code so
that I can calculate a position size based on a percentage of the
portfolio equity and the initial risk of each trade.
I could be going about this all wrong, but my goal is simply to
calculate a quantity (i.e. number of futures contracts) for each trade
based on a percentage of the current portfolio equity divided by the
trade risk (i.e. abs(EntryPrice - StopPrice)*PointValue*TickSize).
Regards,
David
--- In [email protected] <mailto:amibroker%40yahoogroups.com>,
James <jamesmemp...@...> wrote:
>
> David,
>
> I haven't gotten to the point of selecting position size, however,
if you know your entry price and initial stop, you can use something
like the following to determine initial dollar risk:
> Prange = PHighPrice - PLowPrice;
> MaxLoss = PointValue* PRange;
> MaxLossLimit = Optimize("MaxLoss", 1000, 150, 4000, 25);
>
> In this case I am going long at PhighPrice with an initial stop a
PLowPrice and not taking the trade if the MaxLoss exceeds a certain
level. From this point you could calculate the MaxLoss as a % of
equity. Does this help?
>
> James
>
>
>
>
> ________________________________
> From: dbwyatt_1999 <dbw...@...>
> To: [email protected] <mailto:amibroker%40yahoogroups.com>
> Sent: Saturday, May 30, 2009 7:39:47 AM
> Subject: [amibroker] PositionSize based on Equity and Trade Risk
>
>
>
>
>
> I know setting PositionSize based on Equity and Trade Risk has been
the topic of numerous threads and writeups, but I'm missing some
understanding. I'm backtesting a portfolio of futures contracts and
would like to set the Position size of each trade based on each
trade's risk (i.e. abs(entryPrice - stopPrice)) and a percent of the
current portfolio Equity value. I understand that to get the current
portfolio Equity, I need to use the custom backtester. The custom
backtester also gives me access to all the data I need to calculate a
new PosSize except my stopPrice values.
>
> What is the easiest way to access my backtester Phase 1 stopPrice
array in the custom Phase 2 backtester for each trade so that I can
calculate a new PosSize? Using AddToComposite( ) and Foreign() does
not seem like an option because I want my individual stop values for
each instrument, not a portfolio composite of all stop values. Or
maybe I would have to create a separate composite for each instrument.
Or do I have to resort to something like writing and reading files or
developing a custom DLL to store the stopPrices between the backtester
Phase 1 and the custom backtester Phase 2? Hopefully, I'm just not
understanding something and there is an easier way. I would think that
accessing Phase 1 backtester variables in Phase 2 would be pretty
common; especially for calculating custom metrics.
>
> Thanks for any suggestions or insights.
>
> Regards,
>
> David
>
__________ Information from ESET NOD32 Antivirus, version of virus
signature database 4117 (20090530) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com
__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4117 (20090530) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com