| Overall Statistics |
|
Total Orders 584 Average Win 0.18% Average Loss -0.12% Compounding Annual Return 24.368% Drawdown 16.300% Expectancy 0.275 Start Equity 100000 End Equity 111951.66 Net Profit 11.952% Sharpe Ratio 0.831 Sortino Ratio 1.112 Probabilistic Sharpe Ratio 41.998% Loss Rate 49% Win Rate 51% Profit-Loss Ratio 1.48 Alpha -0.159 Beta 1.556 Annual Standard Deviation 0.231 Annual Variance 0.053 Information Ratio -0.2 Tracking Error 0.166 Treynor Ratio 0.123 Total Fees $743.67 Estimated Strategy Capacity $120000000.00 Lowest Capacity Asset KO R735QTJ8XC9X Portfolio Turnover 11.81% |
from AlgorithmImports import *
from QuantConnect.DataSource import *
class BrainMLRankingDataAlgorithm(QCAlgorithm):
def initialize(self) -> None:
self.set_start_date(2021, 1, 1)
self.set_end_date(2021, 7, 8)
self.set_cash(100000)
tickers = ["AAPL", "TSLA", "MSFT", "F", "KO"]
self.symbol_by_dataset_symbol = {}
for ticker in tickers:
# Requesting data
symbol = self.add_equity(ticker, Resolution.DAILY).symbol
dataset_symbol = self.add_data(BrainStockRanking2Day, symbol).symbol
self.symbol_by_dataset_symbol[dataset_symbol] = symbol
# Historical data
history = self.history(dataset_symbol, 365, Resolution.DAILY)
self.debug(f"We got {len(history)} items from our history request for {symbol}")
def on_data(self, slice: Slice) -> None:
# Collect rankings for all symbols
points = slice.Get(BrainStockRanking2Day)
if points is None:
return
symbols = []
ranks = []
for point in points.Values:
symbols.append(self.symbol_by_dataset_symbol[point.symbol])
ranks.append(point.rank)
# Rank each symbol's Brain ML ranking relative to each other
if len(ranks) == 0:
return
ranks = [sorted(ranks).index(rank) + 1 for rank in ranks]
# Place orders
for i, rank in enumerate(ranks):
weight = rank / sum(ranks)
self.set_holdings(symbols[i], weight)