The default settings for MSEtool allows for conditioning operating models (OMs) for stocks if no data were available. Ranges of biological and selectivity parameters are specified to incorporate uncertainty in the OM. For historical reconstruction of the stock, historical effort trajectories can be sketched, which, along with a fixed assumption on current depletion, can be used to calculate the implied historical fishing mortality and catches.

In contrast to more data-rich situations, biological studies can be used to inform life history parameters such as growth and maturity, while other parameters such as historical depletion, selectivity, and fishing mortality have typically been informed by an assessment model. In such situations, operating models may be generated from fitting assessment models. In between the data-rich and the no-data situations are the so-called data-limited or data-moderate settings with data collected on the stock but the potential lack of an accepted stock assessment.

The Rapid Conditioning Model (RCM) in SAMtool is designed to help condition OMs for data-limited and data-rich situations. From a fitted model, historical depletion and F could be obtained via a more objective method, as opposed to intuition or a simple guess for these key parameters. The RCM is sufficiently flexible to be parameterized as full stock assessment model with various data weighting schemes and some time-varying dynamics explored, although that is not the intent of the software to used for stock assessment.

Instead, the RCM is intended to guide exploration of a set of operating models (conditioned on data) that encapsulates a range of views on the productivity and historical exploitation. In this context, we don’t look at point estimates, but rather try to reduce the range of plausible parameters. Walters et al. (2006) used the term “stock reduction analysis” to describe an approach with age-structured models to address a broader question: what combinations of historical fishing mortality and recruitment could have generated the observed data?

The stock reduction analysis (SRA) paradigm can be highly valuable for conditioning operating models in the absence of stock assessments. In any assessment, point estimates of depletion and unfished recruitment may not be credible if there is high uncertainty of input values to the model such as natural mortality, recruitment compensation (i.e., steepness). We would exclude parameters that would otherwise generate unlikely scenarios in the historical reconstruction of the stock. Consider two extreme scenarios. If the productivity or unfished stock size is too low, then the modeled population would crash while trying to explain the observed catches over time. On the other hand, if the productivity or unfished stock size is too high, then the observed catches are tiny in relation to the population, and implies still unfished conditions despite the observed fishing history. Finding a suitable range of parameters is akin to “threading the needle” in order to avoid these two extreme scenarios.

RCM for conditioning MSEtool operating models

The stock reduction paradigm can be quite useful for informing the historical scenarios in a MSEtool operating model. Suppose that we are unsure about how to specify certain life history parameters, e.g. steepness. For other life history parameters such as growth, we may be more certain or we prefer to incorporate uncertainty in other parameters. With some data, we can try to fit an age-structured model that estimates historical depletion (spawning biomass in the last year of the historical period relative to that when fishing started), recruitment, and fishing mortality that are consistent with the specified parameter values.

In SAMtool, RCM() will be the main function for scoping historical scenarios for an operating model OM. From an operating model and a list of data inputs, the RCM returns an object with an updated OM and predicted outputs from the SRA. All model configurations for the SRA will also be specified through arguments passed through RCM.

The approach can be stochastic (with Monte Carlo sampling) if the operating model is specified as such. For example, steepness is highly uncertain, then one could specify a range of values, for example, between 0.6 and 0.9 with a uniform distribution, in an operating model:

OM@h <- c(0.6, 0.9)

If one wishes to run 250 simulations in the closed-loop simulation, then RCM will sample 250 steepness values from this distribution and then fit the SRA model 250 times. Alternatively, one can manually provide values in the cpars section of the operating model:

# Sample from a beta distribution and transform the random variable
h_samp <- rbeta(250, 13.3, 4.4)
OM@cpars$h <- 0.8 * h_samp + 0.2 # Mean = 0.8 with SD = 0.08

The RCM stock reconstruction from i-th fit will be conditioned on the i-th sampled value of steepness. The sampled values of steepness (as well as all input parameters to the RCM) are saved in the updated OM object to ensure consistency.

Model configuration of the RCM

The first order of business with set-up of the RCM is to decide whether to condition the model on catch or effort. If the model is conditioned on catch, then the RCM can generate predicted catches that match the observed, similar to an SRA approach, or estimate fishing mortality as parameters with a likelihood for catches, similar to many SCA (statistical catch-at-age) approaches. If conditioned on effort, the estimated fishing mortality in the model will be proportional to the observed effort. A full time series of the conditioning variable is needed, and length of the historical period OM@nyears will be the length of the conditioned time series.

Ideally, the time series begins at unfished conditions. If catch or effort data are unavailable going back to unfished conditions, then the data could be extrapolated back in time using reconstruction. Examples of catch reconstruction methods for the purposes of a stock assessment can be found in Porch et al. (2004) and Appendix A of Starr and Haigh (2017).

Alternatively, one could pass the assumed equilibrium catch or equilibrium effort prior to the first year of data to RCM. The model will then attempt to estimate the initial depletion in the first year of the historical period. However, initial depletion may be difficult to estimate with precision. Consider what data are informative to estimate initial depletion, perhaps an age or length sample from that first year that shows the truncation of the composition data relative to unfished conditions.

