| Overall Statistics |
|
Total Orders 2 Average Win 0% Average Loss 0% Compounding Annual Return 6.176% Drawdown 10.100% Expectancy 0 Start Equity 1000000 End Equity 1127650.63 Net Profit 12.765% Sharpe Ratio 0.024 Sortino Ratio 0.022 Probabilistic Sharpe Ratio 23.682% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.003 Beta -0.03 Annual Standard Deviation 0.081 Annual Variance 0.007 Information Ratio -0.272 Tracking Error 0.173 Treynor Ratio -0.066 Total Fees $42.26 Estimated Strategy Capacity $61000000.00 Lowest Capacity Asset MWD R735QTJ8XC9X Portfolio Turnover 0.14% |
from AlgorithmImports import *
class ModifiedBuyAndHoldStrategy(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 5, 1)
self.SetEndDate(2024, 5, 1)
self.SetCash(1_000_000)
self.gs = self.AddEquity("GS", Resolution.Daily).Symbol
self.ms = self.AddEquity("MS", Resolution.Daily).Symbol
self.initial_portfolio_value = self.Portfolio.TotalPortfolioValue
self.max_drawdown = 70_000
self.trades_executed = False
def OnData(self, data):
if not self.trades_executed:
self.set_holdings(self.gs, 0.5)
self.set_holdings(self.ms, -0.5)
self.trades_executed = True
current_loss = self.initial_portfolio_value - self.Portfolio.TotalPortfolioValue
if current_loss > self.max_drawdown:
self.Liquidate()
self.Debug("Liquidated positions due to stop-loss.")
def OnEndOfAlgorithm(self):
self.Debug(f"Initial Portfolio Value: {self.initial_portfolio_value}")
self.Debug(f"Final Portfolio Value: {self.Portfolio.TotalPortfolioValue}")