| Overall Statistics |
|
Total Orders 13333 Average Win 0.07% Average Loss -0.01% Compounding Annual Return 19.304% Drawdown 26.200% Expectancy 0.526 Start Equity 100000 End Equity 128515.15 Net Profit 28.515% Sharpe Ratio 0.539 Sortino Ratio 0.821 Probabilistic Sharpe Ratio 24.899% Loss Rate 81% Win Rate 19% Profit-Loss Ratio 6.99 Alpha 0.238 Beta -0.745 Annual Standard Deviation 0.272 Annual Variance 0.074 Information Ratio 0.053 Tracking Error 0.451 Treynor Ratio -0.197 Total Fees $13212.00 Estimated Strategy Capacity $2000000.00 Lowest Capacity Asset JG WWHT0YOVJBL1 Portfolio Turnover 3.92% |
from AlgorithmImports import *
from QuantConnect.DataSource import *
class QuiverWallStreetBetsDataAlgorithm(QCAlgorithm):
def initialize(self) -> None:
self.set_start_date(2019, 1, 1)
self.set_end_date(2020, 6, 1)
self.set_cash(100000)
self.universe_settings.resolution = Resolution.DAILY
self._universe = self.add_universe(QuiverWallStreetBetsUniverse, self.universe_selection)
def on_data(self, slice: Slice) -> None:
points = slice.Get(QuiverWallStreetBets)
for point in points.Values:
symbol = point.symbol.underlying
# Buy if the stock was mentioned more than 5 times in the WallStreetBets daily discussion
if point.mentions > 5 and not self.portfolio[symbol].is_long:
self.market_order(symbol, 1)
# Otherwise, short sell
elif point.mentions <= 5 and not self.portfolio[symbol].is_short:
self.market_order(symbol, -1)
def on_securities_changed(self, changes: SecurityChanges) -> None:
for added in changes.added_securities:
# Requesting data
quiver_w_s_b_symbol = self.add_data(QuiverWallStreetBets, added.symbol).symbol
# Historical data
history = self.history(QuiverWallStreetBets, quiver_w_s_b_symbol, 60, Resolution.DAILY)
self.debug(f"We got {len(history)} items from our history request")
def universe_selection(self, alt_coarse: List[QuiverWallStreetBetsUniverse]) -> List[Symbol]:
for datum in alt_coarse:
self.log(f"{datum.symbol},{datum.mentions},{datum.rank},{datum.sentiment}")
# define our selection criteria
return [d.symbol for d in alt_coarse \
if d.mentions > 10 \
and d.rank < 100]