Overall Statistics
Total Trades
1
Average Win
46.57%
Average Loss
0%
Compounding Annual Return
20.089%
Drawdown
9.300%
Expectancy
0
Net Profit
46.567%
Sharpe Ratio
1.663
Loss Rate
0%
Win Rate
100%
Profit-Loss Ratio
0
Alpha
0.004
Beta
0.985
Annual Standard Deviation
0.114
Annual Variance
0.013
Information Ratio
0.038
Tracking Error
0.021
Treynor Ratio
0.192
namespace QuantConnect 
{   
    /*
    *   QuantConnect University: Full Basic Template:
    *
    *   The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
    *   We have explained some of these here, but the full algorithm can be found at:
    *   https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
    */
    public class BasicTemplateAlgorithm : QCAlgorithm
    {
        //Initialize the data and resolution you require for your strategy:
        LogReturn returnIndicator;
        SequentialIndicator<IndicatorDataPoint> sma;
        SimpleMovingAverage _sma;
        
        public override void Initialize()
        {
			
            //Start and End Date range for the backtest:
            SetStartDate(2013, 1, 1);         
            SetStartDate(2013, 1, 10);         
            //SetEndDate(DateTime.Now.Date.AddDays(-1)); 
            
            //Cash allocation
            SetCash(25000);
            
            //Add as many securities as you like. All the data will be passed into the event handler:
            AddSecurity(SecurityType.Equity, "SPY", Resolution.Minute);
            
            //Set up Indicators:
            returnIndicator = new LogReturn("SPY");
            RegisterIndicator("SPY", returnIndicator, Resolution.Minute, x => x.Value);
            
            _sma = new SimpleMovingAverage(5);

            sma = _sma.Of(returnIndicator);
            RegisterIndicator("SPY", sma, Resolution.Minute, x => x.Value);
        }

        //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
        public void OnData(TradeBars data) 
        {   
            // "TradeBars" object holds many "TradeBar" objects: it is a dictionary indexed by the symbol:
            // 
            //  e.g.  data["MSFT"] data["GOOG"]
            
            if (!Portfolio.HoldStock) 
            {
                int quantity = (int)Math.Floor(Portfolio.Cash / data["SPY"].Close);
                
                //Order function places trades: enter the string symbol and the quantity you want:
                Order("SPY",  quantity);
                
                //Debug sends messages to the user console: "Time" is the algorithm time keeper object 
                Debug("Purchased SPY on " + Time.ToShortDateString());
            }
        }
        public override void OnEndOfDay()
        {
            
            Plot("Return","Instantaneous",returnIndicator);
            Plot("Return","5 Period Average",sma);
        }        
    }
}
using System;
using QuantConnect.Data.Market;

namespace QuantConnect.Indicators
{
    /// <summary>
    /// This indicator is meant to compute log returns.
    /// </summary>
    public class LogReturn : Indicator
    {

        public LogReturn()
            : this(string.Format("Return"))
        {
        }

        public int _count;
        decimal _last;
        public decimal Return;

        public LogReturn(String name)
            : base(name)
        {
            _count = 0;
            _last = 0m;
            Return = 0m;
        }

        /// <summary>
        /// Gets a flag indicating when this indicator is ready and fully initialized
        /// </summary>
        public override bool IsReady
        {
            get { return _count > 0; }
        }
        public decimal total;
        
        protected override decimal ComputeNextValue(IndicatorDataPoint input)
        {
            
            if (IsReady)
                Return = (decimal)Math.Log((double)(input / _last));
            _last = input;
            return Return;
        }
        /// <summary>
        /// Resets this indicator to its initial state
        /// </summary>
        public override void Reset()
        {
            _count = 0;
            _last = 0m;
            Return = 0m;
            base.Reset();
        }
    }
}