The Business Investor Model
- Author:
Alan G. Isaac
- Organization:
Department of Economics, American University
- Contact:
- Date:
2025-07-14
Overview and Objectives
This lecture provides an introduction to BI World, which is closely related to the Business Investor model of [Railsback.Grimm-2019-PrincetonUP] (chapters 10 and 11). It presents a simple model of entrepreneurial search for business opportunities. Investors search for business opportunities and choose to run the businesses that most benefit them.
Goals and Outcomes
The primary goal of this lecture is the development of mobile agents that can interact with an environment that comprises stationary agents. This lecture also continues the development of programming and data visualization skills. Since the model of this lecture is relatively complicated, the implementation is staged. Initial implementations neglect some components of the conceptual model.
This lecture uses the business-investor model to provide a particularly simple illustration of the interaction between mobile and stationary agents. Once again, we demonstrates that initially identical agents may have very different lifetime experiences. These features permit an easy demonstration of the emergence of macro-level patterns from micro-level events.
As in the Financial Accumulation lecture and the Fishing World lecture, the business-investor model is inherently stochastic. Businesses are subject to a random risk of failure. This again illustrates how computational modeling can accommodate stochastic events, and the implementation correspondingly draws on programming-language features that are useful for modeling stochasticity. In contrast to previous lectures, the model of this lecture contains both stationary and mobile agents. However, the spatial element is purely conceptual; it does not correspond to physical space.
BI World Prerequisites
This lecture explores BI World, which is a simple model of business-investor decision making. Implementating this model requires a good basic familiarity with the programming prerequisites below. Prior implementation of the simulation models in the Financial Accumulation lecture and the Fishing World lecture develops most of these skills. Ability to create a model GUI that includes plots and sliders is a plus.
Programming Prerequisites (General)
You should understand how to take an action based on a multi-value condition (i.e., cases). You should be able to make a best choice from a set of candidate choices. In addition, be sure you know how to do the following.
Use arithmetic operators and evalute numerical comparisons.
Use conditional branching and looping constructs.
Determine the context in which code executes.
Generate random numbers drawn from a discrete uniform distribution.
Generate random numbers drawn uniformly from the \([0,1]\) interval.
Export data to a file.
Programming Prerequisites (NetLogo)
Be sure to review the NetLogo documentation for
let
, max-one-of
, ifelse-value
, and report
.
In the Introduction to NetLogo supplement and the NetLogo Programming supplement,
review the following topics.
Making boolean comparisons.
Implementing conditional branching with
if
,ifelse
, andifelse-value
.Defining NetLogo subroutines (both command procedures and reporter procedures).
Defining procedures with parameters.
Additionally, complete the following exercises from the NetLogo Exercises supplement.
Spreadsheet Prerequisites
In order to usefully report on the model, you should also complete the following exercises from the Spreadsheet Exercises from prior chapters. In addition, do the Histogram exercise.
BI World: Introduction
This lecture presents BI World, which is a variant of the Business Investor Model of [Railsback.Grimm-2019-PrincetonUP]. BI World is an extremely abstract and stylized model of investment decisions. It is not intended to represent a real business sector or a real process of invesment. Instead, it abstractly represents people who search for business opportunities and pursue the best ones they find.
Sensing
[Railsback.Grimm-2019-PrincetonUP] introduce their Business Investor model in order to explore sensing, which allows an agent to responds to its environment or to the attributes or behaviors of other agents. In BI World, sensing leads to the acquisition by business investors of information about available business opportunities. Investors sense business opportunities and decide which to pursue. Following [Railsback.Grimm-2019-PrincetonUP], we will be particularly interested in how sensing ability influences the wealth distribution.
Business Opportunity
The following class box provides an illustration of a business opportunity (Opportunity
).
A business opportunity produces a annual net profit but has an annual risk of failing.
Use two attributes to conceptualize these considerations:
annualProfit
and failureRate
.
An opportunity is also adjacent to other opportunities—not physically adjacent,
but rather adjacent in a space of ideas.
As a simple representation of of this adjacency,
give each opportunity a neighbors
attribute that holds the collection of adjacent opportunites.
These attributes will be set during model initialization and are immutable.
Finally, there may be an investor who currently owns and runs the business embodied in an opportunity.
Let this investor be the the value of an owner
attribute.
An Opportunity
may be owned by an Investor
,
who runs it as a business.
Otherwise, it has no owner.
The owner
attribute is the only mutable attribute.
annualProfit: Real |
failureRate: Real |
neighbors: Opportunity[1..*] |
owner: Investor = null |
The meaning of the owner
attribute is clear in the conceptual model,
but when it comes to implementation,
the idea of no owner may pose a bit of a puzzle.
This class box represents the idea that an Opportunity
initially has no owner by showing the owner
attribute
as having an initial value of null
.
How best to translate this into code
depends on the programming language in use.
Moving Towards Implementation
The conceptual model suggests the types of agents needed by an implementation. In particular, it indicates the kinds of behaviors that characterize the agents. As usual, there are many possible approaches to implementing the conceptual model as a computational model. Judgements about which implementations are best may change over time, perhaps because of accumulated coding experience or increasing knowledge of a particular language. Rather than worry about the characteristics of an optimal implementation, this course typically accepts any simple implementation that is a plausible interpretation of the conceptual model.
Risk of Business Failure
Every business opportunity has an associated risk of failure,
which is assigned during setup and does not change.
In the Business Investor model,
each Opportunity
is assigned a risk of failure.
This comprises two components:
a systemic risk of failure, which is shared by every business,
and and idiosyncratic risk of failure, which is business specific.
We will draw the idiosyncratic risk of failure
from a uniform distribution on a positive interval.
Uniform Distribution
Recall from |abms-basicStatistics| that most high-level programming languages provide facilites to generate random variates drawn from a standard uniform distribution. Recall that the standard uniform distribution draws values only from the unit interval (\([0.0\,..\,1.0]\)), where every possible value is equally likely. One may easily transform a random variable that has a standard uniform distribution into a new random variable that has a uniform distribution on any interval \([a\,..\,b]\). To see this, suppose the random variable \(U\) has the standard uniform distribution. (We often write this as \(U \sim U[0,1]\).) Consider the transformation \(Y = U b + (1 - U)a\). A realization of \(Y\) is a weighted average of \(a\) and \(b\), where the weights are determined by the realization of \(U\). An equivalent expression is \(Y = a + U(b - a)\).
The new random variable \(Y\) produced in this way is equally likey to take on any values between \(a\) and \(b\). That is, \(Y\) is uniformly distributed on \([a\,..\,b]\). (We often write this as \(Y \sim U[a,b]\).) For example, suppose \(a=0.2\) and \(b=0.8\). Figure transformUniform01Uniform illustrates how any draw \(u\) from \(U[0,1]\) becomes a draw from \(U[0.2,0.8]\). [1]
Transform Draws from \(U[0,1]\) into Draws from \(U[0.2,0.8]\).
Given access to facilities to produce draws from a standard uniform distribution,
this discussion indicates how to produces draws from a uniform distribution
on any interval.
The following randomUniform
function accomplishes this transformation.
- function:
randomUniform: (Real,Real) -> Real
- parameters:
umin
, the lower bound of intervalumax
, the upper bound of interval
- summary:
Let \(u\) be a draw from the standard uniform distribution.
Return \(u_\min + u (u_\max - u_\min)\).
Implement the randomUniform
function.
Hint
Recall from the Introduction to NetLogo supplement that,
for \(x > 0\),
the command random-float x
produces a
uniform draw from the interval \([0, x)\).
E.g., random-float 1
produces a variate
drawn from the standard uniform distribution.
Uniform Variates on Any Interval
to-report randomUniform [#umin #umax] report #umin + random-float (#umax - #umin) end
Predicted Profitability
Each business opportunity has an idiosyncratic predicted profitability that comprises two components: revenue, and costs. Business opportunities are fundamentally heterogeneous in their predicted profitability. For simplicity, we will give them a common cost structure but allow substatial heterogeneity in their predicted revenues. This heterogeneity vary randomly across business opportunities. In this case, we do not want to draw from a uniform distribution. It is likely that high-profit opportunities are relative rare. In fact, the more profitable the opportunity, the rarer it should be.
Exponential Distribution
We can again use transformations of the standard uniform to produce such a distribution. For example, suppose \(U\) has the standard uniform distribution. Since \(\ln(1)=0\) and \(\ln(0)=-\infty\), \(X = -\ln(1-U)\) is a random variate with values in the range \([0\,..\,\infty]\). Since \(1-U\) lies in \([0.0\,..\,0.5]\) half the time, half the values generated this way will be in \([0\,..\,-\ln(0.5)] \approx [0\,..\,0.7]\). (This means that \(0.7\) is the median value of \(X\).) Since \(1-U\) lies in the real interval \([0.50\,..\,0.75]\) a quarter of the time, a quarter of the values generated this way will be in the real interval \([-\ln(0.5)\,..\,-\ln(0.25)] \approx [0.7\,..\,1.39]\). (This means that \(1.39\) is the third quartile of \(X\), and variates lie above this value about a quarter of the time in a large sample.) Proceding with this reasoning, we find that this method will produce very few large values. In fact, 95% of the time, a draw from this distribution will be less than \(3.0\). Figure transformUniformExponential illustrates this transformation.
Transform Standard Uniform into Standard Exponential
The resulting distribution is called the standard exponential distribution. Since it sometimes (but rarely) produces very large values, its a mean_ of \(1.0\) is well above its median of about \(0.7\). Its survival function is \(P[X > x] = e^{-x}\), which is a very simple algebraic formula that summarizes the discussion above. More generally, we may scale the transformation so that \(X = -\beta\ln(1-U)\), which is still a random variate with values in the range \([0\,..\,\infty]\). This is an exponential distribution with a mean of \(\beta\); it is characterized by the survivial function \(P[X > x] = e^{-x/\beta}\).
- function:
randomExponential: Real -> Real
- parameters:
\(\beta\), the mean of the distributuion
- summary:
Let \(u\) be a draw from the standard uniform distribution.
Return \(-\beta \ln[1-u]\).
Implement the randomExponential
function.
Hint
The command random-exponential 1
produces a draw from
the standard exponential distribution.
The one argument determines the mean of the distribution.
Replacing \(1\) with \(\beta\) changes the mean
from \(1\) to \(\beta\).
Exponential Variates with Parameterized Mean
to-report randomExponential [#beta] report (- #beta * ln (1 - random-float 1)) end
Initializing a Business Opportunity
Recall that a business opportunity has four attributes:
owner
, failureRate
, annualProfit
, and neighbors
.
Setting owner
attribute is discussed above.
We now address the initialization of failureRate
and annualProfit
in terms of the following model parameters.
The baseline values are chosen to match the Business Investor model of [Railsback.Grimm-2019-PrincetonUP].
parameter |
meaning |
baseline value |
---|---|---|
|
system-wide failure risk |
\(0.01\) |
|
business specific failure risk |
\(0.09\) |
|
average annual costs |
\(2000\) |
|
average annual revenue |
\(5000\) |
Introduce four new global variables in BI World.
Initialize systemicRisk
and maxIdiosyncraticRisk
to be \(0.01\) and \(0.09\).
Initialize meanRevenue
and meanCosts
to \(5000\) and \(2000\).
Determine the failure rate of a particular business opportunity
by drawing from the uniform distribution on the interval \([0\,..\,\mathrm{maxIdiosyncraticRisk}]\).
Determine the predicted annual profit of a particular business opportunity
by drawing from the exponential distribution with a mean of \(meanRevenue\)
and then subtracting meanCosts
.
Setting the neighbors
attribute requires a little additional discussion.
Opportunity Terrain
The neighbors
attribute
captures a fundamental consideration in this model,
which is the idea of adjacent opportunities.
In the conceptual model of BI World,
the adjacent relationship between business opportunities is extremely abstract.
One simple approach to implementing a nation of adjacency is to create a spatial
layout of the opportunities and then associate distance in the space of ideas
with distance in physical space.
Location in the grid has no meaning beyond adjacency in a space of ideas.
For presentational simplicity,
arrange business opportunities in a two-dimensional rectangular torus_.
Let the neighbors of an opportunity be the eight adjacent cells of the torus.
Hint
Patches represent business opportunities,
so business opportunities are automatically laid out in a grid.
Set the grid size either in the Interface
tab
or by using resize-world
in a startup
procedure.
Set the grid topology either in the Interface
tab
or by using __change-topology
in a startup
procedure.
(This takes two arguments, both booleans, determining whether the topology should wrap horizontally,
and whether it should wrap vertically.)
Recall that patches are automatically endowed with an appropriate neighbors
attribute.
You may determine idiosyncratic risk as random-float maxIdiosyncraticRisk
.
You may determine idiosyncratic revenue as random-exponential meanRevenue
.
Setting Up the Business Opportunities
to setupOpportunities ask patches [ ;;initially, an opportunity has no owner: set owner nobody ;;failure rate combines systemic and idiosyncratic components: set failureRate (systemicRisk + random-float maxIdiosyncraticRisk) ;;predicted annual profit is random annual income less fixed annual cost: set annualProfit ((random-exponential meanRevenue) - meanCosts) ] end
GUI Display of Opportunities
The assumption that the relationships between business opportunities can be captured by adjacency relationships in a rectangular terrain allows us to give them a standard GUI representation. We can give business opportunities the standard display of cells or patches in a rectangular world. The location of an investor has no inherent meaning, but it will prove graphically convenient to represent business ownership by moving each investor to the location of its business. In addition, we may make this display more informative if we color-code a display attribute.
Create a setupGUI
procedure that
colors opportunities to indicate their predicted profits.
Here is one possibility (but suit your personal color preferences).
Color patches increasingly chromatic shades of orange
as the expected profits rise toward golden opportunities,
where revenues are three times the mean revenue.
Use black for non-positive profits.
Profits above \(0\) should producing increasingly chromatic orange,
topping out at three times the mean revenue.
After that, for very low probability profits, move towards less chromatic tints.
Hint
The scale-color
primitive provides simple handling
of shades and tints.
Goals and Behavior
BI World contains two types of entities: investors, and business opportunities. Investors are the actual agents in BI World: they sense and act. Business opportunies vary in profit and risk, but these features are immutable. Business opportunies do not act in this model; there are no behaviors associated with a business opportunity. They are not even a minimal agent.
Business Investor
A business investor picks a business opportunity and operates the business.
We decompose this into two behaviors:
picking a business to run (pickBusiness
), and running the business (runBusiness
).
The investor’s current business is a key attribute of an investor.
Running a business can generate profits and augment an investor’s wealth.
The investor’s current wealth is a focal attribute:
ultimately, we will consider wealth inequality.
wealth: Real = 0 |
business: Opportunity |
endeavors: Opportunity[1..*] |
failures: Opportunity[0..*] |
pickBusiness() |
runBusiness() |
As a convenience,
keep track of all of the businesses that the investor has run.
To this end, introduce an endeavors
attribute,
which is a list of businesses.
As another convenience,
keep count of the investor’s failed business endeavors.
To this end, introduce a failures
attribute,
which again is a list of businesses.
Hint
Use turtles to represent investors.
Associating an Investor with a Business
An investor owns a business opportunity, which she runs. An opportunity may or may not have an owner. Figure associateInvestorOpportunity illustrates this relationship between investors and business opportunities.
Association of Investor with Opportunity
In order to link investors and opportunities in this way,
introduce a pursue
procedure.
This will be an investor behavior that changes
which business opportunity the investor pursues.
In this model,
an investor can only pursue one business opportunity at a time.
The investor therefore decouples herself from any current business opportunity
and associates herself with the new business opportunity.
Ultimately this will become a subbehavior of the pickBusiness
behavior,
but for the moment it stands on its own.
- procedure:
pursue: Opportunity -> °
- parameter:
opportunity
, the new opportunity pursued.- context:
Investor
- summary:
Rescind ownership of any old opportunity pursued, and take ownership of the new opportunity. This will change the
owner
attribute of any old opportunity and of the new opportunity, thebusiness
attribute of the investor, and theendeavors
attribute of the investor.
Implement the pursue
behavior for investors.
Create \(25\) business investors.
Using this pursue
procedure,
assign a random business to each investor.
Take care that no two investors attempt to own the same business.
At this point you may simply create stubs for the other investor behaviors,
which are covered in detail below.
Hint
Recall from the Introduction to NetLogo supplement that we use
turtles-own
to provide investors with needed attributes.
Implementing pursue
and Initializing Investors
to pursue [#opportunity] ;turtle proc if (nobody != [owner] of #opportunity) [error "business is owned"] if (nobody != business) [ ask business [set owner nobody] ] ask #opportunity [set owner myself] set business #opportunity set endeavors (lput #opportunity endeavors) end
to setupInvestors crt nInvestors [ ;; create the investors, then initialize attributes: set wealth 0.0 set business nobody set endeavors [] ;;list of attempted businesses set failures [] ;;list of failed businesses pursue one-of (patches with [nobody = owner]) ] end
Sensing, Adaptive Behavior, and Learning
An agent’s behavior may depend on its own state and the state of its environment (possibly including other agents). Sensing is the ability to detect state—possibly with error. In this model, investors do not make mistakes when sensing business opportunities. (But see the BI World Explorations below.)
This course defines adaptation very broadly as any behavioral change driven by (explicit or implicit) goals or filters. In this sense, adaptation pursues success. The definition of success may be external to agents or internal. In BI World, Investors have an explicit criterion for success, but as modelers we may also examine how effectively these objectives are pursued.
Investors sense opportunities and move to take advantage of them. Investors in a BI World may trade accept some risk to increase typical profit, as we will see. When faced with business failure, they adapt to their loss of wealth and my pick a different business to run. In this sense, they adapt to their immediate business environment, but there is no explicit learning in the model.
However, learning produces adaptation:
change in behavior that results from stored experience.
In this sense, we may say that an Investor
is capable of a very limited form of learning:
the effects of past experience are summarized by an investor’s current business.
Realism is not a goal of this model, but increasing our understanding of the role of sensing and adaptation is a goal. This lecture looks for emergent patterns in how sensing ability in a profit and risk terrain affects the ultimate distribution of investor wealth. Realistically, investors in BI World have a limited ability to sense available investment opportunities. Less realistically, entering or switching businesses is costless. (Or equivalently, opportunities are characterized in terms of net income.)
For reasons that remain entirely implicit in the model, an investor who is running a business can sense neighboring business opportunities. This is meant to capture the notion of entrepreneurial alertness in a very stylized fashion.
Prediction and Goal-Driven Behavior
Utility in this model is based on anticipated profit and uncertain failure. In this sense, prediction serves as the basis of investor behavior. As [Railsback.Grimm-2019-PrincetonUP] emphasize, these predictions assume the business opportunities are unchanging in their characteristics.
An Investor
bases the choice of business opportunity on an objective function,
which may consider both risk and typical profitability.
The match value is the risk adjusted value of an Opportunity
for an Investor
.
([Railsback.Grimm-2019-PrincetonUP] call it a fitness measure or utility.)
Represent this with a matchValue
function,
which produces the real value of to a particular investor of running a particular business.
Here is a simple summary,
which pushes off the details of how to determine this value in an unspecified payoff
function.
- function:
matchValue : Opportunity -> Real
- parameter:
opportunity
, a business opportunity.- context:
Investor
- summary:
Return the value of
opportunity
to the investor, as determined by apayoff
function.
One may consider a large variety of payoff functions.
In the baseline BI World, however,
investors trade-off income and risk of failure.
Investors have a time-horizon (h
) for their decisions,
which is an integer number of years.
Following [Railsback.Grimm-2019-PrincetonUP],
an Investor
simply sums typical income from an Opportunity
over the horizon without discounting.
However, this value is reduced to reflect the likelihood of business failure.
This leads to a pure function,
which we capture in a payoff
function.
(Following [Railsback.Grimm-2019-PrincetonUP],
the value of a match has a lower bound at \(0\).)
- function:
payoff: (Real,Real,Real,Integer,String) -> Real
- parameters:
p
, annual profitf
, annual failure ratew
, wealthh
, decision horizono
, decision objective
- summary:
If \(w + h p < 0\), return
0.0
. Otherwise, return \((w + h p) (1 - f)^h\).
Value of a Match
to-report matchValue [#opportunity] ;turtle proc report (payoff [annualProfit] of #opportunity [failureRate] of #opportunity wealth horizon objective ) end
to-report payoff [ #profit ;;Real, the annual profit. #failureRate ;;Real, the annual failure rate. #wealth ;;Real, current wealth. #horizon ;;Integer, the decision horizon. #objective ;;String, "minRisk"|"maxEarn"|"tradeoff" ] ;;Find typical end-of-horizon investor gain. let _earningPotential (#horizon * #profit) let _xaWealth (#wealth + _earningPotential) ;;Factor in risk of failure over time horizon let _pSurvival ((1 - #failureRate) ^ #horizon) let _value (ifelse-value (_xaWealth < 0) [0] ;following R&G: min payoff is zero. ("minRisk" = #objective) [_pSurvival] ("maxEarn" = #objective) [_xaWealth] ("tradeoff" = #objective) [_xaWealth * _pSurvival] ) report _value end
Consequences of Optimization
Investors are optimizers: the pick a business that combines the best combination of earning potential and likelihood of survival. However, they have limited sensing ability: only nearby (in the opportunity space) businesses are considered. If any available nearby opportunity offers better anticipated utility, the investor will pick it over the current business.
This computation of utility has some interesting implications. Consider an investor choosing between two patches with the following characteristics: \((y_1,p_1) = (100,0.1)\). and \((y_2,p_2) = (200,0.2)\), The ex ante payoff to an investor is a function of the investor’s wealth. For this illustration, use a horizon of one year.
At low levels of investor wealth, the high risk opportunity is preferred. But as the investor accumulates wealth, the high risk opportunity eventually puts too much at risk. Above a wealth of \(700\), the investor prefers the low risk option. This means that we may observe an investor switch back and forth between options as wealth rises and falls.
Value of a Match
An Opportunity
has a value for an Investor
.
This is the basis of picking a business.
An investor examines the opportunities within sensing range
and picks the one with the highest anticipated utility.
Picking a Business
to pickBusiness ;turtle proc ;; Candidate businesses are unowned nearby opportunities: let _candidates ([neighbors] of business) with [nobody = owner] ;; Identify a best of the candidates: let _best (max-one-of _candidates [[matchValue myself] of myself]) if not is-patch? _best [error "must be patch"] ;; Switch businesses if it pays to: if (matchValue _best > matchValue business) [ pursue _best set endeavors (lput _best endeavors) ] end
Running the Business
Running the business produces income each year, which augments the investor’s wealth. However, investors face a business-specific likelihood of business failure, which leads to bankruptcy. (Wealth falls to zero.) When a business fails, the investor may try a new business, or may againt attempt to run the old business. The number of investors is fixed during a simulation run. If a business fails, the investor goes broke (i.e., wealth falls to zero).
Simulation Schedule
An investor with a business will sense nearby business opportunities. Following [Railsback.Grimm-2019-PrincetonUP], the opportunity landscape is 19 by 19 patches in size with no wrapping at its edges.
Discrete Time
Time moves discretely,
with one iteration through the model schedule representing one period.
The intended time-scale of the model is that one period represents one year.
The model schedule is very simple:
each period, each investor picks a business (possibly unchanged) and runs it.
Investors make their business choices in random order,
so that no investor is given a permanent first-mover advantage.
We can summarize this with the following step
procedure.
to step ask turtles [pickBusiness] ask turtles [runBusiness] tick end
Simulations in this model have no natural stopping point. Following [Railsback.Grimm-2019-PrincetonUP], simulations run for 50 years.
Success of Optimization
Realistically, high profit opportunities are rarer than low profit opportunities. Somewhatless realistically, the risk of failure is unrelated to expected profitabiilty. Since search is local, good opportunities are often overlooked. Still, mean utility tends to rise. Recall that emergent outcomes are aggregate patterns that result from the micro-level interactions. The most surprising result to emerge is that mean profit tends to fall over time. This can be explained by attending to the wealth dependence of utility.
Interaction
Investors (turtles) interact directly with opportunities (patches) but only indirectly with each other. Indirect interaction arises because only one investor at a time can operated a particular business.
Stochasticity
Outside of the model setup, the only explicit stochasticity is in business failure. However, as [Railsback.Grimm-2019-PrincetonUP] note, the code allows for stochastic tie breaking if an investor find a tie among best investment opportunities. With the match evaluation described above and the setup described below, such ties are extremely unlikely.
Baseline Parameterization and Results
Baseline Parameterization
The baseline parameterization comes directly from [Railsback.Grimm-2019-PrincetonUP].
to setupGlobals ; (Baseline values from Railsback and Grimm ch 11.) set nYears 50 set nInvestors 25 set systemicRisk 0.01 set maxIdiosyncraticRisk 0.09 set meanRevenue 5000 set meanCosts 2000 set horizon 5 end
The annual income and risk of failure of each business opportunity is determined at initialization and never changes. Annual income is drawn from a random exponential distribution, so that high-profit opportunities are relatively rare. Idiosyncratic failure risks are drawn from a uniform distribution on \([0.01 .. 0.09]\). Twenty five investor agents randomly allocated among 361 business opportunities, subject to a unique ownership constraint. (That is, only one investor at a time can pursue any given business opportunity.) Investors begin the simulation with no wealth.
Gathering Data from the Experiment
Use of the GUI is a primary source of observation. The View is colored to represent the typical annual profits of each patch. Following [Railsback.Grimm-2019-PrincetonUP], the investors in the View have their pen down, so that we can us observe how many patches each has used. Generally speaking, the answer is not many. Since we keep track of the businesses each investor pursues during a simulation, we can pin this down quantitatively.
Plots: distribution of utility, wealth inequality, mean income and riskiness of operating businesses, mean wealth of investor The distribution of wealth is measured with the coefficient of variation.
Investor data is gathered as the simulation runs.
Conclusion and Resources
BI World Explorations
In the BI World model, and extend the interface by adding a slider for the mean annual income.
In the BI World model, extend the model so that investors have different objective functions. Examine the resulting distribution of wealth for each type of investor. Which type does best?
Remove the hardcoded parameters from the baseline model and replace them with global variables. (When desirable, provide sliders to facilitate user experimentation.)
Track GDP.
Let any shock diffuse to nearby businesses.
Evaluated anticipated income based on its discounted present value by introducing a fixed interest rate.
Allow for some error in the sensing of business opportunities.
In the baseline model, annual profits are uncorrelated between adjacent business opportunities. Suppose there is some correlation in adjacent opportunities. (In NetLogo, you can
diffuse
the annual profits to produce this.) How do the model results change? Or, suppose that profits are depressed when adjacent businesses are operated. How do the model results change?In the baseline model, all investors use the same decision horizon. Change the model by letting each investor have its own
horizon
, set randomly at setup to a value between1
and10
. How does an investor’s horizon affect end-of-simulation wealth outcomes?[Railsback.Grimm-2019-PrincetonUP] consider a variant of the Business Investor model that replaces optimization with “satisficing” behavior, as follows. If an investor’s current business has a match value of greater than the investor’s satisficing threshold, the investor does not switch businesses. Otherwise, it switches to a randomly chosen adjacent business. Set the threshold to mean annual income, and determine how the model results change. Next consider a threshold multiplier running from 0.5 to 2, where the threshold is the multiplier time mean annual income.
(Advanced) In a BI World, business opportunities have no associated behavior except recording an owner. Demonstrate how to use hash tables to represent business opportunities.
Hint
The
table
extension provides a hash-table data type.
Additional Resources
For a brief introduction to logical connectives, see the Wikipedia article. For more details, see Chapter 3 of [Lehman.Leighton.Meyer-2018-MathCompSci]. (This book is freely available from the Wikimedia Commons.)
References
Lehman, Eric, F. Thomson Leighton, and Albert R. Meyer. (2018) Mathematics for Computer Science. Cambridge, MA: self published. https://courses.csail.mit.edu/6.042/spring18/mcs.pdf
Lorenz, M.O. (1905) Methods of Measuring the Concentration of Wealth. Publications of the American Statitical Association 9, 209--219.
Railsback, Steven F., and Volker Grimm. (2019) Agent-Based and Individual-Based Modeling: A Practical Introduction. Princeton, NJ: Princeton University Press.
Copyright © 2016–2025 Alan G. Isaac. All rights reserved.