This review by Ron Shone (October 3 2000) was on request of the Economic Journal, but eventually did not get published there since they stopped doing software reviews. It is put here with permission of Ron Shone. There has been a little editing: (1) To more accurately reflect the current situation, some texts have been omitted, as indicated by "(…)". (2) Also screendumps, formulas and tables have been omitted since these work good on paper but less good on the internet. 


 Thomas Cool, The Economics Pack. Single user licence $99.

 Installation and password

This is a much-improved version of the CoolEconomicsPack that I reviewed earlier for the Economic Journal, Shone (1999). The present version is a much more useful package and is integrated within Mathematica to the extent that the manual (which did not exist before) is now part of Mathematica’s browser window as well as in hard copy. 

It must be pointed out, however, that the content of the pack itself is little altered. The author supplies two versions of the package: the basic Economics Pack, which includes the user guide, and a ‘professional premium’ version, which includes in addition his book on "Definition and Reality in the General Theory of Political Economy" (…). 

The package is supplied (…) as a single download (zip) file. The single download file is 3MB. The files are in *.tar.gz format. The single download zip file is less error prone, and unpacks with all suitable subdirectories with the appropriate files contained in them. Utilities to uncompress the files are required by the user – either WinZip or WinPack for windows, while Macintosh users require Stuffit Deluxe or Stuffit and DropStuff with Expander Enhancer. The disks need to be installed as given by the instructions. Whichever method of obtaining the package is undertaken, once installed it is necessary to go into Mathematica and rebuild the help index. This not only includes the Economics Pack as part of the Add-ons, but also includes terms from the User Guide in the Master index. (It may be necessary to involve the systems manager for those using Mathematica on Windows NT.) The whole package is contained in the subdirectory: AddOns/Applications/Economics. The installation creates two further directories: Documentation and English (or other language). Within Mathematica, the directory structure is:


The … indicates other folders in the same directory. In Windows, the uncompressed files take up 10.7MB of disk space. Once installed, it is necessary to identify the Economics Pack licence ID and your Mathematica Licence number (type in $LicenseID – notice the "s" in the spelling). These need to be emailed to Thomas Cool who will then issue a password. This is required only when the package is first opened, which is accomplished with the instructions Needs["Economics`Pack`"].

Cool palettes

Under the File, palettes menu there is listed the main palette provided in the package, called TheEconomicsPack. This has items: Needs["Economics`Pack`"], ResetAll, Economics[], Economics[All], EconomicsPack, Open palettes, Close palettes and Guide. The "Guide" button not only opens the browser, but also goes direct to the Economics Pack User Guide. The open palettes button itself opens five palettes: (1) Common, (2) Enhancements, (3) Economics, (4) Statistics and (5) Econometrics. All these palettes with their main items are shown in Figure 1. These palettes themselves give a good idea of what is covered in the package. I have always argued that the palettes feature of Mathematica is not only excellent, but also flexible and adaptable. Thomas Cool has taken full advantage of this. Figure 2 illustrates this versatility by expanding just one of the items in each of the main palettes. What these especially show is how the package is geared specifically to the economist and/or econometrician and not just to programming Mathematica.

[Figure 1 and Figure 2 here]

System Enhancements

The author begins with system enhancements. These are general routines that enhance those already provided in Mathematica. Some are always available and are loaded immediately, while others require being loaded. For example, the ‘Money’ package allows currency conversions, exchange rates and interest arbitrage calculations. But it is somewhat tortuous and does not use the European convention of quoting exchange rates as the domestic price of foreign currency. At times the author makes simple things complex. For instance, in section 3.2.4 we have use of the interest parity theory, although this is never mentioned. He uses this to calculate the appreciation/depreciation rate. Thus we have the expression (…) This aside, the whole section on money and exchange rates illustrates the flexibility of Mathematica in the area of international finance. There is even a routine EuroLand[ ] giving the rates with the Euro as of 1st June 1999. The Money package utilises the Databank package, which itself can be manipulated to form your own databank, as outlined by the author. What the Money package does do is demand rigour in the dimensionality of variables, a neglected topic (see De Jong (1967)). 

Some enhancements, like that for producing arrows (p.46 of the Manual) violate Occam’s razor. The routine is long and not obviously appealing. The same diagram could more easily be produced in a graphics package. However, they can be an enhancement for certain output. The fact that they are provided allows this facility and, of course, allows output to be produced solely within Mathematica.

A welcome enhancement for the economist is that on Calculus, Convexity, Lagrange and Kuhn-Tucker. The last two packages in particular allow symbolic and numerical methods for constrained optimisation, but they provide only first order conditions. They are still limited, however, by the way Mathematica goes about solving problems. For instance, for the very simply constrained optimisation problem of consumer demand:


only a partial solution is provided, with the warning that the equations appear to involve the variables in an essentially non-algebraic way (one of Mathematica’s warnings). No such problem is encountered with a numerical version of the problem using the Solve routine. The packages cannot be used blindly. Both packages when dealing with numerical problems utilise Mathematica’s FindRoot command, and so a "sensible" start value needs to be supplied by the user. Unfortunately, the instructions for using these packages are not always clear. Part of the problem is in providing the formats in the way that Mathematica does. The examples used in the manual do not always clarify in a straightforward way the manner in which routines are employed, which is especially true of the examples to illustrate the Kuhn-Tucker optimisation problem.

