// Running Product 
// Author: Federico Belotti & Silvio Daidone
// Tor Vergata University - Faculty of Economics
// version 1.1 04/05/2010

version 10
capture mata:  mata drop runningprod()
mata

numeric vector runningprod(numeric vector vec, | real scalar missing)
{
	numeric vector rp 
	real scalar i
	
	if (missing == .) tmp = vec
	else              tmp = editmissing(vec, missing)
	rp = tmp
	
	for (i=2; i <= length(vec); i++)  {
		rp[i] = rp[i-1] * tmp[i] 
	}
	return(rp)
}

mata mosave runningprod(), dir(PERSONAL) replace

end