Normalize one-point regression residual volatility
This commit is contained in:
@@ -501,6 +501,24 @@ class RegressionTests(unittest.TestCase):
|
||||
self.assertTrue(np.isnan(result["adj_r_squared"]))
|
||||
self.assertAlmostEqual(result["residual_vol_ann"], 0.0, places=12)
|
||||
|
||||
def test_run_factor_regression_single_observation_intercept_only_has_zero_residual_vol(self):
|
||||
dates = pd.date_range("2024-01-01", periods=1, freq="B")
|
||||
factors = pd.DataFrame(index=dates)
|
||||
strategy = pd.Series([0.0015], index=dates)
|
||||
|
||||
result = run_factor_regression(strategy, factors, factor_cols=[])
|
||||
|
||||
self.assertAlmostEqual(result["alpha_daily"], 0.0015, places=12)
|
||||
self.assertEqual(result["betas"], {})
|
||||
self.assertEqual(result["t_stats"], {})
|
||||
self.assertEqual(result["p_values"], {})
|
||||
self.assertEqual(result["r_squared"], 0.0)
|
||||
self.assertTrue(np.isnan(result["alpha_t_stat"]))
|
||||
self.assertTrue(np.isnan(result["alpha_p_value"]))
|
||||
self.assertTrue(np.isnan(result["adj_r_squared"]))
|
||||
self.assertEqual(result["n_obs"], 1)
|
||||
self.assertAlmostEqual(result["residual_vol_ann"], 0.0, places=12)
|
||||
|
||||
def test_run_factor_regression_rejects_rank_deficient_designs(self):
|
||||
dates = pd.date_range("2024-01-01", periods=6, freq="B")
|
||||
market = np.array([0.01, -0.02, 0.015, 0.005, -0.01, 0.02])
|
||||
|
||||
Reference in New Issue
Block a user