The author has an interest in propositional logic and applying Mathematica to such considerations. Thus, in Chapter 4 of the manual there is a discussion of Logic and Inference. This is an unusual chapter. The approach and comments by the author may be useful to those constructing truth tables and researching into axiomatics. But at the moment, as the author admits, it is only a beginning – and for any journey one must take the first step!


The economics starts properly in Chapter 5, beginning surprisingly with social welfare and voting. Basically the package contains routines for three types of voting: efficiency majority (using the concept of Pareto efficiency and always comparing the situation to the status quo); Borda majority voting (in which each voter receives a given set of points which they can distribute over a set of choices); and pairwise majority (in which items are presented in pairs and voted on by majority vote). Once again the examples are not always clear – the obscurity coming from the desire on the part of the author to set out the routines in the most general way possible (just as in Mathematica). The pairwise majority is often used to illustrate cyclical voting and the problem illustrated using single and double-peaked preferences. To test the usefulness of the packag, I considered a problem I use in lectures. There are three students: A, B and C. There are three choices concerning assessment: X = 100% course work; Y = 50% course work and 50% examination; Z = 100% examination. Two situations are considered, as shown in the following table.


To use the routines I deliberately chose to change the defaults. For instance, the items over choice are by default the letters of the alphabet, beginning with A. I simply declared the items as a list. The input instructions are then:

Items = {X,Y,Z}
NumberOfItems = 3
StatusQuo[] = Z
Preferences = {{1,2,3},{1,2,3},{2,3,1}}
Votes = PM[{1/3,1/3,Rest}]
PairwiseMajority[Preferences, Votes]
Preferences simply use numbers with the higher number indicating preference over a lower one. What is important, however, is to declare what the status quo happens to be – here Z with 100% examination. The routine carries out sorts and tests for cyclical voting. For situation I the programme declares cyclical voting as False and selects item Y, i.e., 50% course work and 50% examination. For situation II, however, with the second set of preferences replaced by {2,1,3}, the routine declares cyclical voting as True and hence selects the status quo, namely Z. This feature of choosing the status quo if cyclical voting is present is built into the routine. There is also a facility for producing a Duncan Black Plot. This is shown in Figure 3, which illustrates the problem of double-peaked preferences.

[Figure 3 here]

There are numerous routines to do with demand, cost, factor demand, elasticities, growth rates, etc. Special treatment is given to the constant elasticity of substitution (CES) function, including the special cases. For instance the following input instructions give rise to the Leontief, Cobb-Douglas and infinite factor substitutability production functions respectively.

It is, however, clear that the user of the Cool Economics Pack must be familiar with the syntax arrangement of Mathematica because this dominates the way the Economics Pack presents all the routines. Although the CES function is exhaustively dealt with, the instructions in the manual give merely definitions. For instance, the command "CEStermRule[A,s,v:1]or CEStermRule[opts] gives the rule CESterm -> function[Aggregate] for the relevant form. The latest CESterm is used, i.e. of the latest CES[ ] call. This means that there need not be a relation with the parameters given in the present call of CEStermRule" is virtually incomprehensible. This difficulty runs through the whole manual. There are only a few examples. I would have preferred to see many more straightforward illustrations of the commands that have been created, very much along the lines of the example on p.134. There are, however, some example notebooks which can be accessed from the help browser, but these are more elaborations rather than straightforward examples.

A useful teaching package is ‘AGE – the applied general equilibrium analysis package. This deals with solving allocations with commodities (sectors), in factors and a Bergson-Samuelson social welfare function. The AGE package extends the analysis provided by Noguchi (1993). More interesting is that the model can and is set up with CES utility and production functions. (CD can be used with suitable choice of parameters, as illustrated above.) There is also a plot of the optimality and a plot of the efficiency locus in production. A number of other plots are also available. Also included in the same chapter are static and dynamic versions of the Leontief input-output model.

Section 5.7 deals with the basic IS-LM model and the Phillips curve. When utilising any computer package for modelling it is useful to consider the problem in three parts: (1) variables, (2) equations and (3) models. This is the procedure followed by Thomas Cool. The model is very basic and, in particular, treats net exports as exogenous. It does, however, deal with the liquidity trap. It also includes a plotting command: ISLMPlotPrepare[f:IS, g:LM]. Because Mathematica allows long variable names, these are used in the routines. But they are cumbersome. The package provides, therefore, a rule that changes the extensive names into symbols with the command ToMacroSymbols. When introducing the Phillips curve, the author includes a "labour income quote" as an indication of profits. It is, of course, possible to set this at zero to exclude it from the analysis. Three formats are provided for the equation of the Phillips curve: Line, Inverse and Log. There is also a routine for plotting the Phillips curve. The macromodelling of IS-LM, I think, illustrates that sometimes using Mathematica can complicate the modelling process rather than simplify it. It is like learning something very familiar in another language!

