Variance Ratio Test
Calculate the Lo-MacKinlay Variance Ratio test for the random walk hypothesis.
The test compares the Variance of q-period (overlapping) compounded returns to q times the Variance of single-period returns. Under the random walk hypothesis these should be equal, giving a Variance Ratio of 1. A Variance Ratio above 1 with a significant (low) p-value indicates positive autocorrelation (momentum/trending behavior), while a Variance Ratio below 1 with a significant p-value indicates negative autocorrelation (mean-reversion).
For more information about the method, see the following paper:
- Lo, A.W., & MacKinlay, A.C. (1988). “Stock Market Prices Do Not Follow Random Walks: Evidence from a Simple Specification Test.” Review of Financial Studies, 1(1), 41-66.
Also known as: Lo-MacKinlay test, VR test.
Variance Ratio Test in Python
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_variance_ratio_test as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.econometrics.get_variance_ratio_test(period="quarterly", within_period=False)
Which returns:
| AMZN | TSLA | |
|---|---|---|
| Variance Ratio | 0.8526 | 0.7523 |
| Variance Ratio Statistic | -0.6757 | -1.1353 |
| P-Value | 0.4993 | 0.2563 |
Parameters
The function accepts the following parameters:
- period (str, optional): The data frequency for returns (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”.
- within_period (bool, optional): Whether to calculate the test within the specified period or for the entire period. Thus whether to look at the test within a specific year (if period = ‘yearly’) or look at the entirety of all years. Defaults to False.
- q (int, optional): The number of periods to compound returns over. Defaults to 2.
- include_benchmark (bool, optional): Whether to include “Benchmark” among the assets tested. Defaults to False.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.