So, I guess I should probably make some suggestions of my own first. I've been thinking about this and here's what I got so far.
Firstly, we can consider every asset in terms of it's expected returns, volatility and correlation to every other asset. Cash is just another asset that has 0 expected return, 0 volatility and a measurable correlation to the other assets.
Secondly, every trade should have a defined entry and exit signal. For these event-based algorithms, the entry signal would be when you detect the event. For ranking algorithms the exit signal is a time limit. You've owned the security for a month, so time to rebalance, right? But other exit signals might be a significant enough reversal, for example.
Putting that together, you could start out with an all cash portfolio. You want to maximize your returns given some maximum tolerance for volatility. So, when you detect an entry event, you find an optimal weighting for the new position, given the current positions (including cash), such that you maximize expected returns given your tolerance for volatilty. The volatilities and correlations would be inputs and I think you could express it as a linear or quadratic programming problem.
Then when you detect an exit signal, you would probably have to rebalance the existing positions to make sure your volatility tolerance is not violated.
I guess a question is whether, when you're adding the new position, you should consider rebalancing the other positions or only consider the problem in terms of adding the new position. Does it make sense to add to a position in the middle of period of being held, or should size be set only at the beginning. With rankings, you can always rebalance to the best possible positions right now, but an event-driven position might not be worth as much 10 days into holding it, right?
I guess another problem is estimating the expected return for a position. How do you do it? Do you base it on historical returns for events on securities with similar volatility? Is there another cost function you could use instead?
Anyway, just some food for thought...