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
0.157
Tracking Error
0.181
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
from clr import AddReference
AddReference("System.Core")
AddReference("QuantConnect.Common")
AddReference("QuantConnect.Algorithm")

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import QCAlgorithm
from QuantConnect.Data import SubscriptionDataSource
from QuantConnect.Python import PythonData

from datetime import datetime, timedelta
import json

class ExuberAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 5, 1)
        
        self.AddEquity('SPY', Resolution.Hour)
        CustomDataSource.set_algo(self)
        
        self.symbol = self.AddData(CustomDataSource, "CustomDataSource", Resolution.Hour).Symbol

    def OnData(self, data):
        if data.ContainsKey(self.symbol):
            self.Log(f'Data Received. Value: {data[self.symbol].Value}')

class CustomDataSource(PythonData):
    algo = None
    
    @staticmethod
    def set_algo(algo):
        CustomDataSource.algo = algo
    

    def GetSource(self, config, date, isLive):
        CustomDataSource.algo.Log(f"GetSource at {CustomDataSource.algo.Time} {date}")
        source = "https://www.dropbox.com/s/93f6dz8yqh8vr62/custom-data-test.csv?dl=1"
        return SubscriptionDataSource(source, SubscriptionTransportMedium.RemoteFile)


    def Reader(self, config, line, date, isLive):
        index = CustomDataSource()
        index.Symbol = config.Symbol
        
        data = line.split(',')
        index.Time = datetime.strptime(data[0], '%m/%d/%Y %H:%M')
        CustomDataSource.algo.Log(f"Reader at {CustomDataSource.algo.Time}")
        index.Value = 1.0  # Random value
        return index