## ----setup, include = FALSE---------------------------------------------------
library(fred)
key_available <- nzchar(Sys.getenv("FRED_API_KEY"))
nowcast_available <- requireNamespace("nowcast", quietly = TRUE)
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 4.5,
  eval = key_available && nowcast_available
)

## -----------------------------------------------------------------------------
library(fred)
library(nowcast)

## -----------------------------------------------------------------------------
indicators <- c(
  "INDPRO",   # Industrial production (15th)
  "RSAFS",    # Retail sales advance (mid-month)
  "PAYEMS",   # Nonfarm payrolls (first Friday)
  "NFCI",     # Chicago Fed financial conditions (weekly)
  "UMCSENT"   # Michigan consumer sentiment (mid + late month)
)

monthly <- fred_series(indicators, from = "2000-01-01", format = "wide")
head(monthly)

## -----------------------------------------------------------------------------
gdp_growth <- fred_series(
  "GDPC1",
  from = "2000-01-01",
  transform = "annualised"
)
plot(gdp_growth, main = "Real GDP, QoQ annualised growth")

## -----------------------------------------------------------------------------
# Aggregate monthlies to quarterly using fred_aggregate()
monthly_long <- fred_series(indicators, from = "2000-01-01")
quarterly <- fred_aggregate(monthly_long, fun = "mean", by = "quarter")
head(quarterly)

## ----eval = FALSE-------------------------------------------------------------
# # Pseudo-code: build a wide quarterly frame for nc_bridge(formula, data)
# panel <- merge(
#   fred_series("GDPC1", from = "2000-01-01", transform = "annualised"),
#   fred_aggregate(
#     fred_series(indicators, from = "2000-01-01", format = "wide"),
#     fun = "mean", by = "quarter"
#   ),
#   by = "date"
# )
# bridge <- nowcast::nc_bridge(value ~ INDPRO + RSAFS + PAYEMS, data = panel)
# summary(bridge)

## ----eval = FALSE-------------------------------------------------------------
# forecast_dates <- seq(as.Date("2015-01-01"), as.Date("2024-12-01"),
#                       by = "quarter")
# 
# backtest <- lapply(forecast_dates, function(d) {
#   ind_rt <- fred_real_time_panel(indicators, vintages = d, from = "2000-01-01")
#   gdp_rt <- fred_as_of("GDPC1", date = d, from = "2000-01-01",
#                        units = "pca")
#   list(date = d, ind = ind_rt, gdp = gdp_rt)
# })

## -----------------------------------------------------------------------------
m <- fred_manifest(
  gdp = gdp_growth,
  monthly = monthly,
  quarterly = quarterly
)
print(m)

## ----eval = TRUE--------------------------------------------------------------
fred_cite_series("GDPC1", vintage_date = "2024-12-01", format = "text")

