GROWTH Factor Composite - Feedback requested please

To contrast my VALUE Factor Composite, I've created this Growth Factor Composite, hoping it will be somewhat uncorrelated with my Value one. The Growth factors are based on FactSet Fundamentals and Estimates datasets, as well as a bit of price momentum, so it does naturally have some exposure to the Momentum Risk factor.

It uses the default slippage/commission model, and re-balances right at the close, trying to simulate getting filled at the close auction price (when there's highest volume and no spread, e.g. using MOC orders). I used Thomas' odd/even quarters cross-validation NB when developing --> testing --> accepting/rejecting factor, with the intent to try to avoid overfitting (still, I'm sure there's some training creep in there). I'm also wary of the 'illusion' of the 'three Sharpe Ratio' strategy as discussed in this AQR paper.

Please let me know what you think. I'm hoping to do a QUALITY Factors Composite next.

30
10 responses

And here's the alpha decay analysis NB.

11

Here's the OOS performance during the hold out period. I find it very suspicious that it starts to flat line right about the time the hold out period starts... At least it's still (marginally) profitable (could be just random walk). I'm trying to find a growth factor to benchmark against - if anyone know of one I'd be all ears.

4

Joakim, I just noticed on the OOS tearsheet in the transaction time distribution that it reflects that it is trading at market open instead of market close as you intended. Probably just a minor oversight.

Haha, good catch @James! However, that was actually intentional. Before submitting it to the contest, the only change I made was to rebalance at the open instead of the close, hoping I'll squeeze out a slightly higher score that way. Not really in the spirit of the new guidelines, but hey I can't really turn off slippage in the contest either, so my ego and I rationalized it as being ok (both backtests above use default trading costs). I do wish the contest will get updated to be better aligned with the new guidelines, including getting in and out of positions frictionless at the close price.

For contest purposes, perhaps that's the right course to take, I guess, haha!

Hi @Joakim,

Thanks for sharing, great alpha decay! Are you using limit orders with stop-loss and profit targets?

Best

Hi @Marc,

Thanks! 99% of the time I use the Q Optimize API with normalized TargetWeights, which was also the case for all these factors composites I did. I never use limit orders or stop-loss/profit-targets. That to me is a great way of fooling myself into thinking I’ve created a great scalping/liquidity providing strategy that looks great in simulation, especially if it’s on a low liquid universe.

That said, I’m probably fooling myself in a number of other ways that I’m not aware of unfortunately.

@Joakim I see your point, thanks!

Hi @Joakim,

I have one more doubt. The daily turnover is 15.6% and you mentioned:

re-balances right at the close, trying to simulate getting filled at the close auction price (when there's highest volume and no spread, e.g. using MOC orders)

Do you trade only once per day and right before the market closes?

Hi @Marc,

Yes correct, only once per day, and for the original one it was right at the close (i.e. simulating MOC orders). For the OOS I changed it to right at the open instead, simulating MOO orders.

    schedule_function(func=rebalance,
date_rule=date_rules.every_day(),
time_rule=time_rules.market_close(),