BoSe, Bottazzi-Secchi model of firm growth

Table of Contents


This is a little collection of programs written to test and study the Bottazzi-Secchi model of firm growth. The model is described in several papers, see the Bibliography.

This package contains both C programs and Python scripts. The C programs require that the GNU Scientific Library (GSL) is installed on your computer while a Python interpreter is necessary in order to run the scripts. If python is the name of your Python interpreter you can run the program name_of_program with

python name_of_program

Notice that the several Python scripts in the package require the numpy module for Python.

A python interpreter is automatically installed in any Linux distribution and both the GSL library and the numpy module are usually available as packages.

Download and installation

Provided the dependencies above are satisfied, the installation should be straightforward. Download the latest available tar.gz package from the cafed repository. Unpack the package

tar xvzf bose-{version}.tar.gz

move inside the source directory

cd bose-{version}

run the configure script, build and install

make install

For more detailed instructions see the INSTALL file in the package.

List of programs

bose_step1 and bose_step2 are just intermediate utilities written to numerically check the correctness of the analytical analysis on which the model is based.

The program bose and the scripts bose_growth and bose_sizes provide a simulation of the Bottazzi-Secchi models. The latter keeps track of the size evolution of the firms while the formers simply generate the growth rates densities (and several other things…. see the documentation below).

The Bottazzi-Secchi model

To better understand the various command line options of the following programs it is probably useful to summarize the main features of the model. Please understand that this explanation is by no mean exhaustive. It is intended for people who did already read one of the papers in which the model is described. If you don't know the model, please refer to the Bibliography.

The model is indented as a discrete time evolution of an industrial sector. Consider a sector with N firms. At the beginning of each round the economy allows for M business opportunities to be exploited by firms. These opportunities are distributed among the firms following a Bose-Einstein statistics.

Each opportunity generates a multiplicative growth shock affecting the size of the firm which captured it. All these growth shocks are assumed identically distributed with a common density \(g\).

The resulting growth rates probability density p(x;M,N) reads

\[ p(x;M,N) = \sum_{h=0}^{M} \, P(h;N,M) \, \sqrt{\frac{M}{N}} \, g\left(\sqrt{\frac{M}{N}} x\right)^{\ast (h+1)} \]

where the exponent indicates the convolution of the density \(g\) and \(P(h;N,M)\) is the Bose-Einstein distribution of parameter N and M

\[ P(h;N,M) = {N+M-h-2 \choose N-2}/{N+M-1 \choose N-1} \]


This is the basic program for the generation of Bottazzi-Secchi growth rates distribution. One can provide several command lines options (default values are specified in square brackets):

-N the number of firms                            [100]
-M the average number of micro-shocks per firm    [100]
-D the type of micro-shock distribution           [0]
   0:normal 1:uniform 2:gamma
-d the shape parameter of the Gamma distribution
-m the mean of the micro-shock distribution       [0.0]
-v the variance of the micro shock distribution   [.01]
-T the number of simulation steps                 [1]

The program prints the rate of growth of each firm at each period.


This is essentially the same as bose_growth_ with the only difference that together with the growth rate also the size of each firm is printed at each rime step.


This C program analyzes the growth rates probability distribution \(p(x;M,N)\) defined above.

This program takes as input the parameters N,M and a specification for the density g. Both Gamma and Gaussian distributions are available as micro-shock distribution. However, they are always considered of unit variance and mean zero. The options setting the model parameter are (default values are specified in square brackets):

-n the number of firms             [100] 
-m the number of shocks            [0] 
-t the typeof shocks:              [0]
   0   gaussian
   >0  Gamma distributed, value defines the shape parameter
-N the number of points to plot    [100]

The output of the program is chosen with the option -O

-O set the type of output [0]

  0. growth rates distribution:                          x,F_m(x) 
  1. growth rates density:                               x,f_m(x)
  2. Laplace distribution and density:                   x,F_L(x),f_L(x)
  3. deviation from Laplace distribution:                x,D(x)
  4. max deviation from Laplace and critical sample:     argmaxD(x),maxD(x),N(.5),N(.05),N(.01)

D is the absolute deviation of the density of the model from a Laplace density

\[ D(x) = |F_m(x) - F_L(x)| \]

The parameter \(N()\) printed by the option -O 4 is the effective number of points to discriminate with confidence f the model distribution from the Laplace, using the Kolmogorov-Smirnov statistics. It's the solution of:

\[ (\sqrt{N/2}+.12+.11/\sqrt{N/2}) N(f) = Q_{ks}^{-1} (f) \]

where \(Q_{ks}^{-1}\) is the inverse distribution of the K.-S. statistics.


This Python script is intended to check the convergence toward a Laplace density (i.e. symmetric exponential) of the sum of Gaussian variates whose number follows a geometric distribution.

Notice that for a geometric distribution

\[ \text{Prob}\{x=k\} = (1-a) \, a^k \]


\[ \text{Prob}\{x \leq N\} = 1-a^{N+1} \]

so that this variate can be generated by::

\[ x = \left[ \frac{log(1-\epsilon)}{log(a)} \right] \]

where \(\epsilon\) is an uniform distribution in \([0,1)\) and \([x]\) stands for the integer part of \(x\) (i.e. the C function floor()).


This Python script is written to check how the Bose-Einstein partition of M micro-shocks across N firms generates a geometric distribution of shocks for each single firm.


  • G.Bottazzi and A. Secchi (2002) "On The Laplace Distribution of Firms Growth Rates" L.E.M. Working Paper n. 2002-20
  • G.Bottazzi, A.Secchi "Why are distributions of firm growth rates tent-shaped?", Economic Letters vol. 80 pp.415-420, 2003.
  • G.Bottazzi, A. Secchi "A Stochastic Model of Firm Growth", Physica A vol. 324 pp. 213-129, 2003.
  • G.Bottazzi, A. Secchi "Explaining the distribution of firms growth rates", The RAND Journal of Economics, 37, pp. 235-256, 2006.

Author: Giulio Bottazzi

Created: 2016-08-21 Sun 23:45

Emacs 24.3.1 (Org mode 8.2.4)