factor module

btQuant.factor.appraisalRatio(alpha, residualRisk)[source]

Appraisal ratio (alpha / residual risk).

Parameters:
  • alpha – Jensen’s alpha

  • residualRisk – residual standard deviation

Returns:

appraisal ratio

btQuant.factor.apt(riskFactors, factorBetas, riskFree=0.02)[source]

Arbitrage Pricing Theory expected return.

Parameters:
  • riskFactors – array of factor returns

  • factorBetas – array of factor sensitivities

  • riskFree – risk-free rate

Returns:

expected return

btQuant.factor.capm(marketReturn, beta, riskFree=0.02)[source]

Capital Asset Pricing Model expected return.

Parameters:
  • marketReturn – market return

  • beta – systematic risk

  • riskFree – risk-free rate

Returns:

expected return

btQuant.factor.carhart4(marketReturns, smb, hml, momentum, betaM, betaSmb, betaHml, betaMom, riskFree=0.02)[source]

Carhart 4-factor model expected return.

Parameters:
  • marketReturns – market excess returns

  • smb – size factor

  • hml – value factor

  • momentum – momentum factor

  • betaM – market beta

  • betaSmb – size beta

  • betaHml – value beta

  • betaMom – momentum beta

  • riskFree – risk-free rate

Returns:

expected return

btQuant.factor.estimateBeta(assetReturns, marketReturns)[source]

Estimate beta coefficient.

Parameters:
  • assetReturns – asset returns

  • marketReturns – market returns

Returns:

dict with beta, alpha, rSquared

btQuant.factor.estimateFactorLoading(assetReturns, factorReturns)[source]

Estimate factor loadings via OLS.

Parameters:
  • assetReturns – asset returns (1D array)

  • factorReturns – factor returns (2D array, nObs x nFactors)

Returns:

dict with loadings, intercept, rSquared

btQuant.factor.factorMimicking(assetReturns, characteristicData, nPortfolios=5)[source]

Create factor-mimicking portfolios (e.g., SMB, HML).

Parameters:
  • assetReturns – returns matrix (nObs x nAssets)

  • characteristicData – characteristic values (1D array, nAssets)

  • nPortfolios – number of portfolios for sorting

Returns:

dict with longShort factor returns

btQuant.factor.famaFrench3(marketReturns, smb, hml, betaM, betaSmb, betaHml, riskFree=0.02)[source]

Fama-French 3-factor model expected return.

Parameters:
  • marketReturns – market excess returns (array)

  • smb – size factor returns (array)

  • hml – value factor returns (array)

  • betaM – market beta

  • betaSmb – size beta

  • betaHml – value beta

  • riskFree – risk-free rate

Returns:

expected return

btQuant.factor.informationRatio(assetReturns, benchmarkReturns)[source]

Information ratio (active return / tracking error).

Parameters:
  • assetReturns – portfolio returns

  • benchmarkReturns – benchmark returns

Returns:

information ratio

btQuant.factor.jensenAlpha(assetReturns, marketReturns, riskFree=0.0)[source]

Calculate Jensen’s alpha.

Parameters:
  • assetReturns – asset returns

  • marketReturns – market returns

  • riskFree – risk-free rate per period

Returns:

Jensen’s alpha

btQuant.factor.multifactor(assetReturns, factorReturns, riskFree=0.0)[source]

Multi-factor model regression.

Parameters:
  • assetReturns – asset returns

  • factorReturns – matrix of factor returns (nObs x nFactors)

  • riskFree – risk-free rate

Returns:

dict with alpha, betas, rSquared, residuals

btQuant.factor.pcaFactors(returns, nFactors=3)[source]

Extract principal component factors.

Parameters:
  • returns – returns matrix (nObs x nAssets)

  • nFactors – number of factors to extract

Returns:

dict with factors, loadings, explainedVariance

btQuant.factor.rollingBeta(assetReturns, marketReturns, window=60)[source]

Calculate rolling beta.

Parameters:
  • assetReturns – asset returns

  • marketReturns – market returns

  • window – rolling window size

Returns:

array of rolling betas

btQuant.factor.trackingError(assetReturns, benchmarkReturns)[source]

Tracking error (std dev of active returns).

Parameters:
  • assetReturns – portfolio returns

  • benchmarkReturns – benchmark returns

Returns:

tracking error

btQuant.factor.treynorMazuy(assetReturns, marketReturns, riskFree=0.0)[source]

Treynor-Mazuy market timing model.

Parameters:
  • assetReturns – asset returns

  • marketReturns – market returns

  • riskFree – risk-free rate

Returns:

dict with alpha, beta, gamma (timing coefficient)