| Overall Statistics |
|
Total Orders 12 Average Win 0.97% Average Loss -1.43% Compounding Annual Return 8.441% Drawdown 4.500% Expectancy 0.399 Start Equity 2000000 End Equity 2068935.06 Net Profit 3.447% Sharpe Ratio 0.08 Sortino Ratio 0.049 Probabilistic Sharpe Ratio 52.362% Loss Rate 17% Win Rate 83% Profit-Loss Ratio 0.68 Alpha -0.05 Beta 0.293 Annual Standard Deviation 0.053 Annual Variance 0.003 Information Ratio -2.255 Tracking Error 0.08 Treynor Ratio 0.015 Total Fees $150.50 Estimated Strategy Capacity $500000000.00 Lowest Capacity Asset MSFT R735QTJ8XC9X Portfolio Turnover 3.93% |
from AlgorithmImports import *
class TrendReversalTradingAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2023, 12, 20)
self.SetEndDate(2024, 5, 20)
self.SetCash(2_000_000)
self.symbol = self.AddEquity("MSFT", Resolution.Daily).Symbol # S2 = MSFT (Lowest Min Autocorrelation)
self.sma = self.SMA(self.symbol, 20, Resolution.Daily)
self.weight = 0.50 # 50% of portfolio
def OnData(self, data):
if not self.sma.IsReady or self.symbol not in data or data[self.symbol] is None:
return
price = data[self.symbol].Close
sma_value = self.sma.Current.Value
if price < sma_value and not self.Portfolio[self.symbol].Invested:
self.SetHoldings(self.symbol, self.weight)
elif price >= sma_value and self.Portfolio[self.symbol].Invested:
self.Liquidate(self.symbol)