[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: PairTrading on Amibroker


  • Date: Sat, 16 Jan 2010 01:09:45 -0000
  • From: "bs2167" <bs2167@xxxxxxxxx>
  • Subject: [amibroker] Re: PairTrading on Amibroker

PureBytes Links

Trading Reference Links

Does anyone have ideas on how to make this scaleable to a large number of pairs (hundreds)?  Setting up a few hundred watchlists and hardcoding symbols and hedge ratios doesn't seem practical.  Would it be possible to have AB read a file that includes a list with the two symbols and hedge ratio for each pair...or something like that?  

Would greatly appreciate any ideas that will save me from having to code up a pairs backtester in VBA!  Thanks

--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> Hello,
> 
> Marcin is solving strictly technical problems.
> So he gave you technical answer, without actually
> taking care if it is philosophically correct way to do things.
> 
> Yes if you are using artificial price, they won't work without
> turning bounds checking off, but that's not the preferred way to go.
> Preferred way is not to create illusion (i.e. artificial prices)
> but to reproduce actual trading.
> 
> So, instead of creating artificial spread symbols,
> you should just go long (for example) 500 shares of symbol A
> and short 40 shares of symbol B.
> 
> And it is very easy to do and was explained on this list MANY times.
> 
> YourSystemEntrySignal = ....
> YourSystemExitSignal = ....
> 
> if( Name() == "SymbolA" )
> {
>   Buy = YourSystemEntrySignal;
>   Sell = YourSystemExitSignal;
> 
>    SetPositionSize( 500, spsShares );
> }
> 
> if( Name() == "SymbolB" )
> {
>   Short = YourSystemEntrySignal;
>   Cover = YourSystemExitSignal;
> 
>    SetPositionSize( 40, spsShares );
> }
> 
> Note that you are entering LONG trade on A and SHORT trade on B using same signal.
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "janhausd" <janhaus@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Friday, January 30, 2009 7:18 PM
> Subject: [amibroker] Re: PairTrading on Amibroker
> 
> 
> > Hi Tomasz,
> > 
> > I had sent several emails to Ami support, and this advice was included
> > on one of the responses. Regarding the pairs trading, perhaps I should
> > explain what I am doing a bit better, it's a spread trade, which
> > involves normalizing two instruments based on some formula. What I
> > actually am doing is creating a formula, for example, 5 * SymbolA -
> > 0.4 * SymbolB = spread price. Buy @ this spread price (buy A, sell B)
> > when condition Z is met, sell (sell A, buy B) when condition Y is met.
> > I had thought most ppl trade pairs this way, but perhaps this isn't
> > the case.
> > 
> > Like Angelo, I couldn't figure out a good way to represent the
> > entering one symbol and exiting the other in backtesting, so I used
> > foreign() to create the synthetic, and based the buy/sells and
> > buy/sell prices on the synthetic. When I backtest, I found that both
> > of these options are necessary for me otherwise 1. the synthetic price
> > I generate won't work since it may be beyond the bounds of the HL
> > range, and when I get in at some synthetic price, i.e. 300, and if
> > ruinstop isn't disabled, I get stopped out at price 0 or something
> > very small like that, perhaps due to data holes.
> > 
> > I had sent an email to support asking for the best way to go about
> > backtesting such a spread strategy, but did not receive any response.
> > If you have any better suggestions, I've eager to hear them!
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@> wrote:
> >>
> >> Hello,
> >> 
> >> It's very important to include
> >> > SetOption("priceBoundChecking",False);
> >> > SetOption("DisableRuinStop",True);
> >> 
> >> WRONG!
> >> 
> >> This should never be used for pairs trading.
> >> If you need that it means that you code is wrong
> >> (you are attempting to set prices outside H-L range which
> >> is huge mistake).
> >> 
> >> Pairs trading should always respect normal prices
> >> and you should use Foreign only for calculations
> >> and NEVER for setting actual trade price entry.
> >> 
> >> 
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message ----- 
> >> From: "janhausd" <janhaus@>
> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> Sent: Friday, January 30, 2009 5:11 PM
> >> Subject: [amibroker] Re: PairTrading on Amibroker
> >> 
> >> 
> >> > I'm looking for the same thing, Angelo, I wish there was more inbuilt
> >> > support in Ami for pair trading/testing  :) The way I'm dealing with
> >> > it for now is to utilize foreign() calls, which can be agonizingly
> >> > slow for large amounts of data, and test the strategy based on the
> >> > synthetic/pair, where you enter/exit based on the synthetic price and
> >> > all statistics based on that. Also, It's very important to include
> >> > SetOption("priceBoundChecking",False);
> >> > SetOption("DisableRuinStop",True);
> >> > 
> >> > Without disableruinstop, it seems anytime when there's enough data to
> >> > enter/exit one leg but no data at the same time for the other security
> >> > you hedge with, the backtester will kick you out of the position with
> >> > some ridiculous price, and your results will be entirely incorrect.
> >> > Without priceboundchecking, you may not be able to generate the
> >> > synthetic pair value if the pricing is off. It took several emails to
> >> > Ami support and browsing for posts here for me to figure out these two
> >> > options were necessary for backtesting my setup, wish I'd known
> >> > earlier :) If you or anybody else has any better ideas, I'm all up for
> >> > it...
> >> > 
> >> > --- In amibroker@xxxxxxxxxxxxxxx, "ang_60" <ima_cons@> wrote:
> >> >>
> >> >> --- In amibroker@xxxxxxxxxxxxxxx, "janhausd" <janhaus@> wrote:
> >> >> >
> >> >> > Hi Angelo,
> >> >> > 
> >> >> > I have in fact just recently contacted Herman regarding this
> > subject,
> >> >> > since running that code on my data resulted in mismatching
> >> >> > correlations, where Correl(A,B) was not equal to Correl(B,A) due to
> >> >> > the Foreign() function and data holes between A and B. The
> > result is
> >> >> > actually somewhat similar to the the picture herman posted in that
> >> >> > link, where you see that the correlation between AAPL,ALTR is
> > -0.624,
> >> >> > whereas ALTR,AAPL is 0.421, except when I ran the code, all of the
> >> >> > pairs mismatched and not just the ones on the outer edge of the
> >> >> > correlation square. Anyway, if you have data without mismatching
> >> >> > times, this shouldn't be a problem :)
> >> >> > 
> >> >> 
> >> >> 
> >> >> Thanks jan,
> >> >> 
> >> >> this problem is clear to me now.
> >> >> 
> >> >> I'm on my way to build a pair system on amibroker, using as a
> > template
> >> >> the code posted by TJ on this list some time ago.
> >> >> 
> >> >> My code is pretty simple and open a position for symbol1, and -
> > at the
> >> >> same time - an opposite position for symbol2.
> >> >> 
> >> >> Of course ,in the report this trade is counted as "two" and this
> > makes
> >> >> unuseful of all the statistics based on the total nauber of trades
> >> >> (e.g. percent winners... profit per trade... ).
> >> >> 
> >> >> As anyone thought of a way of telling Amibroker that - in this
> >> >> particular case - the 2 trades representing both leg of the pair
> >> >> should be counted as one?
> >> >>
> >> > 
> >> > 
> >> > 
> >> > ------------------------------------
> >> > 
> >> > **** IMPORTANT ****
> >> > This group is for the discussion between users only.
> >> > This is *NOT* technical support channel.
> >> > 
> >> > *********************
> >> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
> > directly to 
> >> > SUPPORT {at} amibroker.com
> >> > *********************
> >> > 
> >> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >> > http://www.amibroker.com/devlog/
> >> > 
> >> > For other support material please check also:
> >> > http://www.amibroker.com/support.html
> >> > 
> >> > *********************************
> >> > Yahoo! Groups Links
> >> > 
> >> > 
> >> >
> >>
> > 
> > 
> > 
> > ------------------------------------
> > 
> > **** IMPORTANT ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> > 
> > *********************
> > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
> > SUPPORT {at} amibroker.com
> > *********************
> > 
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> > 
> > For other support material please check also:
> > http://www.amibroker.com/support.html
> > 
> > *********************************
> > Yahoo! Groups Links
> > 
> > 
> >
>




------------------------------------

**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to 
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    amibroker-digest@xxxxxxxxxxxxxxx 
    amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/