FYI, I am adding entire macro. ================================= %macro pin(dsetin = , alpha = , from = , delta = , eta = , mu = ); data _null_;set &dsetin. end = eof;if eof then call symput('num',_n_);run; %local i; %do i = &from. %to &num.; data _null_;set &dsetin.;if _n_ = &i.;call symput('cusip',cusip6);call symput('datadate',datadate);run; %put i = &i.: cusip6 = &cusip. and datadate = &datadate.; proc nlp data=pin_data(where = (cusip6 = "&cusip." and datadate = &datadate.)) noprint out=pin.pinest&i.(keep = cusip6 datadate ALPHA ETA MU); by cusip6 datadate; max loglik; decvar ALPHA = &alpha., DELTA = &delta., ETA = &eta., MU = &mu.; M = min(buys,sells) + max(buys,sells) / 2.0 ; x = eta / (mu + eta) ; bounds 0.0 < eta mu, 0.0 <= alpha delta <= 1.0 ; loglik = -2.0 * eta + M * log(x) + (buys + sells) * log(mu + eta) + log( alpha * (1.0 - delta) * exp(-1.0 * mu) * (x ** (sells - M )) + alpha * delta * exp(-1.0 * mu) * (x ** (buys - M)) + (1.0 - alpha) * (x ** (buys + sells - M)) ) ; run; %if &i. = 1 %then %do;data pinest;set pinest1;run;%end; %else %do;data pinest;set pinest pin.pinest&i.;run;%end; %end; %mend;
... View more