PardeeCenterDU / IFs-Issues-Tracking

This repository only holds the list of bugs that have been reported for IFs. Anyone may add a bug report, but please look to see if your issue has already been added!
2 stars 0 forks source link

endogenous IFs forecast & exogenous IFsHistSeries.mdb #211

Open quciet opened 2 years ago

quciet commented 2 years ago

Hi there,

I'm probably asking for a feature that already exists. If so, please point me in the right direction. The overall goal is to use as many most recent data points as possible to overwrite IFs' short-term forecast beyond the base year, like what we do for GDP.

Our current base year is 2017, and most of the values of variables in IFs are initialized using data in 2017 or around that year. Then our model forecast kicks in and all values after the base year will not be affected by actual data (am I right on this part?). However, for some variables, their underlying data in the IFsHistSeries.MDB can go beyond the base year, and our model forecast can give different values than what actual data are showing. For some projects, it is possible that our clients get distracted by the differences between IFs' now-casting values and actual data values. What tools do we have in our arsenal to deal with this kind of situation?

1). We can produce some scenario files manually to overwrite some parameters or variables. I know this from all the GDP scenarios I produced. But this requires some manual work and I'm not sure if we can click some buttons to let IFs generate a scenario file for me based on data beyond the base year.

2). We can rebase the model to a more recent year. I'm always doubtful about this approach due to the data availability. Sometimes we still want the base year to be a recent year with the most completeness of data points. For example, if 2019 has a way better data coverage than 2020, we still want 2019 to be our base year, but we also want to take some advantage of 2020 values.

3). For certain projects, produce a specific version of IFs.

Is it even possible to create a feature where you can pass a list of preprocessors to IFs so that IFs will overwrite the model forecast using the actual data from IFsHistSeries? The resultant file can just be a scenario file for other people to replicate the result? As you can see, I honestly don't have a concrete solution at the moment, and I do not know how much effort will be needed. So feel free to let me know if any of this does not make sense to you.

Thanks, YX

PardeeCenterIFs commented 2 years ago

For the overall goal of using as many most recent data points as possible in our forecast, short-term or not, we do have a solution implemented for selected variables, and it consists on using what we call exogenous forecast, but that would work with historical series as well, the only problem is that you will probably get a transient when our endogenous forecast kicks in.

On your question about the model not being affected by data after the base year, I think there's 2 cases where newer data affects. First one is when there's no data in the base year, but there's most recent data, then the most recent data will be picked up for initialization values. Second one is for the growth variables, which are computed considering a custom selection of forward years after the base year, in the default 3 years.

Regarding the tools available to deal with this situation, we also have the display option to show all available history, which simply replaces the forecast with historic analog values when available.

1) GDP is a very special variable, I don't think we have another gdprext-like parameter. Anyway, if you replace SeriesGDP2011 with any other GDP series, then when you rebuild the base, the rows for gdprext are created in the DATA\ifsFull.dat file.

2) I think this is the only approach that would avoid transients, but you're right about your concerns on data availabilty, which definetly affects the quality of our forecast.

3) Let me explain the exogenous forecast approach:

Let's say we want to replace our forecast of TFR with a historical data stored in "SeriesTFRX".

a. First thing you will need is to "feed" the IFsExogenousVars table in ifs.mdb, like this:

ExogenousModelId VarName Dim2 Dim3 TableName Adjustment AdjustmentTable
33 TFR

SeriesTFRX

Where ExogenousModelId = 33 is the id to identify this "scenario". b. Now the second part is to create an .sce file with at least 2 parameters: ifsexomodeltype = 1, to take absoulte values. ifsexomodelid = 33, to identify the scenario you want to use. The newly added scenario 33, can have multiple "exogenous" variables, or only one. Anyway, if seriesTFRX only has data up to 2021, then 2022 and forward we'll be left unchanged, but again possibly you'll get a transient in the transition year.
quciet commented 2 years ago

This issue was pinned in June 27th modeling pod meeting. We agreed that when this type of question arises again, we will revisit it using the approach introduced here. Hence, a lower priority level is assigned.