Functions (class Assessment) that emulate a stock assessment by sampling the operating model biomass, abundance, and fishing mortality (with observation error, autocorrelation, and bias) instead of fitting a model. This output can then be passed onto a harvest control rule (HCR function). Shortcut is the base function that samples the OM with an error distribution. Shortcut2, the more preferable option, fits SCA in the last historical year of the operating model, estimates the error parameters using a vector autoregressive model of the residuals, and then generates model "estimates" using predict.varest. Perfect assumes no error in the assessment model and is useful for comparing the behavior of different harvest control rules. To utilize the shortcut method in closed-loop simulation, use make_MP with these functions as the Assessment model. N.B. the functions do not work with runMSE(parallel = TRUE) for MSEtool v3.4.0 and earlier.

  x = 1,
  method = c("B", "N", "RF"),
  B_err = c(0.3, 0.7, 1),
  N_err = c(0.3, 0.7, 1),
  R_err = c(0.3, 0.7, 1),
  F_err = c(0.3, 0.7, 1),

  method = "N",
  SCA_args = list(),
  VAR_args = list(type = "none"),

Perfect(x, Data, ...)



An index for the objects in Data when running in runMSE. Otherwise, equals to 1 When running an assessment interactively.


An object of class Data.


Indicates where the error in the OM is located. For "B", OM biomass is directly sampled with error. For "N", OM abundance-at-age is sampled and biomass subsequently calculated. For "RF", recruitment and F are sampled to calculate abundance and biomass. There is no error in biological parameters for "N" and "RF". By default, "B" is used for Shortcut and "N" for Shortcut2.


If method = "B", a vector of length three that specifies the standard deviation (in logspace), autocorrelation, and bias (1 = unbiased) for biomass.


Same as B_err, but for abundance when method = "N".


Same as B_err, but for recruitment when method = "RF".


Same as B_err. Always used regardless of method to report F and selectivity for HCR.


An object returned by VAR to generate emulated assessment error. Used by Shortcut2.


Other arguments (not currently used).


Additional arguments to pass to SCA. Currently, arguments SR and vulnerability are obtained from the operating model.


Additional arguments to pass to VAR. By default, argument type = "none" (stationary time series with mean zero is assumed).


An object of class Assessment.


Currently there is no error in FMSY (frequently the target F in the HCR).

See Wiedenmann et al. (2015) for guidance on the magnitude of error for the shortcut emulator.


Wiedenmann, J., Wilberg, M.J., Sylvia, A., and Miller, T.J. 2015. Autocorrelated error in stock assessment estimates: Implications for management strategy evaluation. Fisheries Research 172: 325-334.


Q. Huynh


Shortcut_4010 <- make_MP(Shortcut, HCR40_10) 
Shortcut_Nerr <- make_MP(Shortcut, HCR40_10, method = "N", N_err = c(0.1, 0.1, 1)) # Highly precise!

# Fits SCA first and then emulate it in the projection period 
Shortcut2_4010 <- make_MP(Shortcut2, HCR40_10) 

# \donttest{
# Compare the shortcut method vs. fitting an SCA model with a 40-10 control rule
MSE <- runMSE(testOM, MPs = c("Shortcut_4010", "SCA_4010"))
#>  Checking MPs
#> Error: Some MPs are not a functions of class `MP`: Shortcut_4010
# }

# Compare the performance of three HCRs
Perfect_4010 <- make_MP(Perfect, HCR40_10)
Perfect_6020 <- make_MP(Perfect, HCR60_20)
Perfect_8040MSY <- make_MP(Perfect, HCR_ramp, OCP_type = "SSB_SSBMSY", TOCP = 0.8, LOCP = 0.4)

# \donttest{
MSE <- runMSE(testOM, MPs = c("Perfect_4010", "Perfect_6020", "Perfect_8040MSY"))
#>  Checking MPs
#> Error: Some MPs are not a functions of class `MP`: Perfect_4010, Perfect_6020, Perfect_8040MSY
# }