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 BasicTemplateFrameworkAlgorithm : QCAlgorithmFramework { List<string> top5 = new List<string>(); public override void Initialize() { SetStartDate(2019, 1, 28); //Set Start Date SetEndDate(2019, 1, 30); //Set End Date SetCash(100000); //Set Strategy Cash // Coarse Fine Universe Selection Models. SetUniverseSelection(new FineFundamentalUniverseSelectionModel(CoarseSelectionFunction, FineSelectionFunction)); SetAlpha(new CustomAlphaModel()); SetPortfolioConstruction(new NullPortfolioConstructionModel()); SetExecution(new ImmediateExecutionModel()); //Set your own execution model to place approriately weighted orders //SetExecution(new CustomExecutionModel()); SetRiskManagement(new MaximumDrawdownPercentPerSecurity(0.05m)); } public IEnumerable<Symbol> CoarseSelectionFunction(IEnumerable<CoarseFundamental> coarse) { 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) { 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 List<string> temptop5 = new List<string>(); var temp = topFine.Select(x => x.Symbol); foreach (String s in temp) { string str = s.Substring(0,3); Log("adding " + s.Substring(0,3)); temptop5.Add(s.Substring(0,3)); } top5 = temptop5; return topFine.Select(x => x.Symbol); } public override void OnOrderEvent(OrderEvent orderEvent) { if (orderEvent.Status.IsFill()) { // Debug($"Purchased Stock: {orderEvent.Symbol}"); } } } class CustomAlphaModel : AlphaModel { private DateTime _date; /// <summary> /// Create a new leveraged ETF rebalancing alpha /// </summary> /// <summary> /// Scan to see if the returns are greater than 1% at 2.15pm to emit an insight. /// </summary> public override IEnumerable<Insight> Update(QCAlgorithmFramework algorithm, Slice data) { // Initialize: var insights = new List<Insight>(); // You can evaluation data in this method and access securities information foreach (String symbol in algorithm.Securities.Keys) { algorithm.Log("Top5 symbol: " + symbol.ToString()); } return insights; } } //class CustomExecutionModel : ExecutionModel //{ // Create a custom execution model to execute tradingg code // based on insights //} }