Overall Statistics |
Total Trades 7 Average Win 52.1% Average Loss -18.8% Compounding Annual Return 9.913% Drawdown 34.500% Expectancy 2.233 Net Profit 631.289% Sharpe Ratio 0.715 Loss Rate 14% Win Rate 86% Profit-Loss Ratio 2.77 Alpha 0.106 Beta -0.012 Annual Standard Deviation 0.148 Annual Variance 0.022 Information Ratio 0.166 Tracking Error 0.238 Treynor Ratio -8.759 |
using QuantConnect.Data.Consolidators; using QuantConnect.Data.Custom; using QuantConnect.Indicators; namespace QuantConnect.Algorithm.Examples { public class SimpleCustomDataIndicators : QCAlgorithm { private string SPY_QuandlCode = "YAHOO/INDEX_SPY"; private MovingAverageConvergenceDivergence macd; public override void Initialize() { // set up our analysis span SetStartDate(1994, 01, 01); SetEndDate(DateTime.Today.AddDays(-1)); // request SPY data - the data feed does daily, so pick that too AddData<Quandl>(SPY_QuandlCode, Resolution.Daily); macd = new MovingAverageConvergenceDivergence("MACD", 72, 189, 9, MovingAverageType.Exponential); // if we want to just pipe data directly from the engine into our indicators, // we can use the identity consolidator. this consolidator will send each piece // of data var quandlIdentityConsolidator = new IdentityDataConsolidator<Quandl>(); // then we can register our macd using the identity consolidator RegisterIndicator(SPY_QuandlCode, macd, quandlIdentityConsolidator, x => x.Value); } public void OnData(Quandl data) { // this is daily data // we're doing about more than 4k days, so don't plot every day if (data.Time.DayOfYear%2 == 0) { // plot our macd Plot("SPY_MACD", macd, macd.Signal); // plot the fast/slow parts of the macd along with closing prices Plot(SPY_QuandlCode, "Close", data.Value); Plot(SPY_QuandlCode, macd.Slow, macd.Fast); } if (!macd.IsReady) return; // moving average cross with a 1.5% debouncing tolerance var quantity = Portfolio[SPY_QuandlCode].Quantity; if (quantity <= 0 && macd.Fast > macd.Slow * 1.015m) { SetHoldings(SPY_QuandlCode, .95); } else if (quantity >= 0 && macd.Fast * 1.015m < macd.Slow) { SetHoldings(SPY_QuandlCode, -.95); } } } }