I do not understand your data well enough to give you a detailed answer, but generally I can say that in cases like this my experience is that both the Actual and the Forecast should be loaded into the same fact table, using as many common keys as possible. Otherwise you will get a very complex data model with many composite keys. The principal script would then look like
FromDate & '/' & ToDate as IntervalID,
null() as ForecastName,
from Actual ... ;
StartDate & '/' & EndDate as IntervalID,
null() as ApplicationName,
from Forecast ... ;
But of course you probably need to transform and massage data – both Actual and Forecast – before you can create the fact table.