Overall Statistics
Total Trades
127
Average Win
0.91%
Average Loss
-0.90%
Compounding Annual Return
-2.615%
Drawdown
11.800%
Expectancy
0.020
Net Profit
-1.097%
Sharpe Ratio
0.032
Probabilistic Sharpe Ratio
22.747%
Loss Rate
49%
Win Rate
51%
Profit-Loss Ratio
1.01
Alpha
-0.229
Beta
1.035
Annual Standard Deviation
0.227
Annual Variance
0.051
Information Ratio
-1.156
Tracking Error
0.191
Treynor Ratio
0.007
Total Fees
$1001.70
Estimated Strategy Capacity
$21000000.00
Lowest Capacity Asset
AAPL R735QTJ8XC9X
Portfolio Turnover
165.94%
# region imports
from AlgorithmImports import *
from QuantConnect.DataSource import *

class TiingoNewsDataAlgorithm(QCAlgorithm):

    current_holdings = 0
    target_holdings = 0
    word_scores = {'good': 1, 'great': 1, 'best': 1, 'growth': 1,
                   'bad': -1, 'terrible': -1, 'worst': -1, 'loss': -1}

    def Initialize(self) -> None:
        self.SetStartDate(2021, 1, 1)
        self.SetEndDate(2021, 6, 1)
        self.SetCash(100000)
        
        # Requesting data
        self.aapl = self.AddEquity("AAPL", Resolution.Minute).Symbol
        self.tiingo_symbol = self.AddData(TiingoNews, self.aapl).Symbol
        
        
    def OnData(self, slice: Slice) -> None:
        if slice.ContainsKey(self.tiingo_symbol):
            # Assign a sentiment score to the news article
            title_words = slice[self.tiingo_symbol].Description.lower()
            score = 0
            for word, word_score in self.word_scores.items():
                if word in title_words:
                    score += word_score
                    
            if score > 0:
                self.target_holdings = 1
                
            elif score < 0:
                self.target_holdings = -1
        
        # Buy or short sell if the sentiment has changed from our current holdings
        if slice.ContainsKey(self.aapl) and self.current_holdings != self.target_holdings:
            self.SetHoldings(self.aapl, self.target_holdings)
            self.current_holdings = self.target_holdings