Learn R Programming

capn (version 2.0.0)

vaprox.pindyck: Computing Value Function (V) Approximation Coefficients for examples in Pindyck (1984)

Description

Computes Chebyshev polynomial coefficients for approximating the value function \(V(s)\) over a bounded state space using value function iteration described in Pindyck (1984) and Abbott, Fenicehl, and Yun (2026). The function supports one-dimensional deterministic and stochastic dynamic optimization problems within the natural capital asset pricing (CAPN) framework.

Usage

vaprox.pindyck(param, 
               growthfun = c("logistic", "gompertz", "sqroot"), 
               covmat    = NULL,
               itermax   = 300,
               tol       = 1e-8)

Value

A list containing the approximation results:

  • degree: Degree of the Chebyshev polynomial in each dimension.

  • lowerB: Lower bounds of the approximation domain.

  • upperB: Upper bounds of the approximation domain.

  • delta: Discount rate.

  • coefficient: Estimated Chebyshev polynomial coefficients.

  • model.type: Either "deterministic" or "stochastic".

  • gfun: net growth function decleared in the argument

  • wfun: profit (net benefit) function with the decleared "gfun"

  • qfun: catch (harvest) function with the decleared "gfun"

Arguments

param

A data.frame of parameters adopted in three examples in pindyck (1984)

growthfun

A net growth function: one of the three net growth function in Pindyck (1984) "logistic" (Logistic: example 1), "gompertz" (Gompertz: example 2), and "sqroot" (Sqaure-root: example 3).

covmat

An optional variance–covariance matrix of the state dynamics. Columns must correspond to the unique \((i,j)\) combinations of state variables. Set to NULL for deterministic problems.

itermax

Maximum number of iterations. Default is 300.

tol

Tolerance of the error size. Default is 1e-8.

Details

The V-approximation with value function iteration solves for the value function \(V(s)\) in Pindyck (1984) and Abbott, Fenichel, and Yun (2026).

A state equation in the examples in Pindyck (1984) is defined as:

$$ ds = [f(s) - q(t)]dt + \theta s dz $$ where \(dz\) is a Weiner process.

The net growth functions are:

Logistic net growth function: $$ f(s) = rs \left( 1- \frac{s}{K} \right) $$

Gompertz net gorwth function: $$ f(s) = rs ln \left( \frac{K}{s} \right) $$

Square-root net gorwth function: $$ f(s) = rs^{1/2} - \frac{rs}{K^{1/2}} $$

where \(r\) is the instrinsic growth rate, \(K\) the carrying capacity \(p(s) = \partial V(s) / \partial s\) is the shadow (accounting) price.

The catch (harvest) function: $$ q(s,V_{s}) = b \left( V_{s} + cs^{-\gamma} \right)^{-\eta} $$

The profit (net benefit) function:

If \(\eta = 1\): \(b ln(q) - cs^{-\gamma}q\)

if \(\eta \neq 1\): \( \frac{b^{1/\eta}}{(1 - 1/\eta)}q^{(1 - 1/\eta)} - cs^{-\gamma}q \)

where \(b\) is the demand parameter, \(c\) is the cost parameter, \(\eta\) is the elasticity of demand, and \(\gamma\) is the elasticity of marginal cost.

More details are available in Pindyck (1984).

References

Abbott, Joshua K., Eli P. Fenichel, and Seong D. Yun. (2026). Risky (Natural) Assets: Stochasticity, Nonconvexity, and the Value of Natural Capital. Journal of the Association of Environmental and Resource Economists, 13(5), 1269-1309. tools:::Rd_expr_doi("10.1086/741689")

Pindyck, Robert S. (1984). Uncertainty in the Theory of Renewable Resource Markets. Review of Economic Studies, 51(2), 289--303. tools:::Rd_expr_doi("10.2307/2297693")

See Also

AFY aproxdef, plotgen vaprox, vsim

Examples

Run this code
################################################################################
## Logistic net growth function: Example 1 in Pindyck (1984)
data("AFY")

## parameters used in Abbott, Fenichel, and Yun (2026)
param <- AFY$param

## approximation and simulation range
stock <- chebnodegen(param$nodes,param$lowerK,param$upperK)

## volatility term
theta <- 0.1
sigsGBM <- as.matrix((theta*stock)^2,col=1)

cvlogistic <- vaprox.pindyck(param,'logistic',sigsGBM)
vlogistic <- vsim(cvlogistic,stock)

## plot value function
plotgen(vlogistic,ftype="vw",xlabel="Stock Size", ylabel="Value Function")

## plot shadow (accounting) prices
plotgen(vlogistic,ftype="p",xlabel="Stock Size", ylabel="Shadow Price")

Run the code above in your browser using DataLab