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")