| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 15.562% Drawdown 30.400% Expectancy 0 Net Profit 165.453% Sharpe Ratio 0.896 Probabilistic Sharpe Ratio 32.312% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.152 Beta 0.005 Annual Standard Deviation 0.17 Annual Variance 0.029 Information Ratio 0.146 Tracking Error 0.234 Treynor Ratio 28.923 Total Fees $0.00 |
from QuantConnect.Python import *
from QuantConnect.Python import PythonData
from QuantConnect.Data import SubscriptionDataSource
import numpy as np
from datetime import datetime, timedelta
class CustomDataBitcoinAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2013, 9, 3)
self.SetCash(100000)
# Define the symbol and "type" of our generic data:
if not self.LiveMode:
self.AddData(AAPL, "AAPL")
else:
self.AddEquity('AAPL', Resolution.Minute)
def OnData(self, data):
# if not data.ContainsKey("AAPL"): return
if not self.Portfolio.Invested:
self.SetHoldings("AAPL", 1)
self.Log('bought apple')
# self.Log("AAPL Bar OHLCV: {0}, {1}, {2}, {3}, {4}".format(data['AAPL'].Open,
# data['AAPL'].High,
# data['AAPL'].Low,
# data['AAPL'].Close,
# data['AAPL'].Volume))
class AAPL(PythonData):
def GetSource(self, config, date, isLiveMode):
if isLiveMode:
return
return SubscriptionDataSource("https://www.dropbox.com/s/3qly3rdwkfeju8l/EOD%20AAPL.csv?dl=1", SubscriptionTransportMedium.RemoteFile);
def Reader(self, config, line, date, isLiveMode):
equity = AAPL()
equity.Symbol = config.Symbol
if isLiveMode:
return None
# Example Line Format:
# Date Open High Low Close Volume Dividend Split Adj_Open Adj_High Adj_Low Adj_Close Adj_Volume
# 9/3/2013 493.1 500.6 487.35 488.58 11854600 0 1 62.70198278 63.65567345 61.97081993 62.1272252 82982200
if not (line.strip() and line[0].isdigit()): return None
try:
data = line.split(',')
# If adj. close price is zero, return None
value = data[11]
if value == 0: return None
equity.Time = datetime.strptime(data[0], "%m/%d/%Y") + timedelta(1)
equity.Value = value
equity["Open"] = float(data[8])
equity["High"] = float(data[9])
equity["Low"] = float(data[10])
equity["Close"] = float(data[11])
equity["Volume"] = float(data[12])
return equity;
except ValueError:
# Do nothing, possible error in json decoding
return None