| Overall Statistics |
|
Total Orders 214 Average Win 19.43% Average Loss -2.59% Compounding Annual Return 22.190% Drawdown 34.600% Expectancy 2.015 Start Equity 100000 End Equity 7069124.48 Net Profit 6969.124% Sharpe Ratio 0.743 Sortino Ratio 0.753 Probabilistic Sharpe Ratio 13.309% Loss Rate 64% Win Rate 36% Profit-Loss Ratio 7.49 Alpha 0.117 Beta 0.514 Annual Standard Deviation 0.197 Annual Variance 0.039 Information Ratio 0.455 Tracking Error 0.196 Treynor Ratio 0.286 Total Fees $73738.14 Estimated Strategy Capacity $530000000.00 Lowest Capacity Asset AAPL R735QTJ8XC9X Portfolio Turnover 2.75% 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(2005, 1, 1)
self.set_end_date(2026, 3, 27)
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")