Gamestudio Links
Zorro Links
Newest Posts
Blobsculptor tools and objects download here
by NeoDumont. 03/28/24 03:01
Issue with Multi-Core WFO Training
by aliswee. 03/24/24 20:20
Why Zorro supports up to 72 cores?
by Edgar_Herrera. 03/23/24 21:41
Zorro Trader GPT
by TipmyPip. 03/06/24 09:27
VSCode instead of SED
by 3run. 03/01/24 19:06
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (VoroneTZ, monk12, Quad), 829 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
sakolin, rajesh7827, juergen_wue, NITRO_FOREVER, jack0roses
19043 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
How to exclude individual asset in Lookback period from trading? #475390
12/05/18 19:48
12/05/18 19:48
Joined: Feb 2017
Posts: 369
D
Dalla Offline OP
Senior Member
Dalla  Offline OP
Senior Member
D

Joined: Feb 2017
Posts: 369
I have a strategy that trades momentum over a stock universe of some ~200 stocks.
It trades daily bars and has a one year lookback. Some of the stocks have been listed longer than others, e.g. if I run a backtest from 2000, some of the stocks was not listed until 2005, 2010 etc.

My current problem is that sometimes after sorting stocks by momentum, trades are skipped because the one or more of the selected stocks are in a lookback. That is , they have a high momentum, but they were listed less than a year ago.

I have tried adding some
Code:
if(is(LOOKBACK))

logic to the script, but it doesn´t seem to help. I guess this LOOKBACK variable is for the entire script, and not per asset? Can I somehow exclude assets that are still in their lookback period from my momentum calculations?

Code:
//Find composite momentum
		while(loop(Assets))
		{
			asset(Loop1);
			exitLong();
			
                        //This is my attempt to exclude stocks in lookback
			if(is(LOOKBACK)) {
				printf("nCurrently in lookback %s", Asset);
				asset_num++;
				continue;
			}
			
			var mom12 = (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_12_MONTH)) / priceClose(TRADING_DAYS_12_MONTH);
			var mom6 =  (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_6_MONTH )) / priceClose(TRADING_DAYS_6_MONTH);
			var mom3 =  (priceClose(TRADING_DAYS_1_MONTH) - priceClose(TRADING_DAYS_3_MONTH )) / priceClose(TRADING_DAYS_3_MONTH);
			
			var compositeMomentum = (mom12+mom6+mom3)/3.;
			Returns[asset_num] = compositeMomentum;
			asset_num++;
		}
		
		
		//Capital = 100000;		
		//Margin = Capital+WinTotal-LossTotal;
		
		// sort returns lowest to highest
		int* idx = sortIdx(Returns, -asset_num);
		sortData(Returns, -asset_num);
		
		int i, j = 0;
		for(; j < 10; i++)
		{
			asset(Assets[idx[i]]);
			if (priceClose(0) == 0) {
				printf("nPrice is 0 for %s, skipping", Asset);
				continue;
			}

			var size = round(10000.0/priceClose(0));
			printf("nBuying %f %s at %f", size, Asset, priceClose(0));
			enterLong(size);
			j++;
		}
		printf("n--------------------------");


Re: How to exclude individual asset in Lookback period from trading? [Re: Dalla] #475392
12/05/18 21:26
12/05/18 21:26
Joined: Jun 2013
Posts: 1,609
D
DdlV Offline
Serious User
DdlV  Offline
Serious User
D

Joined: Jun 2013
Posts: 1,609
Hi Dalla. You may be having some confusion regarding LOOKBACK? LOOKBACK means the current iteration of the script is still in the lookback phase - i.e., in a lookback bar before active bars where trading can happen.

When you say an Asset is "in lookback", meaning there isn't enough price data yet, you could look at priceClose(<OffsetAsFarBackAsYouNeed>) and if 0 exclude the Asset that way?

HTH.

