Skip to content

Beta coefficient (β)

Beta shows how strongly one asset's price responds to systemic volatility of the entire market. Beta measures an asset's non-diversifiable systematic risk — its market exposure — not its idiosyncratic, asset-specific risk. Upside Beta (Beta+) and Downside Beta (Beta-), popularized by Harry M. Markowitz, are also included. Beta+ and Beta- capture asymmetric sensitivity during rising and falling markets. [Discuss] 💬

csharp
// C# usage syntax
IReadOnlyList<BetaResult> results = barsEval
  .ToBeta(barsMarket, lookbackPeriods, type);

Parameters

paramtypedescription
barsEvalIReadOnlyList<TBar>Historical price bars used as the evaluation subject. You must have the same number of periods as barsMarket.
barsMarketIReadOnlyList<TBar>Historical price bars used as the benchmark basis for comparison. This is usually market index data. You must have the same number of periods as barsEval.
lookbackPeriodsintNumber of periods (N) in the lookback window. Must be greater than 0 to calculate; however we suggest a larger period for statistically appropriate sample size and especially when using Beta +/-.
typeBetaTypeType of Beta to calculate. Default is BetaType.Standard. See BetaType options below.

Historical price bars requirements

You must have at least N periods of barsEval and barsMarket to cover the warmup periods. More than the minimum is typically provided, since a larger sample improves statistical quality — especially when using Beta +/-.

barsEval and barsMarket must have consistent frequency (day, hour, minute, etc). Mismatch histories will throw InvalidBarsException. See the Guide for more information.

BetaType options

typedescription
BetaType.StandardStandard Beta only. Uses all historical price bars. (default)
BetaType.UpUpside Beta only. Uses market up bars only.
BetaType.DownDownside Beta only. Uses market down bars only.
BetaType.AllReturns all of the above. Required for Ratio and Convexity values. Note: 3× slower.

✨ Pro tip

Financial institutions often depict a single number for Beta on their sites. To get that same long-term Beta value, use 5 years of monthly bars for bars and a value of 60 for lookbackPeriods. If you only have smaller bars, use the Aggregate() utility to convert it.

Alpha is calculated as R – Rf – Beta (Rm - Rf), where Rf is the risk-free rate.

Response

csharp
IReadOnlyList<BetaResult>
  • This method returns a time series of all available indicator values for the bars provided.
  • It always returns the same number of elements as there are in the historical price bars.
  • It does not return a single incremental indicator value.
  • The first N-1 periods will have null values since there's not enough data to calculate.

BetaResult

propertytypedescription
TimestampDateTimeDate from evaluated TBar
BetadoubleBeta coefficient based
BetaUpdoubleBeta+ (Up Beta)
BetaDowndoubleBeta- (Down Beta)
RatiodoubleBeta ratio is BetaUp/BetaDown
ConvexitydoubleBeta convexity is (BetaUp-BetaDown)2
ReturnsEvaldoubleReturns of evaluated bars (R)
ReturnsMrktdoubleReturns of market bars (Rm)

Utilities

See Utilities and helpers for more information.

Chaining

This indicator may be generated from any chain-enabled indicator or method.

csharp
// example
var results = barsEval
    .Use(CandlePart.HL2)
    .ToBeta(barsMarket.Use(CandlePart.HL2), ..);

🚩

Both eval and market arguments must contain the same number of elements and be the results of a chainable indicator or .Use() method.

Results can be further processed on Beta with additional chain-enabled indicators.

csharp
// example
var results = barsEval
    .ToBeta(barsMarket, ..)
    .ToSlope(..);

See Chaining indicators for more.

Streaming

Streaming is not supported for this indicator. This indicator requires a second synchronized bar series, which cannot be expressed in the single-series streaming model. Use the Series (batch) implementation with periodic recalculation instead.