Overall Statistics
Total Trades
3
Average Win
0%
Average Loss
-14.51%
Compounding Annual Return
16.457%
Drawdown
14.500%
Expectancy
-1
Net Profit
5.222%
Sharpe Ratio
0.798
Probabilistic Sharpe Ratio
43.392%
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0.039
Beta
0.756
Annual Standard Deviation
0.158
Annual Variance
0.025
Information Ratio
0.097
Tracking Error
0.112
Treynor Ratio
0.166
Total Fees
$7.50
Estimated Strategy Capacity
$460000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
3.51%
#region imports
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Globalization;
    using System.Drawing;
    using QuantConnect;
    using QuantConnect.Algorithm.Framework;
    using QuantConnect.Algorithm.Framework.Selection;
    using QuantConnect.Algorithm.Framework.Alphas;
    using QuantConnect.Algorithm.Framework.Portfolio;
    using QuantConnect.Algorithm.Framework.Execution;
    using QuantConnect.Algorithm.Framework.Risk;
    using QuantConnect.Parameters;
    using QuantConnect.Benchmarks;
    using QuantConnect.Brokerages;
    using QuantConnect.Util;
    using QuantConnect.Interfaces;
    using QuantConnect.Algorithm;
    using QuantConnect.Indicators;
    using QuantConnect.Data;
    using QuantConnect.Data.Consolidators;
    using QuantConnect.Data.Custom;
    using QuantConnect.DataSource;
    using QuantConnect.Data.Fundamental;
    using QuantConnect.Data.Market;
    using QuantConnect.Data.UniverseSelection;
    using QuantConnect.Notifications;
    using QuantConnect.Orders;
    using QuantConnect.Orders.Fees;
    using QuantConnect.Orders.Fills;
    using QuantConnect.Orders.Slippage;
    using QuantConnect.Scheduling;
    using QuantConnect.Securities;
    using QuantConnect.Securities.Equity;
    using QuantConnect.Securities.Future;
    using QuantConnect.Securities.Option;
    using QuantConnect.Securities.Forex;
    using QuantConnect.Securities.Crypto;
    using QuantConnect.Securities.Interfaces;
    using QuantConnect.Storage;
    using QuantConnect.Data.Custom.AlphaStreams;
    using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm;
    using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm;
#endregion
namespace QuantConnect
{
    public partial class BootCampTask : QCAlgorithm
    {
        private OrderTicket stopMarketTicket; 
        private DateTime stopMarketOrderFilled;
        private decimal highestSPYPrice = Decimal.MinValue;

        public override void Initialize()
        {
            SetStartDate(2018, 12, 1);
            SetEndDate(2019, 4, 1);
            SetCash(100000);
            var spy = AddEquity("SPY", Resolution.Daily, dataNormalizationMode: DataNormalizationMode.Raw);
        }

        public override void OnData(Slice slice)
        {
        	//1. Plot the current SPY price to "Data Chart" on series "Asset Price"
        	Plot("Data Chart", "Asset Price", Securities["SPY"].Price);
        	
            if ((Time - stopMarketOrderFilled).TotalDays < 15)
                return;

            if (!Portfolio.Invested) {

                MarketOrder("SPY", 500);
                highestSPYPrice = Securities["SPY"].Close;
                stopMarketTicket = StopMarketOrder("SPY", -500, highestSPYPrice * 0.9m);
                
            } else {
            	
            	//2. Plot the moving stop price on "Data Chart" with "Stop Price" series name
            	
				if (Securities["SPY"].Close > highestSPYPrice) {
					highestSPYPrice = Securities["SPY"].Close;
					
					stopMarketTicket.Update(new UpdateOrderFields() { 
						StopPrice = 0.9m * highestSPYPrice
					});
				}
				
	        	Plot("Data Chart", "Stop Price", highestSPYPrice);

            }
        }

        public override void OnOrderEvent(OrderEvent orderEvent)
        { 
            if (orderEvent.Status != OrderStatus.Filled)
                return;

            if (stopMarketTicket != null && orderEvent.OrderId == stopMarketTicket.OrderId) {
                stopMarketOrderFilled = Time;
            }
        }
        
    }
}