HomeTechniques and TipsPrecisionTreeUtility Functions

# 16.6. Utility Functions

Applies to: PrecisionTree 5.x and newer

What is a utility function? Why would I use one?

Most decision trees are about possible gains and losses in money units like dollars. They assume that every dollar is as good as every other dollar, that your happiness from gaining \$100 and your unhappiness from losing \$100 would be equal. When the amounts involved are small relative to your wealth (or your company's wealth), that's not a bad assumption.

But suppose your net worth is \$200,000, including your home equity. Losing \$200,000 would wipe you out and put you on the street, whereas gaining \$200,000 would make you somewhat more comfortable. The negative utility of losing \$200,000 is much greater than the positive utility of gaining \$200,000. In this example, it makes sense to be risk averse. You might pas up a decision with potential large gains and losses, in favor of a lower-risk decision with smaller potential gains but also smaller potential losses.

A utility function translates branch values, such as money amounts, into utility. In effect, you customize the values to you of potential gains and losses, and PrecisionTree then takes those into account. You set this up on the Utility Function tab of Model Settings. PrecisionTree lets you choose whether to display Expected Value (the original branch values, and the resulting rollup values), Expected Utility (the computed utility function), or Certainty Equivalent (see "Oil Drilling 6 - Model with Utility Function.xlsx" in Help » Example Spreadsheets). No matter what is displayed, once you select Use Utility Function, PrecisionTree will do all its computations to maximize your utility rather than your return based on original branch values.

At this point, you may want to open the two attached examples in PrecisionTree. Watch for Excel's macro security prompt and enable macros in both workbooks.) Then, in Excel, click View » Arrange All » Vertical to display them side by side. The two files have the same three trees, just displayed differently. The Expected Value one shows original branch values, and the Expected Utility one shows the computed utility function.

Tree #1 doesn't use a utility function, so it's identical between the two files. The decision node selects the top branch because its expected dollar value, \$10, is greater than the \$0 expected value of the other branch of the decision node.

Tree #2 is the same as Tree #1, except that it uses the predefined Exponential utility function; you can change the R value to see the effect of differing risk tolerance. With R = 100, just as one possible value, the optimum path through the tree is different from what it was without the utility function. Although the expected dollar value of the upper branch is greater, it's also more risky, so PrecisionTree chooses the lower branch. This is not at all obvious from expected values, but if you look at Expected Utility you can see that the expected utility of the lower branch is greater (less negative) than the upper branch.

Tree #3 is also the same as Tree #1, except that it uses a custom utility function. Just to show how custom utility functions are created, it uses the simple function U = sqrt(R+\$). You can experiment with different R values, but they must all be at least 100, since the most negative value of any branch is –\$100.

Last edited: 2015-11-24