1. A system for performing analysis of a portfolio comprising: a processor; a memory in communication with the processor and containing program instructions; an input and output in communication with the processor and memory; wherein the processor executes program instructions contained in the memory and the program instructions comprise: receiving portfolio asset allocation data, indicating a plurality of portfolio assets that make up the portfolio; setting a target time period and dividing the time period into Z subperiods; associating each of the plurality of portfolio assets with one of the following tax characteristic groups: income not taxed group, income taxed at the income tax rate group and income taxed at the capital gains tax rate group; determining covariances between the income not taxed group, income taxed at the income tax rate group and income taxed at the capital gains tax rate group; using the covariances to generate N sets of dependent random variables, for each Z subperiod, where each of the N sets of dependent random variables provides a simulated performance of the income not taxed group, income taxed at the income tax rate group and income taxed at the capital gains tax rate group for the subperiod; computing N simulated portfolio values for the income not taxed group, income taxed at the income tax rate group and income taxed at the capital gains tax rate group using N sets of dependant random variables, for each Z subperiod, where the computation of the value for each Z subperiod comprises: using the portfolio values and cost basis from the previous Z subperiod to calculate the realized and unrealized gains, accounting for spending and any resulting tax payments, rebalancing the income not taxed group, income taxed at the income tax rate group and income taxed at the capital gains tax rate group, and accounting for tax consequences of rebalancing to provide Z subperiod values.