| Overall Statistics |
|
Total Orders 161 Average Win 14.80% Average Loss -2.76% Compounding Annual Return 16.094% Drawdown 34.600% Expectancy 1.228 Start Equity 100000 End Equity 939326.63 Net Profit 839.327% Sharpe Ratio 0.61 Sortino Ratio 0.614 Probabilistic Sharpe Ratio 5.955% Loss Rate 65% Win Rate 35% Profit-Loss Ratio 5.36 Alpha 0.057 Beta 0.603 Annual Standard Deviation 0.179 Annual Variance 0.032 Information Ratio 0.133 Tracking Error 0.167 Treynor Ratio 0.181 Total Fees $6996.20 Estimated Strategy Capacity $390000000.00 Lowest Capacity Asset AAPL R735QTJ8XC9X Portfolio Turnover 2.93% Drawdown Recovery 910 |
# QSL Foundation I — Blueprint 4.1
# AAPL SMA-100 Crossover Strategy
# Buy AAPL when price > 100-day SMA, sell to cash when price < 100-day SMA
# Backtest period: 2010-01-01 to 2024-12-31
from AlgorithmImports import *
class AAPL_SMA100(QCAlgorithm):
def initialize(self):
self.set_start_date(2010, 1, 1)
self.set_end_date(2024, 12, 31)
self.set_cash(100000)
self.set_benchmark("SPY")
self.aapl = self.add_equity("AAPL", Resolution.DAILY).symbol
self.sma = self.SMA("AAPL", 100, Resolution.DAILY)
self.set_warm_up(100)
def on_data(self, data):
if self.is_warming_up:
return
if not self.sma.is_ready:
return
if "AAPL" not in data or data["AAPL"] is None:
return
price = self.securities["AAPL"].price
sma_value = self.sma.current.value
if price > sma_value:
if not self.portfolio["AAPL"].invested:
self.set_holdings("AAPL", 1.0)
else:
if self.portfolio["AAPL"].invested:
self.liquidate("AAPL")