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.786 Tracking Error 0.141 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset |
from datetime import datetime import numpy as np import pandas as pd class FatRedOrangeLion(QCAlgorithm): def Initialize(self): self.period = 63 self.SetStartDate(2014, 1, 1) self.SetEndDate(2022, 1, 1) self.SetCash(100000) self.SetWarmup(self.period) self.stock = self.AddEquity('AAPL', Resolution.Daily).Symbol self.volatility = Volatility(self.period) self.RegisterIndicator(self.stock, self.volatility, Resolution.Daily) # self.RegisterIndicator(self.stock, self.volatility, Resolution.Daily, Field.Volume) chart = Chart('Results') chart.AddSeries(Series('Price', SeriesType.Line, 0)) chart.AddSeries(Series('Volatility', SeriesType.Line, 1)) self.AddChart(chart) def OnData(self, data): if data.ContainsKey(self.stock) and data[self.stock]: self.Plot('Results', 'Price', data[self.stock].Close) self.Plot('Results', 'Volatility', self.volatility.Current.Value) class Volatility: def __init__(self, period): self.Period = period self.Values = RollingWindow[float](period) self.Value = 0 self.Current = IndicatorDataPoint(datetime.min, self.Value) self.IsReady = False def Update(self, input): self.Values.Add(input.Value) value = pd.Series(self.Values).iloc[::-1].pct_change().std() * np.sqrt(252) self.Current = IndicatorDataPoint(input.Time, value) self.IsReady = self.Values.Count == self.Period return self.IsReady