Hi All,
I thought it would be beneficial to reach out to the community for some good fashion constructive feedback. I've attached a tear sheet of an algo currently running in the daily contest for almost 1 month now.
Hi All,
I thought it would be beneficial to reach out to the community for some good fashion constructive feedback. I've attached a tear sheet of an algo currently running in the daily contest for almost 1 month now.
I'd see what happens if you try to bump up the number of securities in the portfolio to 100 (or even a lot more).
You might also try trading earlier in the day. If you are using Pipeline, the data are daily, and so by trading late in the day, you are losing a day, in effect. I've been using 10:30 am, and it seems to be o.k.
You could have a look at https://www.quantopian.com/posts/tearsheet-feedback-thread and the webinar https://youtu.be/tGnLqg_5TBk. In the webinar, Jess makes a big deal out of not having consistent exposure to any of the Q risk factors, even if you meet the contest/fund criteria. I'm not sure what to make of the advice. Basically, I think she was saying that on average, she really wants to see zero exposure to the risk factors. You could run a tear sheet that includes the risk exposure analysis, to see what's going on in your algo.
If you are worried about over-fitting, you could run your algo starting in 2010 (if the data will support it), and see what things look like. If it completely falls apart, there could be a problem.
Hi Daniel,
Here's my feedback, mostly agreeing with @Grant:
Also, it doesn't look like your notebook completed, as there's a lot of data missing from the tearsheet (the round_trips=True stuff, and the risk exposure stuff).
Just my opinion really, feel free to disagree. Best of luck! :)
@ Grant and @ Joakim , thank you both for your thoughts. I will definitely take each into consideration when modifying the algo.
As for the incomplete tearsheet, I will look into why data was missing, especially from the risk exposure stuff as this seems like where I need to focus more on.
In addition, I can't help but think that the strategy in my head is not what my objective is exploiting in terms of --- objective = opt.MaximizeAlpha (pipeline_data). I can't seem to figure out how to take the logic in pipeline and use that as my alpha factor.
Wow! You have a score of 0.705 with only one month of cumulative returns? That’s quite impressive in my book. If the first month is indicative of how well your strategy will do in the next two months (and rolling 3 months after that) you should do quite well!
Are you able to turn your logic into a ranking scheme? The higher the better for longs; the lower the better for shorts. Then pass that ‘factor’ to opt.MaximizeAlpha(). Then the Optimizer knows how much weight to assign to each stock, subject to whatever risk constraint you’ve assigned to the Optimizer.
Very impressive! Especially on the long side (almost unbelievable).
I'd say the main 'issue' with it is that it's super concentrated. If it scales to a larger number of positions, and it continues to perform well OOS, I'd say you're potentially sitting on a winner.
Even if it doesn't scale (some models only works on a small universe of stocks) it may do quite well in the contest, as long as it's shown to hold up fine in OOS. For an allocation however, at least in the immediate short term, I don't believe Q has much appetite for high concentration risk strategies (I could be wrong though, and I don't want to speak for them, but that's my impression anyway).
You are correct, it is very concentrated with +- 70 positions. This is one of my take aways and see if i can increase the number of longs/shorts to at least 100 -150 to start. In addition, I am going to look to see the effects of rebalancing earlier in the day, something like 10 or 10:30 am EST.
In regards to turning my factor into a ranking scheme, that is something I have tried to do but need improving as it is more technical than fundamental based. My goal would be to add in additional technical custom factors and see if those can help in any way as it doesn't use many to begin with :)
Fair enough, sounds like a good plan.
Just curious, does it rebalance weekly or bi-weekly, or something else?
It actually rebalances twice a week, at the start and end. My thoughts were that I wanted to wait a few days in between rebalances to make sure my technical signal held true or broke down between Monday and Friday. Also, I did this because I was coming up short in the Turnover Constraint (< 5%) . I have thought about implementing a shorter version of a hold out period where I would say two consecutive days to confirm the signal but I have not been able to code it properly (still learning how everything works).
Also, I use:
set_slippage(slippage.FixedBasisPointsSlippage(basis_points=5, volume_limit=0.1))
set_commission(commission.PerShare(cost=0.001, min_trade_cost=0))
Before this I was under the impression that contest entries would automatically have any slippage, commission settings overridden to defaults. Congratulations so far. Yeah there can be a lot of alpha with 70 stocks while doubling it ventures into far weaker signals, a common dilemma.
@ Blue thank you - To be honest I don't know if slippage/commission settings are overridden or not. As a best practice, I try to use those settings in every algo just to make sure I am not overly optimistic. I'm sure I saw those settings used in previous threads and just stuck with them thinking they were the default settings(not sure if they are 100 % accurate).
I'm currently exploring other areas where I can scale the positions from 70 to 100 + other than adjusting my position size by .05 % . Also, I am trying to figure out a ranking scheme I can use on the technical indicator which can then be passed along in Maximize Alpha constraint because I don't think I have it coded as I imagine in my head lol but that's probably due to my amature python skills lol.