Hi Thomas -
Regarding trading factors on different time-scales: This is indeed difficult and something I'm currently working on, so not a solved problem. Use your own ingenuity to come up with something!
I'm curious why you are working in isolation (at least with respect to the broad Q user base)? And not contributing to the discussion initiated by Joakim? Or are you just trying to get to the point where you can put something out as a potential direction in solving the problem within the context of Quantopian? I say this constructively, since you have access to a global pool of clever users, and so if you are not tapping into that resource, it may not be optimal. This is why I tend to publish pretty much everything I do here on the forum.
I'd posted a suggestion that the the problem is analogous to trading a set of ETFs, right? You have the folks running the ETFs doing whatever they do on whatever time scales they see fit, and another layer of asset allocation determining how much weight to apply to each ETF at any given point in time.
My read is that you may need to kinda start with a blank sheet of paper and do some architecting so that the Q workflow/API supports trading portfolios (i.e. factors), in analogy with trading ETFs.
One thing to consider is that my strong sense is that the alpha combination step should be done in before_trading_start
(assuming that you don't see a compelling need to support intra-day alpha combination, which would call for a compute window during the trading day). I've posted a hacked way of getting the data into 'before_trading_start` on https://www.quantopian.com/posts/alpha-combination-via-clustering; this could definitely be improved with some changes to the API (e.g. the ability to output data from Pipeline into a Pandas MultiIndex directly).
The other approach, of course, would be to sort out a remuneration scheme for factors instead of full-up algos. Then all of this load would be off of users, and they could just focus on the alpha discovery part. This would have the added advantage that you could apply more scalable computing power to the alpha combination step, which you are unable to provide to the masses. Alternatively, you could consider ways for users to submit sets of algos, so that each algo could trade on its characteristic time scale, and then you would deal with the alpha combination problem, including how to optimize the trading with respect to disparate time scales (maybe this is what you are working on?). This might be the easiest in terms of changes to the API, but users would need an API to be able to submit the set of algos, and get back a result, the contests would need to support this approach, etc.--a paradigm shift.
You asked for my ingenuity...