I suppose this is really an economics question, but I'm posting here for want of a more appropriate forum. My question concerns an *aggregate demand system* in which we have $n$ variants of a product, and the demand function of variant $i$ is given by $$D\_i(p\_1,\dots,p\_n)$$ where $p\_i$ is the price of variant $i$. We assume that $D\_i$ is strictly positive for all nonnegative prices, and satisfies the *gross substitutes property* which says that $$\frac{\partial D\_i}{\partial p\_j}\geq0 ~~ \forall j\neq i$$ i.e. that if I increase the price of one variant, then the demand for all other variants can only increase. My question is: let's suppose I have some desired demand vector $\mathbf{d} = (d\_1,\dots,d\_n)$ and I would like to determine a price vector $\mathbf{p}=(p\_1,\dots,p\_n)$ such that $D\_i (p\_1,\dots,p\_n) = d\_i$ for all $i$. What is known about the existence of such a price vector, and how difficult is it to find one? I would imagine that the primary useful tools would be fixed-point type theorems, but I'm also particularly curious if there are known algorithms for finding this vector. We can assume, for example, that for any price vector, the $D\_i$'s must sum to one, so that overall demand for the $n$ variants remains constant.



Market-clearing price vector in an "aggregate demand system"
You can find this in an standard graduate-level microeconomics textbook, such as Mas Colell-Whinston-Green. A solution exists with or without the assumption of gross substitutes, and does indeed use a fixed-point theorem, such as the Brouwer or Kakutani fixed point theorem. Abraham Wald has a proof for a special case that's simpler -- I think his case includes gross substitutes, but I don't know for sure. In the gross substitutes case, the solution is unique.


In terms of algorithms, there is an algorithm based on Sperner's lemma due to Scharf, but practically speaking any general-purpose nonlinear solver will do. Again, there might be something special about the gross substitutes case that allows a simpler algorithm, but I don't know for sure.


