| Overall Statistics |
|
Total Trades 99 Average Win 1.69% Average Loss -0.66% Compounding Annual Return 11.048% Drawdown 15.300% Expectancy 1.819 Net Profit 69.549% Sharpe Ratio 0.869 Probabilistic Sharpe Ratio 33.268% Loss Rate 21% Win Rate 79% Profit-Loss Ratio 2.56 Alpha 0.016 Beta 0.522 Annual Standard Deviation 0.092 Annual Variance 0.008 Information Ratio -0.487 Tracking Error 0.085 Treynor Ratio 0.153 Total Fees $2258.20 Estimated Strategy Capacity $92000000.00 Lowest Capacity Asset IEF SGNKIKYGE9NP |
# Stocks-Bond Portfolio with Take Profit
# ------------------------------------------------------
ASSETS = ["QQQ", 'XLP', 'IEF']; MA = 100; TP = 0.10;
# ------------------------------------------------------
class StocksBondPortfolioTakeProfit(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2017, 3, 26)
self.SetCash(1000000)
self.assets = [self.AddEquity(ticker, Resolution.Daily).Symbol for ticker in ASSETS]
self.ma = self.SMA(self.assets[0], MA, Resolution.Daily)
self.SetWarmUp(MA, Resolution.Daily)
def OnData(self, data):
if self.IsWarmingUp or not self.ma.IsReady: return
pnl = 0
for sec in self.assets:
pnl += self.Securities[sec].Holdings.UnrealizedProfitPercent
ma = self.ma.Current.Value
price = self.Securities[self.assets[0]].Price
if not self.Portfolio[self.assets[0]].Invested:
if price > ma:
for sec in self.assets:
self.SetHoldings(sec, 1/len(self.assets))
elif pnl >= TP:
self.Liquidate()