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