Dynamic portfolio optimization has a vast literature exploring different simplifications by virtue of computational tractability of the problem. Previous works provide solution methods considering unrealistic assumptions, such as no transactional costs, small number of assets, specific choices of utility functions and oversimplified price dynamics. Other more realistic strategies use heuristic solution approaches to obtain suitable investment policies. In this work, we propose a high-dimensional risk-constrained dynamic asset allocation model and efficiently solve it using the stochastic dual dynamic programming algorithm. We consider multiple assets, transactional costs and a Markov factor model for asset returns. We impose one-period conditional value-at-risk (CVaR) constraints, arguing that it is reasonable to assume that an investor knows how much he is willing to lose in a given period. In contrast to dynamic risk measures as the objective function, our time-consistent model has relatively complete recourse and a straightforward lower bound, considering a maximization problem. We present empirical results for an illustrative 3-asset model comparing the optimal policy with selected benchmarks and solve a realistic 100-asset model guaranteeing a sufficiently small optimality gap with high probability. To the best of our knowledge, this is the first systematic approach for solving realistic high-dimensional dynamic stochastic asset allocation problems.