Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Probabilistic Sharpe Ratio
0%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
-1.322
Tracking Error
0.19
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
import pandas as pd, numpy as np

owner = 'marcdemers'
repo = 'test_fetch'
path = 'test_file_0101.csv'
url = 'https://api.github.com/repos/{owner}/{repo}/contents/{path}'.format(owner=owner, repo=repo, path=path)


TOKEN = '1261aabaf38c3ea45aba6dbd20b320ae8668751b'
headers = {
    'accept': 'application/vnd.github.v3.raw',
           'authorization': 'token {}'.format(TOKEN),
           "user-agent": "PyGithub/Python"
           }


class CustomDataClass(PythonData):
    '''Custom Data Class'''

    def GetSource(self, config, date, isLiveMode):
        if isLiveMode:
            raise ValueError("live not implemented")

        subscription = SubscriptionDataSource("https://raw.githubusercontent.com/marcdemers/test_fetch/main/test_file_0101.csv",
            SubscriptionTransportMedium.RemoteFile,
            FileFormat.Csv,
            headers # Commenting out headers here will make the Subscription work
        )
        return subscription

    def Reader(self, config, line, date, isLiveMode):
        #TEST    2020-01-01    0.027    0.027    0.027    0.027    1

        # if not (line.strip() and line[2].isdigit()): return None

        bar = CustomDataClass()
        bar.Symbol = config.Symbol

        try:
            data = line.split(',')
            symbol_str = data[0]
            bar.Symbol = symbol_str

            bar.Time = datetime.strptime(data[1], "%Y-%m-%d")

            bar.Value = data[5]

            bar["Open"] = float(data[2])
            bar["High"] = float(data[3])
            bar["Low"] = float(data[4])
            bar["Close"] = float(data[5])
            bar["Volume"] = float(data[6])

        except ValueError:
            # Do nothing
            return None

        return bar


class TestGithub(QCAlgorithm):
    def Initialize(self):

        self.SetStartDate(2020, 1, 1)  # inclusive
        self.SetEndDate(2020, 1, 3)  # inclusive

        self.SetCash(100000)  # Set Strategy Cash
        
        resp = self.Download(url, headers)
        self.Debug(resp) # works!

        symb1 = self.AddData(CustomDataClass, "TEST", Resolution.Daily).Symbol
        symb2 = self.AddData(CustomDataClass, "TEST2", Resolution.Daily).Symbol
        symb3 = self.AddData(CustomDataClass, "TEST3", Resolution.Daily).Symbol

    def OnData(self, slice):
        '''OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
            Arguments:
                slice: Slice object keyed by symbol containing the stock data
        '''

        self.Debug(slice.Time)
        self.Debug(slice.Keys)