| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 16.013% Drawdown 16.700% Expectancy 0 Net Profit 25.035% Sharpe Ratio 0.616 Sortino Ratio 0.834 Probabilistic Sharpe Ratio 42.565% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0 Beta 0.999 Annual Standard Deviation 0.142 Annual Variance 0.02 Information Ratio -0.55 Tracking Error 0 Treynor Ratio 0.088 Total Fees $1.31 Estimated Strategy Capacity $1000000000.00 Lowest Capacity Asset SPY R735QTJ8XC9X Portfolio Turnover 0.19% |
# region imports
from AlgorithmImports import *
# endregion
class CustomBuyingPowerModelAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2022, 6, 28)
self.SetCash(100000)
security = self.AddEquity("SPY", Resolution.Daily)
security.SetBuyingPowerModel(MyBuyingPowerModel())
def OnData(self, data: Slice):
if not self.Portfolio.Invested:
self.SetHoldings("SPY", 1)
class MyBuyingPowerModel(BuyingPowerModel):
def __init__(self,
leverage: float = 2,
requiredFreeBuyingPowerPercent: float = 0):
super().__init__(leverage, requiredFreeBuyingPowerPercent)
def GetLeverage(self, security: Security) -> float:
return super().GetLeverage(security)
def SetLeverage(self, security: Security, leverage: float) -> None:
super().SetLeverage(security, leverage)
def GetInitialMarginRequiredForOrder(self,
parameters: InitialMarginRequiredForOrderParameters) -> InitialMargin:
return super().GetInitialMarginRequiredForOrder(parameters)
def GetMaintenanceMargin(self,
parameters: MaintenanceMarginParameters) -> MaintenanceMargin:
return super().GetMaintenanceMargin(parameters)
def GetMarginRemaining(self,
portfolio: SecurityPortfolioManager,
security: Security,
direction: OrderDirection) -> float:
return super().GetMarginRemaining(portfolio, security, direction)
def GetInitialMarginRequirement(self,
parameters: InitialMarginParameters) -> InitialMargin:
return super().GetInitialMarginRequirement(parameters)
def HasSufficientBuyingPowerForOrder(self,
parameters: HasSufficientBuyingPowerForOrderParameters
) -> HasSufficientBuyingPowerForOrderResult:
return super().HasSufficientBuyingPowerForOrder(parameters)
def GetMaximumOrderQuantityForDeltaBuyingPower(self,
parameters: GetMaximumOrderQuantityForDeltaBuyingPowerParameters
) -> GetMaximumOrderQuantityResult:
return super().GetMaximumOrderQuantityForDeltaBuyingPower(parameters)
def GetMaximumOrderQuantityForTargetBuyingPower(self,
parameters: GetMaximumOrderQuantityForTargetBuyingPowerParameters
) -> GetMaximumOrderQuantityResult:
return super().GetMaximumOrderQuantityForTargetBuyingPower(parameters)
def GetReservedBuyingPowerForPosition(self,
parameters: ReservedBuyingPowerForPositionParameters
) -> ReservedBuyingPowerForPosition:
return super().GetReservedBuyingPowerForPosition(parameters)
def GetBuyingPower(self,
parameters: BuyingPowerParameters) -> BuyingPower:
return super().GetBuyingPower(parameters)