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