In addition to the conditioning variable, additional data types can be used:

  • Indices of abundance (either as surveyed biomass or fishery-dependent catch-per-unit time series)
  • Age compositions
  • Length compositions
  • Mean size (this option is generally for very sparse data scenarios when mean length or mean weight data are available but not the composition data)
  • Survey age or length compositions

Multiple surveys and fleets can be accommodated with RCM. One of these several data types in addition to catch or effort is generally needed to obtain depletion estimates. Availability of these data can be quite sparse over time, yet still informative. For example, an age composition sample from a single recent year that shows a very truncated age structure can be sufficient to imply a heavily depleted stock.

Here are the required pre-specified OM parameters needed for the RCM:

  • Growth (length-at-age) using slots OM@Linf, OM@K, OM@t0 (or alternatively, OM@cpars$Len_age)
  • Variability in length-at-age OM@LenCV only if length data are used
  • Length-weight conversion factors using slots OM@a and OM@b (or alternatively, OM@cpars$Wt_age)
  • Natural mortality using slots OM@M, OM@M2 or OM@cpars$M_ageArray
  • Maturity using slots OM@L50, OM@L50_95 or OM@cpars$Mat_age
  • Standard deviation of recruitment deviations using slot OM@Perr or OM@cpars$Perr
  • Stock-recruit relationship with OM@SRrel
  • Steepness in OM@h or OM@cpars$h

These are potentially required parameters: - Selectivity parameters with OM@L5, OM@LFS, and OM@Vmaxlen. If there are no age or length compositions, then selectivity in the model is fixed to these values. Otherwise, these are used as starting values. - Unfished recruitment OM@R0 as the starting value.

If growth, natural mortality, or maturity are time-varying in the historical period, then the SRA will implement time-varying life history in the estimation model as well. For example, if we’re setting up an operating model where the length of the historical period is 50 years, and we believe that natural mortality has doubled from 0.2 to 0.4 since Year 30 and will remain so into the future, this code can be used to set up this scenario:

OM@nyears <- 50
OM@proyears <- 30

M_ageArray <- array(0.4, c(OM@nsim, OM@maxage, OM@nyears + OM@proyears)) # Default M = 0.4
M_ageArray[, , 1:30] <- 0.2 # M = 0.2 in the first 30 years of the simulation
OM@cpars$M_ageArray <- M_ageArray

The RCM will pick up this change in the model as well.

The easiest way to turn off time-varying growth and M is to set:

OM@Linfsd <- OM@Ksd <- OM@Msd <- c(0, 0)

Information about the slots in the OM object can be viewed through class?OM. If passing custom objects to the operating model that override default inputs (e.g., for time-varying parameters), then MSEtool::validcpars() will be helpful for setting up and indexing the dimensions of the custom objects.

Data-limited cases

By default, the function estimates selectivity when age or length compositions are provided. If the selectivity is assumed to be dome-shaped, then the descending limb can either be fixed values sampled from slot OM@Vmaxlen or estimated in the SRA. If no composition data are provided, then all selectivity parameters are fixed. The selectivity argument is used to determine whether the selectivity is dome-shaped (OM@Vmaxlen is used) or logistic. Selectivity must be fixed when only mean lengths are available.

If the model is conditioned on effort (with no catch data), then unfished recruitment R0 is fixed to the value in OM@R0 (predicted catches are conditional on the value of R0). With catch data are also available while conditioning on effort (incomplete catch time series are permissible), the R0 can be scaled the population to generate the observed catches. The scalar is a multiplicative factor that minimizes the sum of squared differences between observed and predicted catches.

Updated parameters and evaluation of the RCM

Historical OM parameters that are updated by the RCM include:

  • Unfished recruitment OM@R0, only if catch is provided.
  • Depletion OM@D
  • Annual fishing effort in OM@EffYears, OM@EffLower, OM@EffUpper, and OM@cpars$Find. The effort is equal to the apical fishing mortality when paired with the depletion values.
  • Recruitment autocorrelation OM@AC which is estimated post-hoc from the recruitment deviation estimates.
  • Annual recruitment deviations OM@cpars$Perr_y. Historical recruitment are those estimated from the model, while future recruitment will be sampled with autocorrelation.
  • Selectivity parameters OM@L5, OM@LFS, and OM@Vmaxlen. If multiple fleets are modeled, then the F-at-age matrix is used to derive the effective aggregate selectivity and placed in OM@cpars$V. By default, the projection period selectivity is equal to that in the last historical year.

If initial depletion is estimated, then the recruitment deviations OM@cpars$Perr_y for the operating model are adjusted in order to produce the estimated abundance-at-age in the first year of the SRA model.

