I agree you need density estimation to replicate any distribution. However, if you have hundreds of variables, as is typical in a Monte Carlo simulation, you would need to have a compromise.
One suggested approach is as follows:
- Use the Fleishman transform to get the coefficient for the given skew and kurtosis. Fleishman takes the skew and kurtosis and gives you the coefficients
- Generate N normal variables (mean = 0, std = 1)
- Transform the data in (2) with the Fleishman coefficients to transform the normal data to the given skew and kurtosis
- In this step, use data from from step (3) and transform it to the desired mean and standard deviation (std) using new_data = desired mean + (data from step 3)* desired std
The resulting data from Step 4 will have the desired mean, std, skewness and kurtosis.
Caveats:
- Fleishman will not work for all combinations of skewness and kurtois
- Above steps assume non-correlated variables. If you want to generate correlated data, you will need a step before the Fleishman transform