Learn R Programming

capn (version 2.0.0)

vaprox.pjump: Value Function Approximation with Poisson Jump Risk

Description

Computes Chebyshev polynomial coefficients for approximating the value function \(V(s)\) in a dynamic optimization problem with Poisson jump risk. The function is designed for one-dimensional natural capital asset pricing applications.

Usage

vaprox.pjump(aproxspace, stock, sdot, wb, hs, zs)

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: "Poisson Jump".

Arguments

aproxspace

An approximation space defined by the aproxdef function.

stock

A vector or matrix of stock states \(s\).

sdot

A vector or matrix of stock dynamics \(\dot{s} = ds/dt\).

wb

A vector of net benefits (profits or economic program values) without a shock, \(W(s)\).

hs

A vector of stock-dependent hazard rates, \(h(s)\).

zs

A vector of infinite-horizon net benefits following a jump event, \(Z(s)\).

Details

The value function \(V(s)\) with Poisson jump risk satisfies the Hamilton--Jacobi--Bellman equation derived in Abbott, Fenichel, and Yun (2026), building on Reed and Heras (1992):

$$ \left[ \delta + h(s) \right] V(s) - h(s) Z(s) = W(s) + V_{s}(s)\, \dot{s}, $$

where \(\delta\) is the discount rate, \(W(s)\) denotes net benefits in the absence of a jump, \(V_{s}(s) = \partial V(s) / \partial s = p(s)\) is the shadow (accounting) price, \(h(s)\) is the stock-dependent hazard rate, and \(Z(s)\) is the post-jump infinite-horizon value.

Rearranging terms yields: $$ \left[ \delta + h(s) \right] V(s) - V_{s}(s)\, \dot{s} = W(s) + h(s) Z(s). $$

The value function is approximated as: $$ V(s) = \Phi(s)\boldsymbol{\beta}, $$ where \(\Phi(s)\) is the Chebyshev basis evaluated at \(s\) and \(\boldsymbol{\beta}\) is the vector of unknown coefficients.

Substituting this approximation into the HJB equation produces the linear system: $$ \left[ (\delta + h(s)) \Phi(s) - \mathrm{diag}(\dot{s}) \Phi_{s}(s) \right] \boldsymbol{\beta} = W(s) + h(s) Z(s). $$

In exactly identified cases, the system is solved directly. In over-determined cases (more nodes than basis terms), the coefficients are obtained via least squares: $$ \boldsymbol{\beta} = (A^{\top} A)^{-1} A^{\top} (W + h Z), $$ where \(A\) collects the terms multiplying \(\boldsymbol{\beta}\).

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")

Reed, William J. and Hector E. Heras. (1992). The Conservation and Exploitation of Vulnerable Resources. Bulletin of Mathematical Biology, 54, 185--207. tools:::Rd_expr_doi("10.1007/BF02464829")

See Also

AFY, aproxdef, vaprox, vsim

Examples

Run this code
## Example from Abbott, Fenichel, and Yun (2026)
data("AFY")

param <- AFY$param

## Deterministic benchmark
cvDET <- vaprox.pindyck(param, "logistic")

slow <- 0.1
vlow <- vsim(cvDET, slow)
qlow <- cvDET$qfun(param, slow, vlow$shadowp)
zs   <- cvDET$wfun(param, slow, qlow) / param$delta

s <- chebnodegen(param$nodes, param$lowerK, param$upperK)

qopt <- cvDET$qfun(param, s, vsim(cvDET, s)$shadowp)
mus  <- cvDET$gfun(param, s) - qopt

alpha <- 0.5
hs <- alpha / (alpha + s)

wb <- cvDET$wfun(param, s, qopt)

Aspace <- aproxdef(param$order, param$lowerK, param$upperK, param$delta)

cvPSS <- vaprox.pjump(Aspace, s, mus, wb, hs, zs)

vPSS <- vsim(cvPSS, s)

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

## Plot shadow (accounting) price
plotgen(vPSS, ftype = "p",
        xlabel = "Stock Size",
        ylabel = "Shadow Price")

Run the code above in your browser using DataLab