Overall Statistics
Total Orders
15
Average Win
13.52%
Average Loss
-7.10%
Compounding Annual Return
45.836%
Drawdown
28.300%
Expectancy
1.541
Start Equity
100000
End Equity
196206.52
Net Profit
96.207%
Sharpe Ratio
0.989
Sortino Ratio
1.243
Probabilistic Sharpe Ratio
49.030%
Loss Rate
12%
Win Rate
88%
Profit-Loss Ratio
1.90
Alpha
0.28
Beta
0.293
Annual Standard Deviation
0.315
Annual Variance
0.099
Information Ratio
0.623
Tracking Error
0.324
Treynor Ratio
1.064
Total Fees
$0.00
Estimated Strategy Capacity
$190000.00
Lowest Capacity Asset
BTCUSD E3
Portfolio Turnover
1.53%
# region imports
from AlgorithmImports import *
# endregion


class TrumpFactorOnBitcoinPerformanceAlgorithm(QCAlgorithm):

    def initialize(self):
        self.set_start_date(2022, 11, 1)
        self.set_end_date(2024, 8, 13)  # These start/end dates align with the data file
        self.set_cash(100_000)
        self.add_crypto('BTCUSD', market=Market.BITFINEX)
        self._election_lead = self.add_data(TrumpLead, 'TrumpLead').symbol

    def on_data(self, data):
        if self._election_lead in data:
            self.set_holdings('BTCUSD', int(data[self._election_lead].value > 0))


class TrumpLead(PythonData):
    
    def get_source(self, config, date, is_live_mode):
        # Original source: https://www.realclearpolling.com/polls/president/general/2024/trump-vs-harris
        return SubscriptionDataSource("https://www.dropbox.com/scl/fi/f87o5azouo09sqecpebw2/parsed_election_data.csv?rlkey=abuch8e53oi8jlgmnt0s58jbj&st=05wgpd6s&dl=1", SubscriptionTransportMedium.REMOTE_FILE)

    def reader(self, config, line, date, is_live_mode):
        if not line[0].isdigit():
            return None
        lead = TrumpLead()
        lead.symbol = config.symbol
        data = line.split(',')
        lead.end_time = datetime.fromisoformat(data[0])
        lead.value = float(data[2]) - float(data[1]) - float(data[3]) # Lead = Trump - Harris - Biden 
        return lead