Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
0
Tracking Error
0
Treynor Ratio
0
Total Fees
$0.00
namespace QuantConnect.Algorithm.CSharp
{
    public class VerticalTachyonReplicator : QCAlgorithm
    {

        public override void Initialize()
        {
            SetStartDate(2018, 10, 24);  //Set Start Date
            SetEndDate(2018, 10, 31);
            SetCash(100000);             //Set Strategy Cash
            
            //Here is the coarse-find universe selection model
            //coarse selection and fine selection methods are defined below
			SetUniverseSelection(new FineFundamentalUniverseSelectionModel(CoarseSelectionFunction, FineSelectionFunction));

        }

        /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
        /// Slice object keyed by symbol containing the stock data
        public override void OnData(Slice data)
        {
            // if (!Portfolio.Invested)
            // {
            //    SetHoldings(_spy, 1);
            //    Debug("Purchased Stock");
            //}
        }
        
		// sort the data by daily dollar volume and take the top 'NumberOfSymbols'
		public IEnumerable<Symbol> CoarseSelectionFunction(IEnumerable<CoarseFundamental> coarse)
		{
			//number of symbols we select in coarse selection
		    var numberOfSymbolsCoarse = 100;
		
		    // select only symbols with fundamental data and sort descending by daily dollar volume
		    var sortedByDollarVolume = coarse
		        .Where(x => x.HasFundamentalData)
		        .OrderByDescending(x => x.DollarVolume);
		
		    // take the top entries from our sorted collection
		    var top5 = sortedByDollarVolume.Take(numberOfSymbolsCoarse);
		
		    // we need to return only the symbol objects
		    return top5.Select(x => x.Symbol);
		}
		
		// sort the data by P/E ratio and take the top 'numberOfSymbolsFine'
		public IEnumerable<Symbol> FineSelectionFunction(IEnumerable<FineFundamental> fine)
		{
			//number of symbols we select in fine selection
		    var numberOfSymbolsFine = 5;
		
		    // sort descending by P/E ratio
		    var sortedByPeRatio = fine.OrderByDescending(x => x.ValuationRatios.PERatio);
		
		    // take the top entries from our sorted collection
		    var topFine = sortedByPeRatio.Take(numberOfSymbolsFine);
		
		    // we need to return only the symbol objects
		    return topFine.Select(x => x.Symbol);
		}

    }
}