The RCM model will estimate and return R0 when conditioned on catch. When conditioning on effort, the model is generally scale-independent; with no catches, there can be information to inform depletion but not the stock size. The exception occurs when the SRA is conditioned on effort from multiple-fleets, in which case, catch data from all fleets (incomplete series are acceptable) are needed to inform the relative F’s among fleets. In this scenario, R0 is estimated.

Additionally, if multiple fleets are used for conditioning, then the annual selectivity can change based on the relative F among fleets. In this case, the annual selectivity is passed from the OM output in the OM@cpars$V slot. The default assumption in the projection period of the closed-loop simulation is that the selectivity and relative F among fleets are identical to those in the last historical year. Fleet allocation in management procedures can be explored in multiMSE capabilities of MSEtool.

Life history parameters used in the RCM will be also passed to OM@cpars to ensure reproducibility. Time-varying parameters affect calculation of reference points, mostly importantly unfished depletion. In SRA_scope (and MSEtool), depletion is the ratio of the spawning biomass in the terminal year and the unfished spawning biomass in the first year of the model. In this sense, depletion used to describe changes in the stock since fishing began. If life-history parameter are time-varying, then this definition may not necessarily reflect a management target.

The relative effort OM@EffLower and OM@EffUpper provided in the output is the apical F from the RCM. When running in closed-loop simulation, the apical F may be re-scaled to ensure that specified depletion has been reached at the beginning and end of the historical period. For simple operating models, i.e. those with conditions identical to the RCM, the apical F’s in the MSE should be identical to those from the SRA. To confirm that this is the case, one can run the plot function on output returned by RCM:

output <- RCM(...)

This function returns a markdown report with:

  • Histograms of updated parameters in the OM object
  • Fits of the SRA model to the provided data
  • Output from the SRA model, e.g. predicted recruitment
  • Fits to an additional run of the SRA model to mean life history values among simulations (only when RCM(..., mean_fit = TRUE) is run)
  • Comparisons of the historical period of the updated OM to the estimated RCM output

Currently, it is possible to create a more complex operating model than the SRA model itself. For example, discard mortality, movement, and spatial targeting are currently not modeled in the SRA. It is assumed that the catch in the SRA are all known sources of removal, i.e. landings plus discards. The RCM is a single area model, whereas MSEtool uses a multiple-area model. However, a simple well mixed 2-area operating model can replicate the single-area model. In short, the following configurations would replicate the removals and movement (or rather lack thereof) dynamics in the RCM:

OM@DR <- c(0, 0) # All discards are accounted for
OM@Size_area_1 <- OM@Frac_area_1 <- OM@Prob_staying <- c(0.5, 0.5) # A well-mixed stock in 2 areas of equal sizes

It may be desirable to compare the RCM to a simple operating model before incorporating more complex dynamics in the operating model.

Sampling the covariance matrix

The procedure above describes conditioning in which we accommodate life history uncertainty within an OM. Alternatively, we may wish to consider incorporate uncertainty with the SRA model fit conditional on a single set of life history values. To do so, we have an OM in which we ensure that all the necessary SRA input parameters, e.g., growth, maturity, M, steepness, etc., are identical among nsim replicates. Then we call RCM with the resample argument:

output <- RCM(OM, data, resample = TRUE)

When resample = TRUE, the function will generate a single model fit, placed in output@mean_fit, and then sample the covariance matrix to populate the recruitment, fishing mortality, selectivity slots in the updated OM. If the model has difficulty estimating the stock size, then there should be a high variance in the R0 estimate. A wide range of historical biomass among simulations should then be seen in the conditioned OM. The markdown report contains separate panels for evaluating the conditioned OM as well as the single model fit.

Uncertainty in life history parameters would be accommodated by generating a set of OMs that vary in parameter values such as M and repeating the sampling step for each OM.

Case study

To be added.

Mathematical description of the RCM

This section has been moved to a separate vignette.

Additional resources

The help file for RCM will provide more information on the possible inputs for the model. The help file for the RCModel class (obtained by typing class?RCModel into the R console) describes the outputs from the function. An additional vignette is available to describe set up of fleet and survey selectivity in the function call.


Kimura, D.K. and Tagart, J.V. 1982. Stock Reduction Analysis, Another Solution to the Catch Equations. Can. J. Fish. Aquat. Sci. 39: 1467-1472.

Porch, C.E., Turner, S.C., and Schirripa, M.J. 2004. The commercial landings of red snapper in the Gulf of Mexico from 1872 to 1962. SEDAR7-AW-22. SEDAR, North Charleston, South Carolina. Available at: (Retrieved July 9, 2019)

Starr, P.J. and Haigh, R. 2017. Stock assessment of the coastwide population of Shortspine Thornyhead (Sebastolobus alascanus) in 2015 off the British Columbia coast. DFO Can. Sci. Advis. Sec. Res. Doc. 2017/015. ix + 174 p. Available at: (Retrieved July 9, 2019)

Walters, C.J., Martell, S.J.D., and Korman, J. 2004. A stochastic approach to stock reduction analysis. Can. J. Fish. Aquat. Sci. 63: 212-223.