Overall Statistics
Total Orders
71
Average Win
4.32%
Average Loss
-2.45%
Compounding Annual Return
5.646%
Drawdown
32.800%
Expectancy
0.105
Start Equity
100000
End Equity
108105.86
Net Profit
8.106%
Sharpe Ratio
0.202
Sortino Ratio
0.253
Probabilistic Sharpe Ratio
14.750%
Loss Rate
60%
Win Rate
40%
Profit-Loss Ratio
1.76
Alpha
0.097
Beta
-0.332
Annual Standard Deviation
0.279
Annual Variance
0.078
Information Ratio
-0.164
Tracking Error
0.406
Treynor Ratio
-0.17
Total Fees
$599.05
Estimated Strategy Capacity
$320000000.00
Lowest Capacity Asset
AAPL R735QTJ8XC9X
Portfolio Turnover
12.82%
from AlgorithmImports import *
from QuantConnect.DataSource import *

class QuiverCongressDataAlgorithm(QCAlgorithm):

    def initialize(self) -> None:
        self.set_start_date(2019, 1, 1)
        self.set_end_date(2020, 6, 1)
        self.set_cash(100000)

        # Requesting data
        aapl = self.add_equity("AAPL", Resolution.DAILY).symbol
        quiver_congress_symbol = self.add_data(QuiverCongress, aapl).symbol

        # Historical data
        history = self.history(QuiverCongress, quiver_congress_symbol, 60, Resolution.DAILY)
        self.debug(f"We got {len(history)} items from our history request");

    def on_data(self, slice: Slice) -> None:
        congress_by_symbol = slice.Get(QuiverCongress)

        # Determine net direction of Congress trades for each security
        net_quantity_by_symbol = {}
        for symbol, points in congress_by_symbol.items():
            symbol = symbol.underlying
            if symbol not in net_quantity_by_symbol:
                net_quantity_by_symbol[symbol] = 0
            for point in points:
                net_quantity_by_symbol[symbol] += (1 if point.transaction == OrderDirection.BUY else -1) * point.amount
            
        for symbol, net_quantity in net_quantity_by_symbol.items():
            if net_quantity == 0:
                self.liquidate(symbol)
                continue
            # Buy when Congress members have bought, short otherwise
            self.set_holdings(symbol, 1 if net_quantity > 0 else -1)