Overall Statistics |
Total Trades 374 Average Win 1.07% Average Loss -0.97% Compounding Annual Return 33.085% Drawdown 38.500% Expectancy 0.222 Net Profit 319.790% Sharpe Ratio 1.143 Probabilistic Sharpe Ratio 49.416% Loss Rate 42% Win Rate 58% Profit-Loss Ratio 1.10 Alpha 0.147 Beta 1.323 Annual Standard Deviation 0.275 Annual Variance 0.076 Information Ratio 1.137 Tracking Error 0.165 Treynor Ratio 0.238 Total Fees $4033.24 |
//Copyright HardingSoftware.com 2020. //Granted to the public domain. //Use at your own risk. namespace QuantConnect.Algorithm.CSharp { public class SimpleVolume : QCAlgorithm { int TotalHighDollarVolumeStocks = 10; List<Symbol> StocksToHold; DateTime lastMonth; public override void Initialize() { SetStartDate(2015, 11, 19); SetCash(1000000); AddUniverse(CoarseSelectionFunction); } public IEnumerable<Symbol> CoarseSelectionFunction(IEnumerable<CoarseFundamental> coarse) { StocksToHold = coarse .Where(x => x.HasFundamentalData) .OrderByDescending(x => x.DollarVolume) .Take(TotalHighDollarVolumeStocks) .Select(x => x.Symbol) .ToList(); return StocksToHold; } public override void OnData(Slice data) { if (lastMonth.Month == data.Time.Month) { return; } lastMonth = data.Time; foreach (var stock in Portfolio.Values) { if (stock.Invested) { if (StocksToHold.Exists(x => x == stock.Symbol) == false) { Liquidate(stock.Symbol); } } } decimal positionSize = 1m / TotalHighDollarVolumeStocks; foreach (Symbol symbol in StocksToHold) { if (Portfolio[symbol].Invested == false && data.ContainsKey(symbol)) { SetHoldings(symbol, positionSize); } } } } }