| Overall Statistics |
|
Total Orders 170 Average Win 0.27% Average Loss -0.03% Compounding Annual Return 6.826% Drawdown 17.200% Expectancy 9.925 Start Equity 100000 End Equity 148609.33 Net Profit 48.609% Sharpe Ratio 0.451 Sortino Ratio 0.451 Probabilistic Sharpe Ratio 15.549% Loss Rate 1% Win Rate 99% Profit-Loss Ratio 10.06 Alpha 0.007 Beta 0.359 Annual Standard Deviation 0.075 Annual Variance 0.006 Information Ratio -0.364 Tracking Error 0.115 Treynor Ratio 0.094 Total Fees $172.13 Estimated Strategy Capacity $6200000.00 Lowest Capacity Asset BND TRO5ZARLX6JP Portfolio Turnover 0.11% Drawdown Recovery 386 |
# region imports
from AlgorithmImports import *
# endregion
class StockBondAllocationAlgorithm(QCAlgorithm):
"""
Static allocation between equities and bonds.
"""
def initialize(self):
# keep in mind data snooping bias:
# always leave some (typically more recent) time period for testing!
self.set_start_date(2017, 1, 1)
self.set_end_date(2022, 12, 31)
# key settings
tickers = ['SPY', 'GLD', 'BND']
self.settings.daily_precise_end_time = False
self._equities = [self.add_equity(ticker).symbol for ticker in tickers]
self.schedule.on(self.date_rules.month_start(self._equities[0]), self.time_rules.after_market_open(self._equities[0], 1), self.rebalance)
def rebalance(self):
weight = 1.0 / len(self._equities)
for symbol in self._equities:
self.set_holdings(symbol, weight)