Re: How to exclude individual asset in Lookback period from trading? [Re: DdlV] #475396
12/06/18 06:43
12/06/18 06:43
Joined: Feb 2017
Posts: 369
D
Dalla Offline OP
Senior Member
Dalla  Offline OP
Senior Member
D

Joined: Feb 2017
Posts: 369
I don't think I'm confused. The message I'm seeing in the log occationally when entering a trade is
Code:
[ABB::L] Skipped (outside bars 523..3073)



Looking through the manual regarding these messages
"The trade was not entered because trading was disabled on that bar, for instance due to SKIP flags, in the LookBack period, inside a TimeFrame, or during weekends or holidays." The only thing that applies here is the lookback.

I tested your solution since it would make sense, but unfortunatly it doesn´t help.

Re: How to exclude individual asset in Lookback period from trading? [Re: Dalla] #475402
12/06/18 17:18
12/06/18 17:18
Joined: Jun 2013
Posts: 1,609
D
DdlV Offline
Serious User
DdlV  Offline
Serious User
D

Joined: Jun 2013
Posts: 1,609
Well... LOOKBACK applies to the Bar, not the Asset(s). run() is executed every Bar. If the current Bar is in the Lookback period, LOOKBACK will be set, and trade entry attempts will fail with that message. This is all correct operation - trading doesn't start until after the Lookback period. Correct Zorro operation - your script's operation is a differnt issue laugh - you may not want your script to try to enter trades during the Lookback period.

But if you're seeing that message on a Bar after the Lookback period, then something else is causing it...

HTH.

Re: How to exclude individual asset in Lookback period from trading? [Re: DdlV] #475424
12/07/18 13:44
12/07/18 13:44
Joined: Feb 2017
Posts: 369
D
Dalla Offline OP
Senior Member
Dalla  Offline OP
Senior Member
D

Joined: Feb 2017
Posts: 369
The problem is indeed that I'm seeing this message only for certain assets, after the lookback period, when other assets are succesfully traded.

Re: How to exclude individual asset in Lookback period from trading? [Re: Dalla] #475429
12/07/18 14:43
12/07/18 14:43
Joined: Jul 2000
Posts: 27,977
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,977
Frankfurt
Check the bar number. You can see in the log at which bar the lookback period ends, so you can verify if the skipping is due to the lookback period, or due to TimeFrame or other reasons.

Re: How to exclude individual asset in Lookback period from trading? [Re: jcl] #476569
03/10/19 19:46
03/10/19 19:46
Joined: Feb 2017
Posts: 369
D
Dalla Offline OP
Senior Member
Dalla  Offline OP
Senior Member
D

Joined: Feb 2017
Posts: 369
Reviving this old thread, since I'm still having this issue and still not sure how to solve it. But I've found out why it happens:
I have a universe of ~ 300 equities. I have history from 1995 or so, but some of the stocks in the universe have been listed between 1995 and now.

I have Lookback = 252 in my script.

Let's take the example of ABB which I used above.
The strategy starts at bar 0, naturally.
But he history of the ABB asset itself starts at bar 271.

Let's say that my strategy gives me the signal to buy ABB at bar 400.
We are now outside the strategys Lookback period, this will still give me the message
[ABB::L] Skipped (outside bars 523..3073)
Makes sense I guess.

So the question is, how can I determine that I'm outside the valid bar range for a specific asset?

Re: How to exclude individual asset in Lookback period from trading? [Re: Dalla] #476571
03/11/19 06:19
03/11/19 06:19
Joined: Jul 2000
Posts: 27,977
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,977
Frankfurt
You can use the suspended() function.

Re: How to exclude individual asset in Lookback period from trading? [Re: jcl] #476578
03/11/19 11:40
03/11/19 11:40
Joined: Feb 2017
Posts: 369
D
Dalla Offline OP
Senior Member
Dalla  Offline OP
Senior Member
D

Joined: Feb 2017
Posts: 369
Exactly what I was looking for, thanks!


Moderated by  Petra 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1