Overall Statistics
Total Trades
1
Average Win
0%
Average Loss
-59.93%
Compounding Annual Return
-5.941%
Drawdown
99.900%
Expectancy
-1
Net Profit
-59.929%
Sharpe Ratio
2.411
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
3976.461
Beta
-136.512
Annual Standard Deviation
1645.678
Annual Variance
2708255.142
Information Ratio
2.411
Tracking Error
1645.681
Treynor Ratio
-29.066
using System;
using System.Collections;
using System.Collections.Generic;
using QuantConnect.Securities;
using QuantConnect.Models;
using System.Globalization;

namespace QuantConnect {

public class Google : BaseData
    {
        public decimal Open = 0;
        public decimal High = 0;
        public decimal Low = 0;
        public decimal Close = 0;
        public decimal AdjustedClose = 0;
        public decimal Volume = 0;

        public Google()
        {
            this.Symbol = "";
        }
        
        public override string GetSource(SubscriptionDataConfig config, DateTime date, DataFeedEndpoint datafeed)
        {
            var startDate = new DateTime(2000, 1, 1).ToString("yyyy-MM-dd");
            var endDate = DateTime.Now.ToString("yyyy-MM-dd");
            
            //QUANDL WRAPPER ON Google FINANCE API TO SORT DATA:
            //https://www.quandl.com/api/v1/datasets/GOOG/NYSE_TKC.csv?trim_start=2000-01-01&trim_end=2014-12-03&sort_order=asc
            return "https://www.quandl.com/api/v1/datasets/GOOG/" + config.Symbol + ".csv?trim_start=" + startDate + "&trim_end=" + endDate + "&sort_order=asc&exclude_headers=true";;
        }
        
        public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, DataFeedEndpoint datafeed)
        {
            Google gBar = new Google();

            try
            {
                string[] data = line.Split(',');
                //Required.
                gBar.Symbol = config.Symbol;
                gBar.Time = DateTime.ParseExact(data[0], "yyyy-MM-dd", CultureInfo.InvariantCulture);
                
                //User configured / optional data on each bar:
                gBar.Open = Convert.ToDecimal(data[1]);
                gBar.High = Convert.ToDecimal(data[2]);
                gBar.Low = Convert.ToDecimal(data[3]);
                gBar.Close = Convert.ToDecimal(data[4]);
                gBar.Volume = Convert.ToDecimal(data[5]);
                
                //This is the value the engine uses for portfolio calculations
                gBar.Value = gBar.Close;
            }
            catch {
                
            }

            return gBar;
        }
    }
    
}
using System;
using System.Collections;
using System.Collections.Generic; 
using QuantConnect.Securities;  
using QuantConnect.Models;   

namespace QuantConnect 
{   
    // Name your algorithm class anything, as long as it inherits QCAlgorithm
    public class CustomDataYahooQuandl : QCAlgorithm
    {   
        //Initialize the data and resolution you require for your strategy:
        public override void Initialize()
        {
            SetStartDate(2000, 1, 1);
            SetEndDate(2014, 12, 3);
            SetCash(25000);
            
            //Quandl Indexes 
            AddData<Yahoo>("INDEX_SPY", Resolution.Minute);
            AddData<Yahoo>("INDEX_VIX", Resolution.Minute);
            
            //Google Finance API has better TKC data.
            AddData<Google>("NYSE_TKC", Resolution.Minute);
        }

        public void OnData(TradeBars data) 
        {  
            //QuantConnect SPY Minute Events here:
        }
        
        public void OnData(Google data)
        {
            //Google/Quandl TKC Events here:
            if (!Portfolio.Invested && data.Value > 0) 
            {
                var quantity = (int) (Portfolio.Cash / data.Value); 
                Order("NYSE_TKC", quantity);
            }
        }
        
        public void OnData(Yahoo data)
        {
            // SPY & VIX here
        }
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using QuantConnect.Securities;
using QuantConnect.Models;
using System.Globalization;

namespace QuantConnect {

    public class Yahoo : BaseData
    {
        public decimal Open = 0;
        public decimal High = 0;
        public decimal Low = 0;
        public decimal Close = 0;
        public decimal AdjustedClose = 0;
        public decimal Volume = 0;

        public Yahoo()
        {
            this.Symbol = "";
        }
        
        public override string GetSource(SubscriptionDataConfig config, DateTime date, DataFeedEndpoint datafeed)
        {
            var startDate = new DateTime(2000, 1, 1).ToString("yyyy-MM-dd");
            var endDate = DateTime.Now.ToString("yyyy-MM-dd");
            
            //QUANDL WRAPPER ON YAHOO FINANCE API TO SORT DATA:
            //https://www.quandl.com/api/v1/datasets/YAHOO/INDEX_SPY.csv?trim_start=2000-01-01&trim_end=2014-12-03&sort_order=asc
            return "https://www.quandl.com/api/v1/datasets/YAHOO/" + config.Symbol + ".csv?trim_start=" + startDate + "&trim_end=" + endDate + "&sort_order=asc&exclude_headers=true";;
        }
        
        public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, DataFeedEndpoint datafeed)
        {
            Yahoo yBar = new Yahoo();

            try
            {
                string[] data = line.Split(',');
                //Required.
                yBar.Symbol = config.Symbol;
                yBar.Time = DateTime.ParseExact(data[0], "yyyy-MM-dd", CultureInfo.InvariantCulture);
                
                //User configured / optional data on each bar:
                yBar.Open = Convert.ToDecimal(data[1]);
                yBar.High = Convert.ToDecimal(data[2]);
                yBar.Low = Convert.ToDecimal(data[3]);
                yBar.Close = Convert.ToDecimal(data[4]);
                yBar.Volume = Convert.ToDecimal(data[5]);
                yBar.AdjustedClose = Convert.ToDecimal(data[6]);
                
                //This is the value the engine uses for portfolio calculations
                yBar.Value = yBar.AdjustedClose;
            }
            catch {
                
            }

            return yBar;
        }
    }
}