Supported Indicators
Alpha
Introduction
In financial analysis, the Alpha indicator is used to measure the performance of an investment (such as a stock or ETF) relative to a benchmark index, often representing the broader market. Alpha indicates the excess return of the investment compared to the return of the benchmark index. The S P 500 index is frequently used as a benchmark in Alpha calculations to represent the overall market performance. Alpha is an essential tool for investors to understand the idiosyncratic returns of their investment that aren't caused by movement in the underlying benchmark.
To view the implementation of this indicator, see the LEAN GitHub repository.
Using A Indicator
To create an automatic indicators for Alpha
, call the A
helper method from the QCAlgorithm
class. The A
method creates a Alpha
object, hooks it up for automatic updates, and returns it so you can used it in your algorithm. In most cases, you should call the helper method in the Initialize
initialize
method.
public class AlphaAlgorithm : QCAlgorithm { private Symbol _symbol; private Symbol _reference; private Alpha _a; public override void Initialize() { _symbol = AddEquity("SPY", Resolution.Daily).Symbol; _reference = AddEquity("QQQ", Resolution.Daily).Symbol; _a = A(_symbol, reference, 20); } public override void OnData(Slice data) { if (_a.IsReady) { // The current value of _a is represented by itself (_a) // or _a.Current.Value Plot("Alpha", "a", _a); } } }
class AlphaAlgorithm(QCAlgorithm): def Initialize(self) -> None: self._symbol = self.AddEquity("SPY", Resolution.Daily).Symbol self.reference = self.AddEquity("QQQ", Resolution.Daily).Symbol self.a = self.A(self.symbol, reference, 20) def on_data(self, slice: Slice) -> None: if self.a.IsReady: # The current value of self.a is represented by self.a.Current.Value self.plot("Alpha", "a", self.a.Current.Value)
The following reference table describes the A
method:
A()1/1
Alpha QuantConnect.Algorithm.QCAlgorithm.A (Symbol
target,Symbol
reference,*Int32
alphaPeriod,*Int32
betaPeriod,*Nullable<Resolution>
resolution,*Nullable<Decimal>
riskFreeRate,*Func<IBaseData, IBaseDataBar>
selector )
Creates a Alpha indicator for the given target symbol in relation with the reference used. The indicator will be automatically updated on the given resolution.
If you don't provide a resolution, it defaults to the security resolution. If you provide a resolution, it must be greater than or equal to the resolution of the security. For instance, if you subscribe to hourly data for a security, you should update its indicator with data that spans 1 hour or longer.
For more information about the selector argument, see Alternative Price Fields.
For more information about plotting indicators, see Plotting Indicators.
You can manually create a Alpha
indicator, so it doesn't automatically update. Manual indicators let you update their values with any data you choose.
Updating your indicator manually enables you to control when the indicator is updated and what data you use to update it. To manually update the indicator, call the Update
update
method with a TradeBar
or QuoteBar
. The indicator will only be ready after you prime it with enough data.
public class AlphaAlgorithm : QCAlgorithm { private Symbol _symbol; private Symbol _reference; private Alpha _a; public override void Initialize() { _symbol = AddEquity("SPY", Resolution.Daily).Symbol; _reference = AddEquity("QQQ", Resolution.Daily).Symbol; _a = new Alpha("", _symbol, reference, 20); } public override void OnData(Slice data) { if (data.Bars.TryGetValue(_symbol, out var bar)) { _a.Update(bar); } if (data.Bars.TryGetValue(_reference, out bar)) { _a.Update(bar); } if (_a.IsReady) { // The current value of _a is represented by itself (_a) // or _a.Current.Value Plot("Alpha", "a", _a); } } }
class AlphaAlgorithm(QCAlgorithm): def Initialize(self) -> None: self._symbol = self.AddEquity("SPY", Resolution.Daily).Symbol self.reference = self.AddEquity("QQQ", Resolution.Daily).Symbol self.a = Alpha("", self.symbol, reference, 20) def on_data(self, slice: Slice) -> None: bar = slice.Bars.get(self.symbol) if bar: self.a.Update(bar) bar = slice.Bars.get(self.referece) if bar: self.a.Update(bar) if self.a.IsReady: # The current value of self.a is represented by self.a.Current.Value self.plot("Alpha", "a", self.a.Current.Value)
To register a manual indicator for automatic updates with the security data, call the RegisterIndicator
method.
public class AlphaAlgorithm : QCAlgorithm { private Symbol _symbol; private Symbol _reference; private Alpha _a; public override void Initialize() { _symbol = AddEquity("SPY", Resolution.Daily).Symbol; _reference = AddEquity("QQQ", Resolution.Daily).Symbol; _a = new Alpha("", _symbol, reference, 20); RegisterIndicator(_symbol, _a, Resolution.Daily); RegisterIndicator(reference, _a, Resolution.Daily); } public override void OnData(Slice data) { if (_a.IsReady) { // The current value of _a is represented by itself (_a) // or _a.Current.Value Plot("Alpha", "a", _a); } } }
class AlphaAlgorithm(QCAlgorithm): def Initialize(self) -> None: self._symbol = self.AddEquity("SPY", Resolution.Daily).Symbol self.reference = self.AddEquity("QQQ", Resolution.Daily).Symbol self.a = Alpha("", self.symbol, reference, 20) self.RegisterIndicator(self.symbol, self.a, Resolution.Daily) self.RegisterIndicator(reference, self.a, Resolution.Daily) def on_data(self, slice: Slice) -> None: if self.a.IsReady: # The current value of self.a is represented by self.a.Current.Value self.plot("Alpha", "a", self.a.Current.Value)
The following reference table describes the Alpha
constructor:
Alpha()1/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,IRiskFreeInterestRateModel
riskFreeRateModel )
Creates a new Alpha indicator with the specified name, target, reference, and period values.
Alpha()2/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,*decimal?
riskFreeRate )
Creates a new Alpha indicator with the specified name, target, reference, and period values.
Alpha()3/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,*decimal?
riskFreeRate )
Creates a new Alpha indicator with the specified target, reference, and period values.
Alpha()4/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
period,*decimal?
riskFreeRate )
Creates a new Alpha indicator with the specified target, reference, and period value.
Alpha()5/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
period,*decimal?
riskFreeRate )
Creates a new Alpha indicator with the specified name, target, reference, and period value.
Alpha()6/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,IRiskFreeInterestRateModel
riskFreeRateModel )
Creates a new Alpha indicator with the specified target, reference, and period values.
Alpha()7/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
period,IRiskFreeInterestRateModel
riskFreeRateModel )
Creates a new Alpha indicator with the specified target, reference, and period value.
Alpha()8/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
period,IRiskFreeInterestRateModel
riskFreeRateModel )
Creates a new Alpha indicator with the specified name, target, reference, and period value.
Alpha()9/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,PyObject
riskFreeRateModel )
Creates a new Alpha indicator with the specified name, target, reference, and period values.
Alpha()10/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
alphaPeriod,int
betaPeriod,PyObject
riskFreeRateModel )
Creates a new Alpha indicator with the specified target, reference, and period values.
Alpha()11/12
Alpha QuantConnect.Indicators.Alpha (Symbol
targetSymbol,Symbol
referenceSymbol,int
period,PyObject
riskFreeRateModel )
Creates a new Alpha indicator with the specified target, reference, and period value.
Alpha()12/12
Alpha QuantConnect.Indicators.Alpha (string
name,Symbol
targetSymbol,Symbol
referenceSymbol,int
period,PyObject
riskFreeRateModel )
Creates a new Alpha indicator with the specified name, target, reference, and period value.
Visualization
The following image shows plot values of selected properties of Alpha
using the plotly library.