A series of routines for economics now follow. A taxes package which deals with income tax and social security premiums; two small packages to deal respectively with decision theory and games; a cartel package dealing with monopoly and cartels; a package which handles the basic peakload pricing model. The cartel package illustrates how obscure Cool can sometimes be. I found this difficult to follow. I suspect he considers the only relevant cartel model (from the point of view of his consultancy) is a share model. Cournot and Stackelberg get no mention! Within the share model, however, shares can be in terms either of costs or production.

Section 5.12 refers to an introduction to finance, introducing a series of packages specifically for basic finance. The aim here is to enhance those packages/routines which are already available form Wolfram and Hal Varian (1993). Besides dealing with some basic accounting concepts, there is also included a CAPM package which develops the main features of the capital asset pricing model (developed more fully in section 5.14). Included are routines for plotting the capital market efficiency frontier and the Markowitz efficiency frontier. There are further finance enhancements in section 5.15, which enhances the Wolfram finance essentials package.

Chapter 5 finishes with a section on transport economics and transport science. The author considers this a specialist topic and provides only brief notes. It does, however, illustrate once again the diversity to which Mathematica can be put.

Statistics and Econometrics

The present reviewer has never seen the value of using programmes like Mathematica or Maple V for statistical work, at least from the point of view of the economist. There are numerous specialist packages available, which do the job better and which are often geared to the economist rather than the scientist or psychologist. This is also true of much of chapter 7, which deals with topics in econometrics. Having said this, however, there are some gains. Data sets can readily be imported and exported into and from Mathematica. More importantly, they can be manipulated before being exported. Showing Cool’s wide experience in using data sets, he has a section for dealing with routines for large databases: Economics["Dbase`"]. A small routine, buried in Chapter 6, is a routine for chain weighted Paasche and Lasperyres indices, which of course manipulates data sets.

The number of routines contained in the Economics Pack is numerous, and one could easily overlook a useful one. In section 6.7, for instance, there is a probability package that deals with prospects and the equivalent value of prospects. There follows a discussion of risk and typical routines for handling problems to do with insurance. Thus, we find routines on certainty equivalence and Pratt’s measure of risk.

The routines in the econometric package arise from trying to handle dynamic modelling. Although included is a routine for the estimation of nonlinear systems, much of the routines here deal with model simulation. Researches interested in ARIMA models will find some routines of interest here.

Included in the econometrics chapter (why, I am not sure) are topics that are useful to a number of researches. They include neural networks (a new and growing topic of research), operations research, linear programming and queueing theory.


Thomas Cool opens his manual with the statement, "These notebooks and packages have been developed for economics, business and finance." This is exactly what they are. He goes on, "These packages may help you to get the job done." One may add, "done better." Cool sees Mathematica as extending the general language of mathematics to the computer and so enhances its usefulness still further. He sees it almost as a new revolution. He therefore sees the user guide as a way to ‘use the routines’ and not as a discussion of the economic problem or how a solution routine has been programmed.

We can ask three basic questions about the routines:

Are they easy to use?
Are they comprehensive?
Can they be adapted?

Put briefly my answers are: (1) No, (2) Yes, and (3) Yes. My first review, Shone (1999) criticised Cool for not having a manual and so it was difficult to know how all the routines fitted together. He clearly has satisfied this with a 555-page manual! But the Thomas Cool package is constrained by its own extensiveness. Because there are so many routines, the 555 pages can barely state the instructions for inputting information into them. These input statements follow the strict syntax of Mathematica. But exactly how the user should input instructions, which use these in some combination of statements, is not usually provided. The user, therefore, must often find this out by trial and error. This is not satisfactory. The solution is quite simple – but possibly not one that the producer of the manual would like. It is: provide numerous examples to illustrate how the input instructions should be used. This is exactly what the Mathematica manual does. Unfortunately, this would (I suspect) increase the manual to almost 1000 pages! The only alternative is to limit the extent of the routines. If the Economics Pack is to have wider use, as it deserves, then it needs to be made far more user friendly with far more simple examples to illustrate how the different routines can be used.

Ronald Shone                                                                           University of Stirling



De Jong, F. J. (1967), "Dimensional Analysis for Economists", North-Holland.

Noguchi, A. (1993) "General Equilibrium Models" in H. Varian (ed.), "Economic and Financial Modelling with Mathematica", Springer-Verlag.

Shone, R. (1999), "CoolEconomicsPack 1.0", Economic Journal, Vol.108, 1229-34.

Varian, H. (1993), "Economic and Financial Modelling with Mathematica", Springer-Verlag.

Note by Thomas Cool March 2003:
This review again is very useful, and I agree with much of it.
Please note that the Help window does contain many examples files that are not printed in the User Guide.
It is a pity, though, that I do not have the time nor the circumstances to extend the User Guide with those examples, 
or, rather, to make a separate book of those examples.
In the mean time, I can only advise users: consider carefully the User Guide and the examples that have been given,
and work from simple problems to the more complex ones.