The Use of Artificial Markets to Study Algorithmic Problems

The purpose of the artificial markets is to learn about algorithms and gain algorithmic insights, either theoretically or experimentally. A second purpose is to possibly learn lessons about real derivative markets.

The Specker Derivative Game has two variants: SDG/classic and SDG/secret. SDG/classic is described here: The Specker Derivative Game (SDG)

SDG/secret was suggested by Emo Welzl at ETH Zurich after I presented a talk on SDG in July 2008.

The SDG/secret version is about approximating a secret solution that the seller tries to encode into the raw material. The predicate defines a language that must be used to hide the secret. An interesting algorithmic question that is behind SDG/secret: Is the language rich enough so that the secret can be hidden, i.e., it will be computationally expensive to find it or an equivalent or better solution.

It is believed that the artificial market created by SDG/secret is much more challenging to understand than the market created by SDG/classic. But SDG/secret is a nice tool to experience algorithmic maximization problems and learn more about them.

Based on results by Johan Hastad (J. Hastad, Some optimal inapproximability results, Journal of ACM, Vol. 48, 2001, pp 798--859), there is hope that the price of some of those secret derivatives can be determined analytically.


Start with any maximization problem mnp whose decision version is in NP. NP is the set of all problems for which there is an efficient certifier. (See, e.g., Kleinberg/Tardos, chapter 8.) If the decision version is in NP and we are given a certificate for achieving a certain value, we can efficiently check whether it achieves that value. Predicates partition instances of mnp as in the classic version (it is not necessarily a disjoint partition). The predicates define the "hiding" language that must be used. A derivative is as in SDG/classic: a triple (pred, p, seller), where p is the price in [0,1]. The price expresses how well the secret should be approximated by the buyer for the buyer to win. If the price is 0.8, the buyer must come within 80% of the secret solution that the seller has. The price lowers the quality that the buyer must achieve because some NP-hard maximization problems are hard to approximate and it is a challenge to come close to the maximum. The raw material is different than in SDG/classic and is a pair (j,q), where instance j is in mnp and where q is a value that the seller can achieve through a secret certificate that is not revealed yet. The finished product is a solution for j with quality q'. If the buyer successfully finds a solution of value p*q or better, the buyer gets paid 3*p by the seller. If the buyer finds a lower quality solution, nothing is paid. After the buyer has delivered his/her finished product, the seller must reveal his/her secret solution and the buyer can check whether it achieves the quality that the seller claimed when the raw material was delivered. This requires an additional step in the game protocol compared to SDG/classic. The pay function has the flavor of "lose it all" or "double it": you lose the price you paid or you earn twice the price you paid.

For comparison, we summarize


This version works in a less general context: MAX-CSP. For comparison: let's use the same pay scheme for the secret version. If the buyer successfully finds a solution that is above or equal to the price p, 3*p is paid back by the seller. Otherwise nothing is paid back. When the seller puts a derivative d on the market at price p, the claim is that s/he has a solution of quality p for any raw material satisfying the predicate.

Example of playing SDG/secret

We use the independent set problem. The predicates we use to partition the instances are based on the number of edges incident with each node. (n) means that all nodes must be incident with n edges. (1 3) means that all nodes must be incident with one edge or three edges.

Consider the derivative

(SDG/secret IndepSet(1 2), 0.99, Jeff).
Would you buy it? What about
(SDG/secret IndepSet(1 2 3), 0.7, Karl)?