Back to Community
Why did my Algorithm Behave so Differently between Minute and Day data?
# Put any initialization logic here.  The context object will be passed to  
# the other methods in your algorithm.  
def initialize(context):  
    schedule_function(buy, date_rules.every_day(), time_rules.market_open(minutes=30))  
    schedule_function(sell, date_rules.every_day(), time_rules.market_open(hours=1))  
    context.security=symbol('AAPL')  
def buy(context, data):  
    current_price=data[context.security].price  
    cash=context.portfolio.cash  
    shares=int(cash/current_price)  
    order(context.security, shares)  
def sell(context, data):  
    current_shares=context.portfolio.positions[context.security].amount  
    order(context.security, (current_shares*-1))

# Will be called on every trade event for the securities you specify.  
def handle_data(context, data):  
    # Implement your algorithm logic here.

    # data[sid(X)] holds the trade event data for that security.  
    # context.portfolio holds the current portfolio state.

    # Place orders with the order(SID, amount) method.

    # TODO: implement your own logic here.  
    #order(sid(24), 50)  
    pass

Over 4.5 years, this algorithm tested daily made 75%, tested minute by minute lost 71%. I was using this algorithm to learn the schedule_function. I tried to buy AAPL every day at 9:30 and sell it at 10:30. The minute data worked as expected. Please help me understand why the day data worked so differently. I have attached that backtest.

Clone Algorithm
2
Loading...
Backtest from to with initial capital
Total Returns
--
Alpha
--
Beta
--
Sharpe
--
Sortino
--
Max Drawdown
--
Benchmark Returns
--
Volatility
--
Returns 1 Month 3 Month 6 Month 12 Month
Alpha 1 Month 3 Month 6 Month 12 Month
Beta 1 Month 3 Month 6 Month 12 Month
Sharpe 1 Month 3 Month 6 Month 12 Month
Sortino 1 Month 3 Month 6 Month 12 Month
Volatility 1 Month 3 Month 6 Month 12 Month
Max Drawdown 1 Month 3 Month 6 Month 12 Month
# Backtest ID: 55a6fc304577050c6978f1b4
There was a runtime error.
3 responses

Hi Andrew, take a look at this thread: https://www.quantopian.com/posts/differences-between-minute-and-daily-backtests

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.

That makes sense, thanks!

Does minute algo also already implemented in live tading... like Etrade and IB ?