Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Can I calculate SMA on Sectors in the Before Trading Starts function?

I'm trying to do a SMA algorithm on sectors, but once the sector index experiences a crossover, I want to actually trade the top 2 stocks in the sector. For right now, I am just using a single sector, but plan to expand it to pick the currently bullish sectors to decide where I want to actively trade.

def initialize(context):  
    context.investment_size = (context.portfolio.cash / 2.0)  
    context.stop_loss_pct = 0.995  
    context.limit = 2  
    context.sector = symbol('XLK')  
def before_trading_start(context):  
#need help with the 50 and 200 SMA's for the following lines  
    tech_shortMA = context.sector  
    tech_longMA = context.sector  
    if tech_shortMA > tech_longMA:  
        context.fundamentals = get_fundamentals(  
            query(  
                fundamentals.asset_classification.morningstar_sector_code  
            )  
            .filter(  
                fundamentals.asset_classification.morningstar_sector_code == 311  
            )  
            .order_by(  
                fundamentals.valuation.market_cap.desc()  
            )  
            .limit(context.limit)  
        )  
    update_universe(context.fundamentals.columns.values)  
    record(Sec_ShortMA=tech_shortMA, Sec_LongMA=tech_longMA)  
2 responses

@Mark

To get the SMA of a security you'll need pricing data, that is not made available in before_trading_start in the form of the data variable or the history() function. That being said it may be a better idea long term do this calculation in a custom function, where you can use history, that way if/when you find that you want to try a different strategy for selecting a sector it will be more modular and scale better. Plus you can always use 'schedule_function()` and then you can change what time/day it computes the SMA and try those different parameters out. When you have a good algo idea like this it's important to think how you can scale it long term, and code with that idea in mind.

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.

@James

I figured the lack of the data variable was the issue, but didn't know if I was missing something. I'll go your route with it.

Thanks!