--- title: "Exercise template for 'Accruals'" author: Your name format: html bibliography: book.bib --- ```{r} #| include: false #| message: false library(dplyr, warn.conflicts = FALSE) library(tidyr) library(purrr) library(stringr) library(lubridate) library(DBI) library(dbplyr) library(ggplot2) library(farr) library(modelsummary) library(knitr) library(car) library(furrr) ``` ## @Sloan:1996wd {#accr-anom} ### Discussion questions 1. Read the material preceding the formal statement of H1. What reasons for differential persistence of earnings components does @Sloan:1996wd offer? How important is it for these reasons to be correct in light of the empirical support for H1 provided in Table 3? How important is the empirical support for H1 to H2(i)? 2. Which hypothesis (if any) does Table 4 test? How would you interpret the results of Table 4 in words? 3. Which hypothesis (if any) does Table 5 test? How would you interpret the results of Table 5 in words? 4. Which hypothesis (if any) does Table 6 test? How would you interpret the results of Table 6 in words? There are similarities between the results of Table 6 of @Sloan:1996wd and the results in @Bernard:1989uu. Both involve forming portfolios of firms based on deciles of some variable [accruals in @Sloan:1996wd; earnings surprise in @Bernard:1989uu] and examining how those portfolios perform subsequently. Apart from the measure used to form portfolios, what are the significant differences between the analyses in the two papers that you can think of looking at Table 6? 5. With which hypothesis (if any) is Figure 2 related? What does Figure 2 show according to @Sloan:1996wd? 6. With which hypothesis (if any) is Figure 3 related? What does Figure 3 show according to @Sloan:1996wd? ## Measuring accruals @Hribar:2002wc include a definition of accruals similar to that used in @Sloan:1996wd. Referring to prior research, they state [-@Hribar:2002wc, p.107]: >Specifically, accruals ($\mathit{ACC}_{bs}$) are typically calculated (firm and time subscripts omitted for convenience): > > $$ \mathit{ACC}_{bs} = (\Delta \mathit{CA} - \Delta \mathit{CL} - \Delta \mathit{Cash} + \Delta \mathit{STDEBT} - \mathit{DEP} )$$ where > > - $\Delta \mathit{CA}$ = the change in current assets during period $t$ (Compustat #4) > - $\Delta \mathit{CL}$ = the change in current liabilities during period $t$ (Compustat #5) > - $\Delta \mathit{Cash}$ = the change in cash and cash equivalents during period $t$ (Compustat #1); > - $\Delta \mathit{STDEBT}$ = the [change in] current maturities of long-term debt and other short-term debt included in current liabilities during period $t$ (Compustat #34); and > - $\mathit{DEP}$ = depreciation and amortization expense during period $t$ (Compustat #14). > > All variables are deflated by lagged total assets ($\mathit{TA}_{t-1}$) to control for scale differences. The first thing you may ask is "what does (say) 'Compustat #4' mean?". Prior to 2006, Compustat data items were referred to using numbers such as Compustat #4 or `data4`. So older papers may refer to such items. Fortunately, Wharton Research Data Services (WRDS) provides [translation tables](https://go.unimelb.edu.au/i7d8) from these items to the current variables and relevant translations are provided in @tbl-comp-old. | Old item | Current item | Item description | |----------|--------------|------------------| | #1 | `che` | Cash and Short-Term Investments | | #4 | `act` | Current Assets---Total | | #5 | `lct` | Current Liabilities---Total | | #14 | `dp` | Depreciation and Amortization | | #34 | `dlc` | Debt in Current Liabilities---Total | : Translation of key pre-2006 Compustat items {#tbl-comp-old} @Hribar:2002wc point out that calculating current accruals by subtracting the change in current liabilities from the change in noncash current assets is incorrect "because other non-operating events (e.g., mergers, divestitures) impact the current asset and liability accounts with no earnings impact." ### Discussion questions 1. In the equation above, why is $\Delta \mathit{Cash}$ subtracted? 2. In the equation above, why is $\Delta \mathit{STDEBT}$ added? 3. Is it true that mergers and divestitures have "no earnings impact"? Is the absence of earnings impact important to the estimation issue? Are there transactions that have no earnings impact, but do affect cash flows from operations? 4. Are there any differences between @Hribar:2002wc ($\mathit{ACC}_{bs}$ above) and @Sloan:1996wd in their definitions of accruals? Which definition makes more sense to you? Why? ## Simulation analysis ```{r} #| label: simulation-functions #| include: false get_data <- function(add_perc = 0.03, n_years = 20) { # Parameters add_true <- 0.03 gross_margin <- 0.8 beg_cash <- beg_se <- 1500 div_payout <- 1 mean_sale <- 1000 sd_sale <- 100 rho <- 0.9 # Generate sales as an AR(1) process around mean_sale sale_err <- rnorm(n_years, sd = sd_sale) sales <- vector("double", n_years) sales[1] <- mean_sale + sale_err[1] for (i in 2:n_years) { sales[i] = mean_sale + rho * (sales[i-1] - mean_sale) + sale_err[i] } # Combine data so far into a data frame; # add slots for variables to come df <- tibble(year = 1:n_years, add_perc = add_perc, sales, writeoffs = NA, collect = NA, div = NA, se = NA, ni = NA, bde = NA, cash = NA) # All sales at the same margin df$cogs <- (1 - gross_margin) * df$sales # All sales are on credit; # collections/write-offs occur in next period df$ar <- df$sales # Allowance for doubtful debts df$add <- add_perc * df$sales # Calculate year-1 values df$writeoffs[1] <- 0 df$collect[1] <- 0 df$bde[1] <- df$add[1] df$ni[1] <- df$sales[1] - df$cogs[1] - df$bde[1] df$div[1] <- df$ni[1] * div_payout df$cash[1] <- beg_cash + df$collect[1] - df$cogs[1] - df$div[1] df$se[1] <- beg_se + df$ni[1] - df$div[1] # Loop through years from 2 to n_years for (i in 2:n_years) { df$writeoffs[i] <- add_true * df$ar[i-1] df$collect[i] <- (1 - add_true) * df$ar[i-1] df$bde[i] = df$add[i] - df$add[i-1] + df$writeoffs[i] df$ni[i] <- df$sales[i] - df$cogs[i] - df$bde[i] df$div[i] <- df$ni[i] * div_payout df$cash[i] <- df$cash[i-1] + df$collect[i] - df$cogs[i] - df$div[i] df$se[i] <- df$se[i-1] + df$ni[i] - df$div[i] } df } get_coefs <- function(df) { fm <- df |> arrange(year) |> mutate(lag_ni = lag(ni)) |> lm(ni ~ lag_ni, data = _) tibble(add_perc = mean(df$add_perc), persistence = fm$coefficients[2]) } ``` ```{r} #| label: simulation-data #| include: false #| cache: true #| cache.vars: [df_1000, res_df, results] #| cache.extra: !expr digest::digest(lapply(list(get_data, get_coefs), function(f) list(formals(f), body(f)))) set.seed(2021) df_1000 <- get_data(n_years = 1000) add_percs <- runif(n = 5000, min = 0.01, max = 0.05) plan(multisession, workers = 2) res_list <- future_map(add_percs, get_data, .options = furrr_options(seed = 2021, packages = c("dplyr", "tidyr"))) plan(sequential) res_df <- list_rbind(res_list, names_to = "id") results <- list_rbind(map(res_list, get_coefs), names_to = "id") ``` ```{r} #| label: fig-sales #| fig-cap: Sales over time for a simulated firm #| echo: false #| fig-pos: H df_1000 |> filter(year <= 20) |> ggplot(aes(x = year)) + geom_line(aes(y = sales), colour = "red") + geom_line(aes(y = mean(sales)), colour = "blue") ``` ```{r} #| label: fig-persist #| fig-cap: Relationship between persistence and `add_perc` #| echo: false #| fig-pos: H results |> ggplot(aes(x = add_perc, y = persistence)) + geom_point() ``` ### Exercises 1. When generating simulated financial statement data, it is generally important to ensure that the generated data meet some basic requirements. What is one fundamental relation that we expect to hold for these data? Does it hold for the data in `df_1000`? 2. Calculate values for cash flows from operating activities and cash flows from financing activities. (Treat payment of dividends as a financing activity. *Hint*: You may find it easier to use the **direct method** to calculate cash flows from operating activities.) Does the cash flow statement articulate as it should? 3. How evident are the details of the underlying process generating sales from @fig-sales? Does looking at more data help? (Obviously, having a thousand years of data on a firm with a stationary process is not common.) 4. What is the "correct" value of `add_perc` that should be used? Using the plot from `results` above, what is the relation between values of departing from that value and persistence? Does this agree with your intuition? What's going on? What aspects of the `add_perc`-related accounting seem unrealistic? (*Hint*: It may help to use variant of the following code `set.seed(2021); get_data(0.03)` for various values in place of `0.03` and to examine how the earnings process is affected.) 5. Does the simulation analysis speak to the underlying rationale for H1 of @Sloan:1996wd? If so, why? If not, what might be missing from the analysis? How might we modify the simulation to incorporate the missing elements? ## Replicating @Sloan:1996wd ```{r} #| label: database-connection #| include: false #| cache: false db <- dbConnect(RPostgres::Postgres(), bigint = "integer", check_interrupts = TRUE) funda <- tbl(db, Id(schema = "comp", table = "funda")) company <- tbl(db, Id(schema = "comp", table = "company")) ccmxpf_lnkhist <- tbl(db, Id(schema = "crsp", table = "ccmxpf_lnkhist")) msf <- tbl(db, Id(schema = "crsp", table = "msf")) sics <- company |> select(gvkey, sic) |> mutate(sic = as.integer(sic)) funda_mod <- funda |> filter(indfmt == "INDL", datafmt == "STD", consol == "C", popsrc == "D") |> left_join(sics, by = "gvkey") |> mutate(sic = coalesce(sich, sic)) ``` ```{r} #| label: french-inputs #| include: false #| message: false #| cache: true #| cache.vars: [size_rets, me_breakpoints] size_rets <- get_size_rets_monthly() me_breakpoints <- get_me_breakpoints() ``` ```{r} #| label: empirical-data #| include: false #| cache: true #| cache.vars: [reg_data] #| dependson: french-inputs acc_data_raw <- funda_mod |> filter(!is.na(at), pddur == 12, exchg %in% c(11L, 12L)) |> mutate(finance = between(sic, 6000, 6999), across(c(che, dlc, txp), \(x) coalesce(x, 0))) |> group_by(gvkey) |> window_order(datadate) |> mutate(avg_at = (at + lag(at)) / 2, d_ca = act - lag(act), d_cash = che - lag(che), d_cl = lct - lag(lct), d_std = dlc - lag(dlc), d_tp = txp - lag(txp)) |> select(gvkey, datadate, fyear, avg_at, at, oiadp, dp, finance, starts_with("d_"), sic, pddur) |> mutate(acc_raw = (d_ca - d_cash) - (d_cl - d_std - d_tp) - dp) |> ungroup() |> filter(between(fyear, 1962, 1991), avg_at > 0) acc_data <- acc_data_raw |> mutate(earn = oiadp / avg_at, acc = acc_raw / avg_at, cfo = earn - acc) |> group_by(gvkey) |> window_order(datadate) |> mutate(lead_earn = lead(earn)) |> ungroup() |> collect() |> arrange(gvkey, datadate) |> mutate(acc_decile = ntile(acc, 10), earn_decile = ntile(earn, 10), cfo_decile = ntile(cfo, 10), lead_earn_decile = ntile(lead_earn, 10), sic2 = str_sub(as.character(sic), 1, 2)) |> filter(!finance, !is.na(acc)) ccm_link <- ccmxpf_lnkhist |> filter(linktype %in% c("LC", "LU", "LS"), linkprim %in% c("C", "P")) |> rename(permno = lpermno) |> mutate(linkenddt = coalesce(linkenddt, max(linkenddt, na.rm = TRUE))) |> select(gvkey, permno, linkdt, linkenddt) crsp_link <- acc_data_raw |> select(gvkey, datadate) |> inner_join(ccm_link, join_by(gvkey, between(datadate, linkdt, linkenddt))) |> select(gvkey, datadate, permno) |> mutate(start_month = floor_date(datadate, 'month') + months(4), end_month = floor_date(datadate, 'month') + months(16), month = floor_date(datadate, 'month')) |> collect() |> copy_inline(db, df = _) crsp_data <- msf |> inner_join(crsp_link, by = join_by(permno, between(date, start_month, end_month))) |> group_by(gvkey, permno, datadate) |> summarize(ret = exp(sum(log(1 + ret), na.rm = TRUE)) - 1, n_months = n(), .groups = "drop") |> collect() crsp_dates <- msf |> distinct(date) |> mutate(month = floor_date(date, 'month')) me_values <- crsp_link |> inner_join(crsp_dates, by = "month") |> inner_join(msf, by = c("permno", "date")) |> mutate(mktcap = abs(prc) * shrout / 1000) |> select(permno, datadate, month, mktcap) |> collect() me_decile_assignments <- me_breakpoints |> inner_join(me_values, join_by(month, me_min <= mktcap, me_max > mktcap)) |> select(permno, datadate, decile) cum_size_rets <- me_decile_assignments |> select(datadate, decile) |> distinct() |> mutate(start_month = floor_date(datadate, 'month') + months(4), end_month = floor_date(datadate, 'month') + months(16)) |> inner_join(size_rets, join_by(decile, start_month <= month, end_month > month)) |> group_by(datadate, decile) |> summarize(ew_ret = exp(sum(log(1 + ew_ret), na.rm = TRUE)) - 1, vw_ret = exp(sum(log(1 + vw_ret), na.rm = TRUE)) - 1, n_size_months = n(), .groups = "drop") size_adj_rets <- crsp_data |> inner_join(me_decile_assignments, by = c("permno", "datadate")) |> inner_join(cum_size_rets, by = c("datadate", "decile")) |> mutate(size_adj_ret = ret - vw_ret) |> select(gvkey, datadate, size_adj_ret, n_months, n_size_months) reg_data <- acc_data |> inner_join(size_adj_rets, by = c("gvkey", "datadate")) ``` ```{r} #| include: false run_table_ind <- function(sic2, lhs = "lead_earn", rhs = "earn") { df <- reg_data |> filter(sic2 == !!sic2) fm <- lm(as.formula(str_c(lhs, " ~ ", rhs)), data = df) coefs <- as_tibble(t(fm$coefficients)) names(coefs) <- colnames(t(fm$coefficients)) bind_cols(sic2 = sic2, coefs) } stats_for_table <- function(x) { qs <- quantile(x, probs = c(0.25, 0.50, 0.75), na.rm = TRUE) tibble(mean = mean(x, na.rm = TRUE), q1 = qs[1], median = qs[2], q3 = qs[3]) } summ_for_table <- function(lhs = "lead_earn", rhs = "earn") { reg_data |> distinct(sic2) |> pull() |> map(run_table_ind, lhs = lhs, rhs = rhs) |> list_rbind() |> select(-sic2) |> map(stats_for_table) |> list_rbind(names_to = "term") } ``` ```{r} #| label: tbl-summ-stats #| tbl-cap: Means by accruals decile #| echo: false #| tbl-pos: H reg_data |> group_by(acc_decile) |> summarize(across(c(acc, earn, cfo), \(x) mean(x, na.rm = TRUE))) |> kable(digits = 4) ``` ```{r} #| label: tbl-table-2-pooled #| tbl-cap: Replication of Table 2 of Sloan (1996) #| echo: false #| tbl-pos: H fms <- list(lm(lead_earn ~ earn, data = reg_data), lm(lead_earn_decile ~ earn_decile, data = reg_data)) modelsummary(fms, estimate = "{estimate}{stars}", gof_map = c("nobs", "r.squared"), stars = c('*' = .1, '**' = 0.05, '***' = .01)) ``` ```{r} #| label: tbl-2a #| tbl-cap: Industry-level persistence with actual earnings #| echo: false #| tbl-pos: H summ_for_table(lhs = "lead_earn", rhs = "earn") |> kable(digits = 4) ``` ```{r} #| label: tbl-2b #| tbl-cap: Industry-level persistence with earnings deciles #| echo: false #| tbl-pos: H summ_for_table(lhs = "lead_earn_decile", rhs = "earn_decile") |> kable(digits = 4) ``` ```{r} #| label: tbl-sloan-3 #| tbl-cap: Replication of Table 3 of Sloan (1996) #| echo: false #| tbl-pos: H fms <- list(lm(lead_earn ~ acc + cfo, data = reg_data), lm(lead_earn_decile ~ acc_decile + cfo_decile, data = reg_data)) modelsummary(fms, estimate = "{estimate}{stars}", gof_map = c("nobs", "r.squared"), stars = c('*' = .1, '**' = 0.05, '***' = .01)) ``` ```{r} #| label: tbl-3a #| tbl-cap: Industry-level persistence with earnings components #| echo: false #| tbl-pos: H summ_for_table(lhs = "lead_earn", rhs = "acc + cfo") |> kable(digits = 4) ``` ```{r} #| label: tbl-3b #| tbl-cap: Industry-level persistence with earnings-component deciles #| echo: false #| tbl-pos: H summ_for_table(lhs = "lead_earn_decile", rhs = "acc_decile + cfo_decile") |> kable(digits = 4) ``` ```{r} #| include: false mms <- list(lm(size_adj_ret ~ lead_earn + acc + cfo, data = reg_data), lm(size_adj_ret ~ lead_earn_decile + acc_decile + cfo_decile, data = reg_data)) ``` ```{r} #| label: tbl-5 #| tbl-cap: Abnormal returns, earnings, and lagged components #| echo: false #| tbl-pos: H modelsummary(mms, estimate = "{estimate}{stars}", gof_map = c("nobs", "r.squared"), stars = c('*' = .1, '**' = 0.05, '***' = .01)) ``` ```{r} #| label: tbl-rational #| tbl-cap: Regressions for Abel and Mishkin (1983) test #| echo: false #| tbl-pos: H eff <- list(lm(size_adj_ret ~ acc + cfo, data = reg_data), lm(size_adj_ret ~ acc_decile + cfo_decile, data = reg_data)) modelsummary(eff, estimate = "{estimate}{stars}", gof_map = c("nobs", "r.squared"), stars = c('*' = .1, '**' = 0.05, '***' = .01)) ``` ### Exercises 1. In creating `acc_data_raw`, we used `coalesce()` to set the value of certain variables to zero when missing on Compustat. Does this seem appropriate here? Are the issues similar to those observed with regard to R&D in [the book's financial-statement chapter](https://iangow.github.io/far_book/fin-state-reprise.html#sec-fin-state-reprise)? It may be helpful to find some observations from recent years where this use of the `coalesce()` function has an effect and think about the issues in context of financial statements for those firm-years. 2. Can you reconcile the results from the @Abel:1983um test with those from the previous regressions? (*Hint*: Pay attention to sample composition; you may need to tweak these regressions.) 3. The equations estimated in Table 5 of @Sloan:1996wd could be viewed as a structural (causal) model. Can you represent this model using a causal diagram? In light of the apparent econometric equivalence between that structural model and the estimation approach used in @Abel:1983um, how might the coefficients from the structural model be recovered from the latter approach? 4. A critique of @Sloan:1996wd made by @Kraft:2007wg is that the coefficients may be biased due to omitted variables. This critique implies a causal interpretation of the coefficients in @Sloan:1996wd. How might the critique of @Kraft:2007wg be represented on the causal diagrams above? \index{Causal diagrams} How persuasive do you find the critique of @Kraft:2007wg to be? 5. Apart from the different data sources used, another difference between the simulation analysis earlier in this chapter and the regression analysis in Table 3 of @Sloan:1996wd is the regression model used. Modify the code below to incorporate the appropriate formulas for cash flows from operating activities (`cfo`) and accruals (`acc`). Then replicate the pooled analysis of Panel A of Table 3 of @Sloan:1996wd using the resulting `sim_reg_data` data frame. What do you observe? ```{r} #| eval: false sim_reg_data <- res_df |> mutate(cfo = [PUT CALC HERE], acc = [PUT CALC HERE]) |> group_by(id) |> arrange(id, year) |> mutate(lag_cfo = lag(cfo), lag_acc = lag(acc)) |> ungroup() ``` 6. Which hypothesis does Figure 1 of @Sloan:1996wd relate to? What aspects of the plot make it easier or more difficult to interpret the results? The following code replicates a version of Figure 1 from @Sloan:1996wd using our simulated data. On the basis of Figures [-@fig-ni-persist]--[-@fig-acc-persist] and the arguments given in @Sloan:1996wd, is H1 true in our simulated data? Given the other analysis above, is H1 true in our simulated data? ```{r} #| include: false sim_reg_data <- res_df |> mutate(cfo = collect - cogs, acc = ni - cfo) |> group_by(id) |> arrange(id, year) |> mutate(lag_cfo = lag(cfo), lag_acc = lag(acc)) |> ungroup() ``` ```{r} year_of_event <- 10 decile_data <- sim_reg_data |> filter(year == year_of_event) |> mutate(cfo_decile = ntile(cfo, 10), ni_decile = ntile(ni, 10), acc_decile = ntile(acc, 10)) |> select(id, ends_with("decile")) reg_data_deciles <- sim_reg_data |> inner_join(decile_data, by = "id") ``` ```{r} #| label: fig-ni-persist #| fig-cap: Persistence of net income by decile of income #| echo: true #| fig-pos: H reg_data_deciles |> filter(ni_decile %in% c(1, 10)) |> mutate(ni_decile = as.factor(ni_decile), event_year = year - year_of_event) |> group_by(ni_decile, year) |> summarize(ni = mean(ni, na.rm = TRUE), .groups = "drop") |> ggplot(aes(x = year, y = ni, group= ni_decile, color = ni_decile)) + geom_line() ``` ```{r} #| label: fig-cfo-persist #| fig-cap: Persistence of net income by decile of cash flows #| echo: true #| fig-pos: H reg_data_deciles |> filter(cfo_decile %in% c(1, 10)) |> mutate(cfo_decile = as.factor(cfo_decile), event_year = year - year_of_event) |> group_by(cfo_decile, year) |> summarize(ni = mean(ni, na.rm = TRUE), .groups = "drop") |> ggplot(aes(x = year, y = ni, group = cfo_decile, color = cfo_decile)) + geom_line() ``` ```{r} #| label: fig-acc-persist #| fig-cap: Persistence of net income by decile of accruals #| echo: true #| fig-pos: H reg_data_deciles |> filter(acc_decile %in% c(1, 10)) |> mutate(acc_decile = as.factor(acc_decile), event_year = year - year_of_event) |> group_by(acc_decile, year) |> summarize(ni = mean(ni, na.rm = TRUE), .groups = "drop") |> ggplot(aes(x = year, y = ni, group = acc_decile, color = acc_decile)) + geom_line() ``` ## Accrual anomaly ```{r} #| label: tbl-6 #| tbl-cap: Partial replication of Table 6 of Sloan (1996) #| echo: false #| tbl-pos: H fm <- reg_data |> group_by(fyear, acc_decile) |> summarize(size_adj_ret = mean(size_adj_ret, na.rm = TRUE), .groups = "drop") |> mutate(acc_decile = as.factor(acc_decile)) |> lm(size_adj_ret ~ acc_decile - 1, data = _) modelsummary(fm, estimate = "{estimate}{stars}", gof_map = c("nobs", "r.squared"), stars = c('*' = .1, '**' = 0.05, '***' = .01)) ``` ```{r} #| include: false coefs <- fm$coefficients hedge_ret <- coefs["acc_decile1"] - coefs["acc_decile10"] p_val <- linearHypothesis(fm, "acc_decile1 = acc_decile10")$`Pr(>F)`[2] ``` The supplied hedge portfolio return is `r prettyNum(hedge_ret, digits = 4)`, with a p-value of `r prettyNum(p_val, digits = 2)`. ### Discussion questions 1. In estimating the hedge portfolio regression, we included a line `summarize(size_adj_ret = mean(size_adj_ret))`. Why is this step important? 2. @Green:2011wu [p. 797] say "the simplicity of the accruals strategy and the size of the returns it generates have led some scholars to conclude that the anomaly is illusory. For example, @Khan:2008aa and @Wu:2010aa argue that the anomaly can be explained by a mis-specified risk model and the q-theory of time-varying discount rates, respectively; @Desai:2004aa conclude that the anomaly is deceptive because it is subsumed by a different strategy; @Kraft:2006aa attribute it to outliers and look-ahead biases; @Ng:2005aa proposes that the anomaly's abnormal returns are compensation for high exposure to bankruptcy risk; and @Zach:2006aa argues that there are firm characteristics correlated with accruals that cause the return pattern." Looking at @Sloan:1996wd, but without necessarily looking at each of the papers above, what evidence in @Sloan:1996wd seems inconsistent with the claims made by each paper above? Which do you think you would need to look more closely at the paper to understand? What evidence do you think @Zach:2006aa would need to provide to support the claim of an alternative "cause"? 3. Do @Green:2011wu address the alternative explanations advanced in the quote in Q2 above? Do you think that they need to do so? 4. How persuasive do you find the evidence regarding the role of hedge funds provided by @Green:2011wu? 5. @Xie:2001th (p. 360) says that "for firm-years prior to 1988 when Compustat item #308 is unavailable, I estimate $\textit{CFO}_t$ as follows ...". Why would item #308 be unavailable prior to 1988? What is the equivalent to #308 in Compustat today? 6. Study the empirical model on p. 361 of @Xie:2001th, which is labelled equation (1). (This is the much-used "Jones model" from @Jones:1991vx, which we examine in [the book's earnings-management chapter](https://iangow.github.io/far_book/earnings-mgt.html#sec-earnings-mgt).) What are the assumptions implicit in this model and the labelling of the residual as "abnormal accruals"? (*Hint*: Take each component of the model and identify circumstances where it would be a reasonable model of "normal" accruals.) 7. What is "channel stuffing"? (*Hint*: Wikipedia has a decent entry on this.) What effect would channel stuffing have on abnormal accruals? (*Hint*: Think about this conceptually and with regard to equation (1). Do you need more information than is provided in @Xie:2001th to answer this?) ```{r} #| include: false #| cache: false dbDisconnect(db) ```