Very nice Brenton. Thank you. At first glance this looks like the best way to go. It seems to work pretty well although I see a few of my trade losses are bigger than my risk percentage. I'll need to hand calculate a few trades to figure out what's going on. More than likely it's probably something simple like a round off errors.
Best Regards, David --- In [email protected], Brenton Hill <bphill0...@...> wrote: > > 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 <jamesmemphis@> 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 <dbw451@> > > > 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 >
