I have some doubt regarding call quad , getting matrix not performed operation.
PROC IML;
USE test2;
READ all var _ALL_ into B; CLOSE close test2; csho = B[1,1]; t_debt = B[1,2]; va = B[1,3]; siga = B[1,4]; debt_face = B[1,5]; exp_rf = B[1,6]; rf_net = B[1,7]; exp_divex= B[1,8]; exp_rfex = B[1,9];
x = B[1,10];
lambda = B[1,11];
ext_opt = B[1,12];
ylow = B[1,13];
/* Define the integrand to estimate warrant price eq. 50 */ START FUN(y) GLOBAL (va, rf_net, siga, t_debt, debt_face, csho, x, exp_divex, exp_rf, exp_rfex, lambda, ext_opt, vd, ylow); IF ext_opt = 0 THEN ext_opt = .0001; f1d = (y - LOG((debt_face + csho * x)) + (rf_net + 0.5 * siga**2) * ext_opt) / (siga * SQRT(ext_opt)); f2d = f1d - (siga * SQRT(ext_opt)) ; opt = (EXP(y) * exp_divex * PROBNORM(f1d) - (debt_face + csho * x) * exp_rfex * PROBNORM(f2d)) ; mu = LOG(va) + (rf_net - 0.5 * siga**2) * t_debt; sigma = siga * SQRT(t_debt); a0 = (LOG(debt_face + csho * x) -mu) / sigma; pdf = EXP(-((y - mu)**2/(2 * sigma**2))) / (SQRT (2 * CONSTANT('PI')) * sigma); pre = lambda * exp_rf; int = pre * opt* pdf; return(int); finish; /* SAS does not like very low lower bounds. no value if 2 std below face? */ mu = LOG(va) + (rf_net - 0.5 * siga**2) * t_debt; sigma = siga * SQRT(t_debt); yhigh = mu + 5 * sigma; mid = (yhigh + ylow) / 2; /* interval = ylow||yhigh;*/ %put &ylow; %put &yhigh; call quad(z,"START FUN(y) GLOBAL",[1,13]||mu + 5 * sigma) ;
run;
z value is not performing please guide me how to proceed.
... View more