Overall Statistics
Total Orders
10686
Average Win
0.07%
Average Loss
-0.07%
Compounding Annual Return
-0.799%
Drawdown
14.300%
Expectancy
-0.019
Start Equity
100000
End Equity
92489.52
Net Profit
-7.510%
Sharpe Ratio
-1.243
Sortino Ratio
-1.222
Probabilistic Sharpe Ratio
0.000%
Loss Rate
49%
Win Rate
51%
Profit-Loss Ratio
0.92
Alpha
-0.034
Beta
0.066
Annual Standard Deviation
0.023
Annual Variance
0.001
Information Ratio
-0.738
Tracking Error
0.14
Treynor Ratio
-0.437
Total Fees
$0.00
Estimated Strategy Capacity
$50000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
Portfolio Turnover
102.94%
# region imports
from AlgorithmImports import *

import random
# endregion


class RandomAlgorithm(QCAlgorithm):

    def initialize(self) -> None:
        self.set_start_date(2015, 7, 12)
        self.set_end_date(2025, 4, 1)
        self.set_cash(100_000)
        # Set some parameters.
        random.seed(42)
        self._probability_of_trade = 0.01  # per minute
        # Add the SPY to trade.
        self._equity = self.add_equity('SPY')
        self._equity.set_fee_model(ConstantFeeModel(0)) # Remove fees.
        # Liquidate positions at market close.
        self.schedule.on(self.date_rules.every_day(self._equity.symbol), self.time_rules.before_market_close(self._equity.symbol, 1), self.liquidate)
    
    def on_data(self, data: Slice) -> None:
        if (self._equity.symbol in data and 
            self._equity.exchange.hours.is_open(self.time + timedelta(minutes=1), False) and
            random.random() < self._probability_of_trade):
            self.market_order(self._equity.symbol, 100 if not self.portfolio.invested else -100)