Overall Statistics
Total Trades
1
Average Win
25.97%
Average Loss
0%
Compounding Annual Return
7.784%
Drawdown
43.700%
Expectancy
0
Net Profit
25.981%
Sharpe Ratio
0.387
Loss Rate
0%
Win Rate
100%
Profit-Loss Ratio
0
Alpha
0.15
Beta
-0.033
Annual Standard Deviation
0.388
Annual Variance
0.151
Information Ratio
0.341
Tracking Error
0.449
Treynor Ratio
-4.556
namespace QuantConnect
{
    /// <summary>
    /// QC University algorithm to demonstrate split and dividend events 
    /// </summary>
    public class QCUTotalReturnsAlgorithm : QCAlgorithm
    {
        public SimpleMovingAverage SMA_MSFT;
        
        /// <summary>
        /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized.
        /// </summary>
        public override void Initialize()
        {
            SetStartDate(2001, 01, 01);  //Set Start Date
            SetEndDate(2004, 02, 01);    //Set End Date
            SetCash(100000);             //Set Strategy Cash
            // Find more symbols here: http://quantconnect.com/data
            AddSecurity(SecurityType.Equity, "MSFT", Resolution.Minute);
            Securities["MSFT"].SetDataNormalizationMode(DataNormalizationMode.Raw);
            
            SMA_MSFT = SMA("MSFT", 14);
        }

        /// <summary>
        /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
        /// </summary>
        /// <param name="data">TradeBars IDictionary object with your stock data</param>
        public void OnData(TradeBars data)
        {
            if (!Portfolio.Invested)
            {
                SetHoldings("MSFT", .5);
                Debug("Purchased Stock");
            }
            
            if (data.Time.Date == new DateTime(2004, 01, 07) && data.Time.Hour == 10 && data.Time.Minute == 0)
            {
                // split adjusted and raw have the same value here because there are no MSFT splits after Feb 18, 2003
                // DataNormalizationMode.TotalReturn   = SMA Value: 28.41071
                // DataNormalizationMode.Raw           = SMA Value: 28.17071
                // DataNormalizationMode.Adjusted      = SMA Value: 20.22256
                // DataNormalizationMode.SplitAdjusted = SMA Value: 28.17071
                Debug("SMA Value: " + SMA_MSFT);
            }
        }

        public void OnData(Dividends data) // update this to Dividends dictionary
        {
            var dividend = data["MSFT"];
            Debug(string.Format("{0} >> DIVIDEND >> {1} - {2} - {3} - {4}", dividend.Time.ToString("o"), dividend.Symbol, dividend.Distribution.ToString("C"), Portfolio.Cash, Portfolio["MSFT"].Price.ToString("C")));
        }

        public void OnData(Splits data)
        {
            var split = data["MSFT"];
            Debug(string.Format("{0} >> SPLIT >> {1} - {2} - {3} - {4} - {5}", split.Time.ToString("o"), split.Symbol, split.SplitFactor, Portfolio.Cash, Portfolio["MSFT"].Quantity, Portfolio["MSFT"].Price.ToString("C")));
        }
    }
}