| 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 -2.396 Tracking Error 0.212 Treynor Ratio 0 Total Fees $0.00 |
import datetime
import numpy as np
import pandas as pd
import mlfinlab as ml
from scipy import stats
import math
class ModulatedHorizontalAutosequencers(QCAlgorithm):
index = 0
volume = None
volmet = {}
def Initialize(self):
self.SetStartDate(2020, 4, 20) # Set Start Date
self.SetEndDate(2020, 9, 19)
self.SetCash(100000) # Set Strategy Cash
self.AddEquity("SPY", Resolution.Hour)
self.start = datetime.date(2020, 3, 15)
self.end = datetime.date(2020, 3, 25)
self.features = ["open", "high", "low", "close", "volume"]
self.estado = True
self.stockPlot = Chart('Volume Levels')
def Lbl(self, _z):
return _z + str( int( self.volmet[_z][0] - self.volmet[_z][1] ) )
def Norm(self, _s):
try:
if self.volmet[_s][0] == 0:
return round(math.log(100), 4)
return str(round(math.log( 100 * ( math.fabs(self.volume[_s].values[self.index] - self.volmet[_s][1] ) / self.volmet[_s][0] )),4))
except:
return round(math.log(100), 4)
def OnData(self, data):
if self.volume is not None:
if len(self.volmet.keys()) == 0:
self.volmet["close"] = (self.volume["close"].max(),self.volume["close"].min())
self.volmet["volume"] = (self.volume["volume"].max(), self.volume["volume"].min())
self.volmet["cum_buy_volume"] = (self.volume["cum_buy_volume"].max(),self.volume["cum_buy_volume"].min())
self.volmet["cum_ticks"] = (self.volume["cum_ticks"].max(), self.volume["cum_ticks"].min())
self.volmet["cum_dollar_value"] = (self.volume["cum_dollar_value"].max(),self.volume["cum_dollar_value"].min())
if self.index < len(self.volume.index):
self.Plot("Volume Levels", self.Lbl("close"), self.Norm("close"))
self.Plot("Volume Levels", self.Lbl("volume"), self.Norm("volume"))
self.Plot("Volume Levels", self.Lbl("cum_buy_volume"), self.Norm("cum_buy_volume"))
self.Plot("Volume Levels", self.Lbl("cum_ticks"), self.Norm("cum_ticks"))
self.Plot("Volume Levels", self.Lbl("cum_dollar_value"), self.Norm("cum_dollar_value"))
self.index += int((self.EndDate - self.StartDate).days / (6.5 * 5/7))
if len(self.Securities.Keys) > 0 and self.estado:
h1 = self.History([k.Value for k in self.Securities.Keys], self.end - self.start, Resolution.Tick)
data = h1#[h1.suspicious == False]
data = data[["lastprice", "quantity"]]
data = data.loc["SPY R735QTJ8XC9X"]
df = pd.DataFrame()
df["date_time"] = data.index.values
df["price"] = data.lastprice.values
df["volume"] = data.quantity.values
self.volume = ml.data_structures.get_volume_bars(df, threshold=20000, batch_size=1000000, verbose=False)
self.Debug(self.volume.head(10).to_string())
self.Debug(".... .... ....")
self.Debug(self.volume.tail(10).to_string())
self.estado = False