| Overall Statistics |
|
Total Trades 9744 Average Win 0.01% Average Loss 0.00% Compounding Annual Return 1.479% Drawdown 2.100% Expectancy 0.483 Net Profit 9.206% Sharpe Ratio 0.764 Probabilistic Sharpe Ratio 12.849% Loss Rate 53% Win Rate 47% Profit-Loss Ratio 2.13 Alpha 0.01 Beta 0.011 Annual Standard Deviation 0.013 Annual Variance 0 Information Ratio -0.174 Tracking Error 0.174 Treynor Ratio 0.907 Total Fees $1548786.21 Estimated Strategy Capacity $5000.00 Lowest Capacity Asset ADGE R735QTJ8XC9X |
#region imports
from AlgorithmImports import *
#endregion
from QuantConnect.Data.UniverseSelection import *
import math
import numpy as np
import pandas as pd
import scipy as sp
class PriceEarningsAnamoly(QCAlgorithm):
def Initialize(self):
self.SetStartDate(1998, 1, 2)
# self.SetEndDate(1981, 1, 1)
self.year = -1
self.UniverseSettings.Resolution = Resolution.Daily
self.AddUniverse(self.CoarseSelectionFunction)
self.SetCash(100000000)
def CoarseSelectionFunction(self, coarse):
if self.Time.year == self.year:
return []
self.year = self.Time.year
CoarseWithFundamental = [x for x in coarse if x.HasFundamentalData]
sortedByDollarVolume = sorted(CoarseWithFundamental, key=lambda x: x.DollarVolume, reverse=False)
return [i.Symbol for i in sortedByDollarVolume[:1000]]
def OnSecuritiesChanged(self, change):
# liquidate securities that removed from the universe
for security in change.RemovedSecurities:
if self.Portfolio[security.Symbol].Invested:
self.Liquidate(security.Symbol)
count = len(change.AddedSecurities)
# evenly invest on securities that newly added to the universe
for security in change.AddedSecurities:
self.SetHoldings(security.Symbol, 1.0/count)