I am a student writing my thesis on default rate modeling. My major is finance, so I'm not really experienced in econometrics. I'm trying to create a model for quarterly corporate default rates (percentage of defaulted corporations in the previous 12 months) with macroeconomical variables (GDP growth, interest rate, debt/GDP, etc.)

My problem is, that according to ADF and KPSS my variables are non-stationary. Differenciating doesn't really help, and second differences hold no explanatory value. The variables are not cointegrated. I'm using a sample of 17 years (60-70 values, depending on the variable lags). They should be stationary on the long term (100 years), but my sample is very narrow.

Because I'm using quaretly data of annual default rates, the dependent variable is also heavily autocorrelated. Using annual data shows no autocorrelation, but 16 variables are few for a model.

My goal is to examine the significance of the independent variables and their lags in different sectors, and also trying out different methods for modeling (linear, linear with lags, log-linear, diffeneciated, and all with Hodrick-Prescott filter).

In real life it is common practice by banks to just use linear regression, which I did, and got awesome results, but it turns out at the end that the data needs to be stationary and non-autocorrelated for this model.

The only appropriate model I found was ARDL which suggests 4 lags and it shows that all four lags of the dependent variable is significant, so it's not really helpful for me.

I'm running out of ideas what kind of models to use or how to explain why I used linear regression.

Please help, I'm getting desperate.

edit: Data used

edit2: I tried to use Newey-West and Hansen-Hodrick Standard Errors to correct the issue of (overlapping) autocorrelation, the coefficients and the Durbin-Watson value did not change, only the p ant t values in a minimal way.

edit3: MY final regression model is ln⁡(hp_DR)= -0,3349+0,0182*hp_debt/GDP(t-2))+ + 0,0639* hp_interest(t-11)- 0,0182* hp_GDP(t-9)+ μ,

DR is the default rate in percentage, debt/GDP is corporate debt/GDP rate in %, and interest rate is government 10 year bond yields. All with Hodrick-Prescott filter (hp) and appropriate lags.

default rate plot: default rate

  • $\begingroup$ Can you edit your post to give an example of linear regression model you used? Just write it up as Y ~ X1 + X2+ ... + Xp and explain who your predictors are. $\endgroup$ – Isabella Ghement Nov 21 '18 at 3:28
  • $\begingroup$ Thank you for your edit! You can use multiple linear regression with autocorrelated errors for your modelling - in R, this would be implemented with the gls() function in the nlme package which has a "correlation =". You would fit your multiple linear regression model with temporally uncorrelated errors first and then check the model residuals for evidence of temporal autocorrelation via the ACF and PACF plots. If there is evidence of autocorrelation, you can model that with corARMA or corAR. $\endgroup$ – Isabella Ghement Nov 21 '18 at 15:41
  • $\begingroup$ With quarterly data, you may have expected to see seasonality in your input series for your multiple linear regression model - but if thar is not the case, you won't need to control for seasonality in the model. The beauty of using something like the gls() function is that you can fit various competing models to your data using method = "REML" (restricted maximum likelihood estimation) and then compare the models based on BIC (since you seem to be interested in explanation rather than forecasting). $\endgroup$ – Isabella Ghement Nov 21 '18 at 15:45
  • $\begingroup$ The crosscorrelation function (ccf in R) will give you some clues as to what lags you should include in your modelling for the predictor of interest. Simply apply this function to the response variable and the non-lagged predictor variable and then interpret the resulting plot as explained here, for instance: stats.stackexchange.com/questions/253778/…. $\endgroup$ – Isabella Ghement Nov 21 '18 at 15:51
  • $\begingroup$ Or here: michaeljgrogan.com/cross-correlation-r. $\endgroup$ – Isabella Ghement Nov 21 '18 at 16:00

Have you thought about using a PCA, clustering or random forest for determining independent variable significance?

For forecasting, you could use an ARIMAX model with exogenous inputs. Just fill in the appropriate parameters, (p,d,q). AR models are commonly used for econometric forecasts. You could also use random forest to do this forecast, but with the lack of data it might be an issue.

One last thought, you might want to transform the data to percent change before performing the independent variable tests. Although, leave the data as is for the ARIMAX forecast.


The answer to your most recent comment is a bit lengthy so I am making it an update. Also I think I have a better picture of what you are try to accomplish.

You should not be using a simple linear model with non-stationary series to explain the variance of the dependent variable. You should be using % change / differences. Using a non-stationary series you will get a great r-squared, but it is incorrect because the model is not picking up the variance, it is only seeing the trend. Below is a quick example to illustrate using the SPY ETF. As you can see the price series regression looks great, .99 r-squared , but it is a lie! When you do the return series, you get the real answer that it is a bad model with no predictive or explanatory power.

Linear Regression using price series

lm(formula = spy.close.px[-1] ~ spy.close.px[-nrow(spy.close.px)])

     Min       1Q   Median       3Q      Max 
-11.5588  -0.7205   0.0493   0.8592  12.8073 

                                   Estimate Std. Error  t value            Pr(>|t|)    
(Intercept)                       0.0445310  0.1024606    0.435               0.664    
spy.close.px[-nrow(spy.close.px)] 0.9999792  0.0005781 1729.656 <0.0000000000000002 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.704 on 2991 degrees of freedom
Multiple R-squared:  0.999, Adjusted R-squared:  0.999 
F-statistic: 2.992e+06 on 1 and 2991 DF,  p-value: < 0.00000000000000022

Linear Regression using returns

lm(formula = spy.returns[-1] ~ spy.returns[-nrow(spy.returns)])

      Min        1Q    Median        3Q       Max 
-0.105063 -0.004327  0.000488  0.005280  0.133375 

                                  Estimate Std. Error t value  Pr(>|t|)    
(Intercept)                      0.0002255  0.0002262   0.997     0.319    
spy.returns[-nrow(spy.returns)] -0.0804997  0.0182356  -4.414 0.0000105 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01237 on 2990 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.006475,  Adjusted R-squared:  0.006143 
F-statistic: 19.49 on 1 and 2990 DF,  p-value: 0.00001049
| cite | improve this answer | |
  • $\begingroup$ thanks for the answer! I went with the linear modell because I'm used to doing that at my work, and wanted to examine the effect of each value and the differences in sectors. E.g. GDP is more significant in Agriculture and less in Construction. Forecasting is a minor part of my thesis, that is why I wanted to concentrate on the independent variables, and not use AR lags if that makes any sense $\endgroup$ – Manneyus Nov 21 '18 at 11:00
  • $\begingroup$ also, does ARIMAX not need stationary variables? I tried the percentage change (quarterly, annualized) which actually seems to work, but I'm not yet sure of the economical interpretation $\endgroup$ – Manneyus Nov 21 '18 at 11:41
  • $\begingroup$ Nope, variable do not need to be stationary. Although the results will not be good. Best practice would be to make them stationary through differencing. Run an ACF or ADF test to get what the lagged difference number should be. $\endgroup$ – PlantFox Nov 21 '18 at 14:24
  • $\begingroup$ that is my problem, that I need to differenciate twice to make it stationary, but with that the other values have no explanatory meaning $\endgroup$ – Manneyus Nov 21 '18 at 17:30
  • $\begingroup$ check out my update $\endgroup$ – PlantFox Nov 21 '18 at 18:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.