# Structural change

I´m writing my master thesis about exchange rate forecasting and developed a model which I want to test on several countrys. Looking for structural breaks is highly recommended in the literature. Because of the high number of countries, I don´t want to look at every country in detail. That would be very time-consuming. It would be better to find a process which can be automated.

I´m currently thinking about how to find the "correct" breakpoints, my model. I got the idea behind the breakpoint command from (Bai, Perron 2003).

My idea is to run a SupF test scteston my model to test for atleast one breakpoint. If the Null is rejected I try to estimate the Dates withbreakpoint.

But:

how to find the "right" number of breaks m and the minimal segment size h?

It is, as far as I know, not possible to test with sctest against a specific number of structural breaks.

I could run the command without specifying m so that m=T-1. However the command estimate, in my view, too many breaks. It's not valid to estimate a linear model between two points with just 10 observations because of too few data points. That's why I use the minimal segment size h. But what is the optimal value of h? I want a small model with a minimal SSR. Currently, I´m thinking about a loop estimating the breakpoints for all possible combinations of hand choosing the value h, which is within one standard deviation of the minimal SSR and contains as little breaks as possible. I´m not sure if this procedure is appropriate.

Another idea is to find the best break date with m=1. The sample would be split and a supF test could be applied to each part of the sample. But in this approach, there is the danger of path dependent.

1.Is there an R-command to test for a specific number of breaks?

2.How to specify h correctly?

Did anyone get a good idea?

You are correct that sctest() from the R package strucchange does not implement tests for the $k$ vs. $k+1$ break problem. It only implements tests for the null hypothesis of structural stability (= no breaks) against various patterns of structural change (e.g., one break, more breaks, fluctuation, random walk, ...). The sup$F$ test performs well in a wide range of these situations.
The breakpoints() function always runs a dynamic programming algorithm from which the optimal $m$-break solution can be found with $m = 0, 1, 2, \dots$. So it is not necessary/possible to run the breakpoint estimation for just a single $m$.
For choosing the number of breakpoints, Bai & Perron argue that BIC works reasonably in several situations but that sequential testing may work better. Also, they found the the modified BIC by Liu, Wu, and Zidak (LWZ) often works better than the usual BIC. Instead of $\log(n)$ the penalty term is set to $0.299 \cdot \log(n)^2.1$. This imposes a higher penalty and thus selects fewer breakpoints.
As for choosing the bandwidth $h$: This should be set to a value that is small but large enough enough to allow reasonable estimation of the model in every segment. Thus, if you just fit a model with time-varying intercepts, a minimal segment size of $h = 10$ would probably be enough to compute the average of the observations. However, if you fit an autoregressive model within each segment, many more observations will be necessary.
For more details see the references in ?breakpoints.