############################################################################## # Packages library(exams) library(manacc) library(tidyverse) library(knitr) library(kableExtra) library(randomNames) ############################################################################## # Initialization question_id <- "EN00000033" wdir <- getwd() parameters <- teachR::param_quest(wdir, question_id, alttype = "mcq", altlevel = "3 Apply") for (i in 1:length(parameters)) assign(names(parameters)[[i]], parameters[[i]]) options(xtable.comment = FALSE, xtable.floating = FALSE, xtable.timestamp = "") set.seed(seed) ############################################################################## # Preparation basepar <- manacc::income_statements(basevol = 20000, profitable = c(TRUE)) company <- basepar$company[[1]] product <- basepar$product[[1]] singular <- basepar$singular[[1]] plural <- basepar$plural[[1]] person <- manacc::make_persons(2) currentmonth <- lubridate::month(Sys.Date(), label = TRUE, abbr = FALSE) lastmonth <- lubridate::month(Sys.Date()-30, label = TRUE, abbr = FALSE) oplev <- manacc::cvp_oplev(rev = basepar$rev[[1]], cm = basepar$cm[[1]], oi = basepar$oi[[1]]) ############################################################################## # Answers if (reqexpl != "" & exasolu == "exam" & type_table != "html") lines <- paste0("\\vspace{",15,"cm}") else lines <- rep(" \\ ", 2) #lines <- rep("\\ ", 2) rightrev <- paste0(currencysymb, writR::dbl(oplev$solution["newrev"]),".") wrongrev <- sample(paste0(currencysymb, writR::dbl(oplev$wrong_newrev), "."),4) questions <- c(rightrev, wrongrev) solutions <- c(TRUE, rep(FALSE,4)) explanations <- c( "", "", "", "", "", "" ) ############################################################################## # Randomize order (do not edit) alea <- sample(c(1, sample(2:length(questions), (alternatives-1))), alternatives) questions <- questions[alea] solutions <- solutions[alea] explanations <- explanations[alea]
r txt_question_id
r person$first_name[[1]]
r person$last_name[[1]]
is a financial analyst following companies commercializing r product
. r tools::toTitleCase(person$pronoun[[1]])
has the following information for one of the firms r person$pronoun[[1]]
follows:
r paste0(currencysymb, writR::dbl(oplev$solution["bkrev"]))
;r lastmonth
: r paste0(currencysymb, writR::dbl(oplev$base$cm[[1]]))
;r lastmonth
: r paste0(currencysymb, writR::dbl(oplev$base$oi[[1]]))
;r lastmonth
to r currentmonth
: r writR::pct(oplev$solution["pctdeltarev"] * oplev$solution["oplev"])
%.Based on this information, what is the expected revenue in r currentmonth
? r reqexpl
r points
\
Hint: you will need to rework the detailed formula of the margin of safety ratio and all three formulas of the operating leverage to successively find 1) the operating leverage in r lastmonth
, 2) the Margin Safety Ratio in r lastmonth
, 3) the revenue in r lastmonth
, 4) the percentage increase in revenue and finally 5) the expected revenue in r currentmonth
.
if (reqexpl == "") exams::answerlist(questions, markup = "markdown") else writeLines(lines)
With the available data, you can first compute the operating leverage in r lastmonth
:
$$
OPLEV_{r lastmonth
} = \frac{\text{Contribution Margin}}{\text{Operating Income}} = \frac{r writR::dbl(oplev$base$cm[[1]])
}{r writR::dbl(oplev$base$oi[[1]])
} = r writR::dbl(oplev$solution["oplev"])
$$
Then, by reworking the formula showing the relationship between Margin of Safety Ratio (MSR) and operating leverage, you obtain the MSR:
$$
OPLEV = \frac{1}{MSR} \leftrightarrow MSR = \frac{1}{OPLEV} = \frac{1}{r writR::dbl(oplev$solution["oplev"])
} = r writR::pct(oplev$solution["msr"])
\%
$$
By reworking the detailed formula of the MSR and introducing the break-even revenue and MSR, you get the revenue in r lastmonth
:
$$
\begin{aligned}
MSR & = \frac{R - R_B}{R} \
& \leftrightarrow \
R \times MSR & = R - R_B \
& \leftrightarrow \
R_B & = R - R \times MSR \
& \leftrightarrow \
R_B & = R \times (1 - MSR) \
& \leftrightarrow \
\frac{R_B}{1-MSR} = \frac{r writR::dbl(oplev$solution["bkrev"])
}{1-r writR::dbl(oplev$solution["msr"])
} & = R = r writR::dbl(oplev$solution["rev"])
\end{aligned}
$$
By reworking the formula derived from the definition of the operating leverage (elasticity), you get the percentage change in revenues:
$$
OPLEV = \frac{\% \Delta OI}{\% \Delta R} \leftrightarrow \% \Delta R = \frac{\% \Delta OI}{OPLEV} = \frac{r writR::pct(oplev$solution["pctdeltarev"] * oplev$solution["oplev"])
\%}{r writR::dbl(oplev$solution["oplev"])
} = r writR::pct(oplev$solution["pctdeltarev"])
\%
$$
Finally, you can apply this percentage increase in revenue to the revenue in r lastmonth
to find the revenue in r currentmonth
:
$$
R_{r currentmonth
} = R_{r lastmonth
} \times (1+\% \Delta R) = r writR::dbl(oplev$solution["rev"])
\times (1+r writR::dbl(oplev$solution["pctdeltarev"])
) = r writR::dbl(oplev$solution["newrev"])
$$
if (reqexpl == "") exams::answerlist(ifelse(solutions, "True", "False"), explanations, markup = "markdown") else writeLines(c("\\ ","\\ "))
extype: r extype
exsolution: r exams::mchoice2string(solutions, single = TRUE)
exname: r question_id
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.