| Overall Statistics |
|
Total Trades 131 Average Win 0.04% Average Loss -0.16% Compounding Annual Return 3.528% Drawdown 7.200% Expectancy -0.305 Net Profit 0.171% Sharpe Ratio 0.253 Probabilistic Sharpe Ratio 43.128% Loss Rate 45% Win Rate 55% Profit-Loss Ratio 0.25 Alpha 0.242 Beta -0.934 Annual Standard Deviation 0.32 Annual Variance 0.103 Information Ratio -0.254 Tracking Error 0.359 Treynor Ratio -0.087 Total Fees $131.00 |
from datetime import timedelta
class helloWorldModel(AlphaModel):
def __init__(self):
self.mom = []
def OnSecuritiesChanged(self, algorithm, changes):
for security in changes.AddedSecurities:
symbol = security.Symbol
price_val = security.Price
kama_val=algorithm.KAMA(symbol, 10,2,30, Resolution.Hour)
mom_val=algorithm.MOM(symbol, 14, Resolution.Hour)
self.mom.append({"symbol":symbol, "mom":mom_val, "kama":kama_val,"price":str(price_val)})
def Update(self, algorithm, data):
grp=[]
x = 0
while x < len(self.mom):
symbol=str(self.mom[x]['symbol'])
mom=str(self.mom[x]['mom'].Current.Value)
kama=str(self.mom[x]['kama'].Current.Value)
price=str(self.mom[x]['price'])
mom_dir=int(float(mom))
vinsightDirection = InsightDirection.Flat
signal="hold"
if mom_dir >0 and price>kama:
vinsightDirection = InsightDirection.Up
signal="buy"
if mom_dir < 0 or price<kama:
vinsightDirection = InsightDirection.Down
signal="sell"
algorithm.Log(symbol+" "+str(mom_dir)+" MOM "+mom+" KAMA "+kama+" LastPrice "+price+" algo action:"+signal)
grp.append(Insight(symbol, timedelta(1), InsightType.Price, vinsightDirection, 0.0025,None, "helloWorldModel",None))
x += 1
return Insight.Group(grp)
class FrameworkAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 12, 1)
self.SetCash(100000)
tickers=["MSFT","MRNA","MELI"]
symbols = [Symbol.Create(x, SecurityType.Equity, Market.USA) for x in tickers]
frequency = Resolution.Hour
# Set Benchmark
self.AddEquity("SPY", frequency)
self.SetBenchmark("SPY")
self.UniverseSettings.Resolution = frequency
self.SetWarmUp(timedelta(28)) # Warm up 28 days of data.
self.SetUniverseSelection(ManualUniverseSelectionModel(symbols))
self.SetAlpha(helloWorldModel())
self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())
self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.02))