The two competing goals of investment are long-term growth of capital and low risk. The Markowitz model, first formulated in 1952, is a quadratic programming optimization model for balancing these two goals. The decision variables are the amounts invested in each asset. The objective is to minimize the variance of a portfolio's total return, subject to the constraints that (1) the expected growth of the portfolio is at least some target level, and (2) that we don't invest more capital than we have. In its original form, the Markowitz model assumes no transaction costs, and thus, it is easily solved with quadratic programming. Researchers have studied numerous convex generalizations of the Markowitz model, for example, by adding convex (usually linear) transaction costs, or other linear constraints. In this Maple application demonstration, we assume the investor pays nonconvex transaction costs on asset purchases; in particular, these costs are computed by a concave, piecewise-linear function of the amounts invested. This cost structure arises in practice whenever a broker offers volume discounts on commission rates. Under these conditions, the Markowitz model becomes a nonconvex optimization problem that is not easily solved using local-search optimization algorithms. However, we solve it easily using the Maple Global Optimization Toolbox.