Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
set_universe question

How can we tell when the universe is going to change?

Say I have portfolio of 10 positions that I grabbed from the universe of 40. When the universe changes and I call data.keys(), I am returned the new universe of 40 stocks and then also those 10 that I already have positions in (unless they overlap). Is there a way to tell when the universe is going to change so that I can exit all the positions that will not be contained in the next universe? Or, is there a way to have data.keys() not include those securities that I already have positions in when the universe changes?

The main problem is that data.keys() continues to grow each time the universe is updated and I would like it to stay around the same size.

Thanks,

Jorge

5 responses

Hello Jorge,

That's a great question. Unfortunately we don't have a great progammatic way to signal that the universe is being updated. I can tell you that it happens on the first trading day of a quarter, but that's not exactly what you're looking for. That means you could sell everything at the end of the quarter and then re-buy on the first of the quarter. But that's obviously not a great solution.

You've pointed out something we need to implement, I think. Maybe someone else will suggest a better workaround.

Dan

Disclaimer

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances.

Hi Dan,

Ya, I think that'd be a great feature to add since the reason to use universe it to trade on a set of stocks that fit a certain criteria. If a stock no longer does I wouldn't want to be forced into including it. Maybe have a separate function like data.universe_keys() that only returns the most recent universe based on the criteria, while data.keys() still returns all securities in the whole universe?

Also, I had another question, is there some way to get a list of every security that is currently supported by Quantopian? maybe in some organized way by industry and sub-industry?

Thanks,

Jorge

Hi Dan,

You mentioned that I could sell on the last day in a quarter then buy on the first of the next. Is there a way to tell what day it is other than keeping a day count? Say I wanted to compare the close of a Friday and the open the following Monday? Is there an easy way to do that?

Thanks,

Jorge

Hello Jorge,

There is no super-easy way to do it, but it's not super-hard either.

What you need to do is grab the datetime on a stock trade at the start of your handle_data.

data[stock].datetime

You can evaluate that and see if it's the last day in the quarter using some functions from Python's datetime. I'm hoping that we get delorean available soon which should make that less tedious.

If you're looking to evaluate subsequent Fridays, or Monday to Friday, then you'd want to create a batch transform that collects your trailing window, and do the datetime evaluations on the elements in the batch.

Dan

Hi,

The code here is for the month, but you could easily adapt it to be calendar quarters: https://www.quantopian.com/posts/dca-with-etfs-need-some-assistance-please

thanks,
fawce

Disclaimer

The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances.