This is a model I wrote some time ago, a very stylized special case of a more general recursive model I’m currently working on. Hopefully, the more general model will feature as a chapter of my dissertation, and this might be a subsection of that chapter. I think it’s a sort of interesting model in its own right, even apart from the setting.
The basic motivation is the “orbital debris” problem: as satellites are launched into orbit, there are some debris that accumulate and pose a threat to other objects in the orbital environment. There’s a pretty big literature on this in the aerospace engineering and astrophysics communities, and the popular press has written about this as well. I’ve blogged about a couple papers on the subject before (physics/engineering, economics).
The basic intuition is pretty straightforward and well-known in economics: pollution is a negative externality, firms don’t face the full cost of polluting the environment, they overproduce pollution relative to the socially optimum level. I’m not going to present the planner’s solution, but in the stylized model here firms can cooperate to reduce the amount of debris produced. Without cooperation, they’ll end up choosing higher orbits and producing more debris. The debris can destroy satellites (and that is bad).
In this model I’m focusing on how a firm’s optimal choice of altitude in low-Earth orbit is affected by another firm’s altitude choice. This is an inter-firm externality, which is a little different from the usual consumer-facing externality, but is conceptually similar to strategic substitutability in oligopoly games.
The model setting
Consider an environment with two orbits, high (H) and low (L). We can think of these as spherical altitude shells, similar to the approach described in Rossi et. al (1998).
There are 2 identical firms, each with 1 satellite per period. Debris decays completely after 1 period. Collisions completely destroy a satellite, and generate no debris. Satellites last 1 period, and then are properly disposed of. This lets me talk about dynamics while keeping the decision static.
is the orbit chosen by firm for its satellite. The probability that firm ’s satellite survives the period is . is the probability of a collision between two satellites in the same orbit*. Putting a satellite in orbit generates some debris in orbit for that period. is the probability a satellite in the low orbit is destroyed by debris from a satellite in the high orbit**.
*We could say that satellites never collide with each other, but the analysis carries through as long as satellites generate some collision probability for other satellites in the same shell. I think this is generally true, since objects like final stage boosters, random bits that break off, or dead satellites which are not properly disposed of generate such probabilities.
**The idea here is that debris orbits decay toward Earth. This is more relevant for objects in low-Earth orbit, which is what I’m thinking about with this model.
The returns from owning a satellite are normalized to 1, so that we can focus on the probabilities . With the above definitions, we can define the satellite survival probabilities for firm as
So being the only satellite in the high orbit is the best position to be in, since you’re not at risk from debris or the other satellite. It seems reasonable to assume that as long as the altitude shells aren’t too large.
The really important assumption is the relationship between and . If (case 1, debris is more likely to cause a collision than a satellite), we’ll end up with one Nash equilibrium in pure strategies. If (case 2), we can have up to three Nash equilibria in pure strategies. When we relax the assumption that debris decays completely at the end of the period and allow debris growth, we’ll have transitions between the two cases.
Solving the model
The game matrix:
(Best responses are underlined. Row player is the first entry, column player is the second.)
The only Nash equilibrium in pure strategies here is for both firms to go high, . I call this case “orbital pooling”.
The folk region:
(The images in this post are all photos of diagrams I drew in pencil in my notebook many months ago.)
This case is like a prisoner’s dilemma. Neither firm wants to be in the low orbit when the other firm can go high and make them take on risk. Both firms want to try to be the only firm in the high orbit with no risk - you can see this in the folk region diagram and best responses. So, both firms end up high and with risk.
The game matrix:
There are up to three Nash equilibria in pure strategies here: , and . The equilibrium is possible if . I call this case “orbital separation”.
The folk region:
The intuition here is straightforward: pooling on the same orbit is worse than (or, if , as good as) mixing it up, so the firms mix it up.
Orbital separation has less overall risk and debris than orbital pooling. The firm which went low bears more risk than the firm which went high under orbital separation, but the orbits are cleaner overall. If we had more realistic debris dynamics (where debris could interact with other debris to generate more debris), orbital separation would be even better than orbital pooling.
There are four inferences we can draw about the process dynamics from this:
If is initially low but grows faster than , orbital separation will transition to orbital pooling
If increases at the same rate as or a rate slower than , orbital separation is sustainable
If decreases faster than , orbital pooling can transition to orbital separation
Orbital pooling will increase
Let’s look at the debris dynamics a little more formally.
Putting some debris dynamics in
We’ll keep it simple here: debris in the low orbit will decay each period at a rate of , and launches to the high orbit will generate many debris in the low orbit. Letting be the next period debris stock, the three cases for the debris law of motion are
The diagram below shows the three possible fixed points of debris:
If both firms go low, the fixed point will be debris in the low orbit. If the firms separate, it will be . If the firms pool, it will be . The next diagram shows the returns from orbital pooling and orbital separation as a function of the current period debris stock .
(The x and y axes are flipped because economics.) is a debris threshold. Above , orbital pooling dominates orbital separation, and vice versa below .
One question is whether the steady state debris level under orbital separation is higher or lower than the pooling-separation threshold, i.e. is .
If , then will occur, then firms will shift from orbital separation to orbital pooling, and will be the final debris steady state.
If , will occur, and firms will stay in orbital separation.
Below are payoff-debris plots for orbital separation and orbital pooling (with proper x-y axes):
Cooperation with a grim trigger
The folk region diagrams show us that cooperating to get higher payoffs is generally possible. One way to see what the cooperation could look like is to write a trigger strategy for an infinitely repeated game and then see when it will/won’t lead to cooperation.
The trigger strategy for firm is:
Play if plays
If firm deviates, play forever
Firm ’s strategy is defined similarly.
We can see that there’s no incentive to deviate from to , only from to . Assuming the firms share a discount factor and expanding out the series of payoffs, they’ll cooperate as long as
So, they can cooperate and alternate orbital separation with a grim trigger if . We can get a sense for how likely this cooperation is in a payoff space,
So, cooperation seems more likely when orbital separation is already the Nash equilibrium. This seems intuitive enough to me.
This is obviously a very stylized model, but I think the general notion of orbital separation vs orbital pooling is more generally applicable. I think this conclusion is kinda neat.
With more altitudes, I would expect the pooling/separation dynamic to result in firms moving progressively higher in LEO. I think we can sort of see that in SpaceX and OneWeb’s altitude choices for their announced constellations - around 1,200 and 1,100 km up, close to or a little higher than the LEO altitudes which are most-used right now. Obviously there’s a lot more than collision risk going into the choice of altitude for a constellation, but I expect the risk to be a factor.
Adding the benefits to a particular altitude (e.g. coverage area) parameterizes the problem some more, but doesn’t seem to add any interesting economic dynamics. Launch costs are necessary in the dynamic decision model, but can be ignored here. Allowing satellites to last more than one period really complicates the economic dynamics, as does adding more firms or altitudes. The physical dynamics are cool and have been studied fairly well, but the economic dynamics have not really been studied at all. I may be biased - I think the exciting action in the space debris problem is in the economic dynamics.
I would really like to model constellation size choices, but again the economic dynamics make it really complicated. I wrote a single-shell model of comparative steady state constellation choices with free entry and debris accumulation for a class last semester which I might be able to extend with altitudes. The steady states are not easy to compute - mechanically, the problem is that the debris accumulation can make the cost function concave, making the firm’s optimization problem nonconvex. Getting the full transition paths would be cool and presumably even harder. I’m working on this, but I don’t expect to get the most general case with constellations, multiple firms, multiple altitudes, and debris accumulation any time soon.
An unnamed source sent me some fun datasets for an industrially-produced widget sold in Producistan for P-dollars (denoted $). The widget manufacturers seem to compete in a monopolistically competitive industry. There may be some vertical and horizontal integration, but I can’t see it in the data I have.
This post, like the previous one, is just a fun exercise in holiday programming. I found a neat R package, GGally, while writing this.
I’ll look at two datasets here: one a spreadsheet with data aggregated to the brand level where each row is a separate brand observation, and another spreadsheet with data broken down to a products offered by different brands. The data come from Producistan’s popular online shopping portal, and include the number of reviews per firm and per product as well as the average review ranking (usual 1-5 scale).
I have a third dataset where I linked the two by brand. I haven’t done anything with the linked dataset, but I like knowing it’s an option.
My source would prefer the data not be public, so I’ve loaded the spreadsheets from a pre-saved workspace and anonymized the firms and products. I’m not really interested in the industry, and my source doesn’t really care about the code and pictures being public.
Plots and regressions and stuff
Let’s look at the aggregated data first.
I really like the scatterplot matrix produced by ggpairs(). The diagonal is density plots for the variables, the upper triangular has correlation coefficients between the row and column variables, and the lower triangular has pairwise scatterplots with the row variable on the y-axis and the column variable on the x-axis. The scatterplots would be more useful with outliers trimmed, but I think there’s some utility to keeping them in. Let’s move through the diagonal and lower triangular column by column.
It looks like there are a lot of firms with 0-50 SKUs offered, and very few with more than that. I think there may be only one with more than 300 offered. Most firms have a decent price spread, but firms with a lot of SKUs tend to have prices below $20,000. Most of these SKUs have on the order of tens or hundreds of reviews, but a handful of firms with lots of SKUs have thousands of reviews. The phrase “long tail” comes to mind here.
I’m not sure how much we can glean from the correlation numbers. They’re just raw correlations, not controlling for anything or accounting for outliers, so I won’t spend any more time on them.
The dispersion variable is interesting. It’s the difference between the maximum and minimum observed prices for the item. My source tells me that a number of the listings they scraped for the data include fraudulent listings with prices that are way too high/low. I’m not sure what the purpose of these listings is, but it looks like products with very few reviews seem to have higher dispersions (though the correlation coefficient isn’t very high).
I think one of the weaknesses of the ggpairs() plots (and maybe scatterplot matrices in general) is that the y-axis scales aren’t always easy to figure out. The density plots, for example, are on a different scale from the scatterplots, but it’s hard to show that in a pretty way.
Now let’s run some simple linear regressions:
The standard errors aren’t robust, so I’m ignoring the t-stat/p-values here. I wouldn’t take these regressions very seriously - they’re just giving fancier correlations than the raw coefficients in the scatterplot matrix. Caveats issued, let’s read the tea leaves look at the parameter estimates.
From the first model, it looks like there is a positive correlation with the dispersion and the number of SKUs, and a positive correlation with the average price. There’s maybe a small negative correlation between the dispersion and the total number of reviews.
From the second model, it looks like a firm’s average price has a positive correlation with the number of SKUs the firm offers, and a small negative correlation with the number of reviews. These support a story where firms with more SKUs tend to target higher-income markets more aggressively, and where firms with higher prices tend to have fewer sales, but the standard errors are so large that it’s hard to buy the story just from the data.
Ok, let’s look at the disaggregated data now.
The prices have some commas and ranges in them, so they need to be cleaned before we can work with them. Getting rid of the commas is an easy application of gsub(). The ranges are a little trickier. There are dashes and number pairs in the fields. Getting rid of them and picking a single number would be fairly easy application of str_split_fixed() from the stringr library, but I’d like to take an average. That needs a few more lines.
In the end, I couldn’t think of an elegant one-liner to get the averages I wanted in the one minute I spent thinking about the problem. My lazy “non-R” thought was to write a for loop, but copy-pasting and editing the values ended up being just as easy. If I get a bigger dataset with more ranges, it would be worth it to spend a little more time writing something that scales better.
A lot of the products don’t have reviews or ratings.
Starting from the central density: most products have ratings around 4. Moving to the left, it looks like products with ratings around 4 tend to have the most reviews, as we might expect if having a rating is correlated with the number of reviews. Moving down, it looks like products with reviews and ratings tend to be lower-priced. One story for this is that higher-priced products sell fewer units.
Let’s look at the average price by brand now.
I dropped the brands with too few products for error bars which exclude zero. This also makes the plot slightly more legible - the full plot has over 150 brands, and is just not very easy to read. It looks kinda like something we’d get out of a Hotelling model of monopolistic competition, with maybe heterogeneous consumers/firms. Most firms seem to stay in the $20,000 or less price range, with a few gunning for the higher-end segments.
Let’s wrap up with some more linear regressions:
The Firm.id variable should be entered as a factor in m2.wmic rather than a numeric, but this makes the output a little cleaner and we’re not taking these regressions very seriously anyway.
It looks like higher-rated products tend to be higher-priced, controlling for the number of reviews and the identity of the firm. It also looks like the number of reviews is negatively correlated with the price. These results are consistent with a story where price is positively correlated with quality and negatively correlated with sales, and sales are positively correlated with the number of reviews (the story for the sign of the reviews coefficient is just a fancier way to say “demand slopes downward”).
Widgets in Producistan look like a monopolistically competitive industry. Price might be positively correlated with quality, and demand slopes downward. Firms with more products might go for the higher-WTP consumers more aggressively on average, while making fewer sales. Storytime aside, ggpairs() is a cool function.
My cousin sent me some data on motorcycle helmet weights for a project he’s working on. I thought it would be fun to slice it up and look at it a bit instead of working on things I should be working on.
The dataset is a spreadsheet with 4 columns and 135 rows. The columns are: a URL, a brand, a model name, and a weight.
What can we say?
It looks like most helmets cluster around the 1.6 kg range. Biltwell has the lightest helmets, with an average weight of 1227.5 grams, and Gmax the heaviest at a whopping 1966 grams - almost 2 kgs!
Of course, Gmax only has 1 helmet in this dataset. AGV and HJC are the kings of variety, with 14 models each in this dataset. Bell and LS2 are close runners up with 12 models each. Fly, GMax, Joe Rocket, Klim, and Vemar only have 1 model each in this dataset. In this dataset, brands have an average of 5.4 models.
The x axis labels on the histograms are messy. I don’t feel like spending the time to pretty them up. I have no idea if this information is in any way useful to anyone, but it was a fun exercise.
I read Cixin Liu’s The Three-Body Problem and The Dark Forest a while ago. If you like science fiction, I highly recommend both of them. I hear the English version of the third book in the series, Death’s End, is coming out on September 20th. I’m looking forward to it.
Though I think Three-Body Problem is the better story of the two, The Dark Forest had some interesting ideas of its own. The most interesting to me came late in the plot: a game theoretic explanation of the Fermi Paradox. From wikipedia’s page about TDF,
The universe is full of life. Life in the universe functions on two axioms: 1. Life’s goal is to survive and 2. That matter (resources) are finite. Like hunters in a dark forest, life can never been sure of alien life’s true intentions. The extreme distances between stars creates an insurmountable ‘Chain of Suspicion’ where the two civilizations cannot communicate fast enough to relieve mistrust, making conflict inevitable. Therefore, it is in every civilization’s best interests to preemptively strike any developing civilization before it can become a threat.
These axioms really appealed to me; “utility maximization” and “scarcity” are foundational in economics, and I like seeing them applied in science fiction settings.
This philosophy stackexchange thread has a nice discussion of the “Dark Forest Postulate” (including a simple matrix game formalizing the intuition from OP) and its assumptions. TL,DR: the Dark Forest assumptions might not hold, and there are many possible explanations for the Fermi Paradox.
Another assumption I don’t recall being stated explicitly in the book (but I think is important to the DF postulate) is speed-of-light restrictions on communication and travel - otherwise, the cost of communication/travel could be low enough to support cooperative equilibria.
In any case, I liked the idea, and wanted to try writing down a formal model in that vein. The question I consider here is: when is it optimal for a species to broadcast its presence to the universe at large?
Let species be a species deciding whether or not to broadcast its presence, . Any species is characterized by two parameters: its technology and its resources . Resources are matter and energy, and can be measured in energy units. I’m not sure how technology is measured, but I don’t think it’s too unreasonable to assume we can at least rank levels of technological development. Maybe it’s maximum energy consumption from a unit of resources, so then it’s energy units as well.
Broadcasting () is costless, and reveals species ’s presence to some other species with probability . If does not broadcast its presence, it gets to hide without ever being discovered.
A more involved model might actually model as a function of the type of broadcast, density of stars in the local neighborhood of , add a cost to broadcasting, maybe even add elements of faking its type. This is not that model.
Assumption 1: and , where and are their respective CDFs. and both also have PDFs, and expectations , .
Corollary 1a: With nothing else known about and , by the Principle of Maximum Entropy and . (I don’t think matter and energy are really uniformly distributed throughout the universe, but I’m not sure what other tractable distribution would be reasonable here.)
Assumption 1 encodes the notions of finite resources and potentially unbounded technological advancement (handwaving at thermodynamic constraints), while Corollary 1a gives the maximum entropy probability distributions under those assumptions. I think maximum entropy is an appropriate principle here since functional forms are convenient but anything else would impose stronger assumptions.
Assumption 2: Any species attempts to maximize a concave utility function , and receives utility from technology and resources as .
Assumption 2a: satisfies Inada conditions, and .
Assumption 2 captures the idea that a species is better off with higher levels of technology/resources subject to diminishing marginal utility, and tries to be as well off as it can. It could be made more general with instead of just , but I don’t think it’s necessary for a simple model. Assumption 2a captures the notion that a species considers total destruction (no resources/no technology) the worst possible outcome, and has marginal utility at infinitely high levels of technology. I’m not sure if the latter really matters in this setting, but the former will be important and it seemed weird to have one without the other.
Assumption 3: When two species and interact and both survive the interaction, their resources after interacting are given by the solution to the Nash Bargaining problem
Species ’s resources after the interaction are , and species ’s are . Species ’s expectation of prior to the interaction is .
For simplicity, I ignore potential technology transfers; each species still has technology and after the interaction.
I think Assumption 3 is strong, but maybe not unreasonable. NBS is a convenient assumption for sure. The idea I wanted to get at was that they’ll split the total resources between them in proportion to their levels of technological development. The form of also implies that species knows its own level of technological development and resource stock, but not species ’s until they interact. I think ignoring technology transfers makes this a little more pessimistic/conservative, as well as more tractable. I don’t think it affects the qualitative conclusions.
Assumption 4: When two species and interact, the probability that the one with the lower level of technology (say it’s ) does not survive the interaction is given by . The more technologically advanced species has net resources after the interaction.
Assumption 4 is strong, but I don’t know a weaker way to encode the probability that a species is destroyed by interacting with a technologically more advanced one. I calculated assuming knows , so the only unknown is .
The net resources bit isn’t to say that the more advanced species is going to try to steal the less advanced species’ resources (though that’s a possibility), just that the stuff’s there for the taking after the less advanced species is wiped out and I assume species takes it. Whether takes the resources or not doesn’t really matter to ’s decision to broadcast or not, since would be dead. I ignore the potential incentive of finding a weaker species and killing them and taking their stuff in the analysis below.
Let assumptions 1, 2, 3, and 4 hold. Let . Species ’s value function is
is ’s utility from not broadcasting (), and is ’s utility from broadcasting (). It is optimal for to broadcast its existence to the galaxy at large if
The concavity of from assumption 2 tells us that the bound on in is non-negative if , which implies . In words, ’s technology/resource ratio should be at least as high as the average technology/resource ratio for broadcasting to be worth the risk of extinction. This is coming from the Nash Bargaining mechanism, since wants to broadcast only if there are good odds it will come out ahead in the event of a peaceful interaction.
Corollary 1a lets us clean up the bound on to say that it’s non-negative if . I suppose this is at least in principle computable, though the uniform distribution assumption is sketchy. We can also do some basic comparative statics to say that is more likely to broadcast if
the maximum potential resources available to are larger
has more resources
the average level of technological development is lower
Under corollary 1a, any species with no information about the distribution of except for its own technology should be cautious: the probability that they are below the universal average level of technological development is .
Assumption 2a makes the bound on much more pessimistic. With 2a, no matter what ’s resource level is, means broadcasting is never worth the risk of getting destroyed (left with no technology/resources).
What can we say about the distribution of broadcasting species in the universe? If assumption 2a holds, it’s a spike at since no one wants to broadcast and risk annihilation. Let’s suppose 2a doesn’t hold, and express as a lower bound on :
The distribution of will follow an exponential distribution, truncated from below at . The PDF for is
Be careful about broadcasting your species’ presence to the universe. If there is nothing worse than annihilation, never broadcast. If you’re willing to risk annihilation and you haven’t found any evidence of a species other than your own… your technology is probably below average, so be careful anyway.
On the whole, biologists tend to treat the fisherman as an exogenous element in their analytical model, and the behavior of fishermen is not made into an integrated element of a general and systematic “bionomic” theory… the “overfishing problem” has its roots in the economic organization of the industry.
H. Scott Gordon, The Economic Theory of a Common Property Resource: The Fishery
Gordon’s critique of the state of fisheries management in 1957 seems very relevant to the state of the physics and engineering literature on orbital debris modeling. There are extremely sophisticated mathematical and statistical models of the physics involved, but the farthest any paper in this literature I’ve seen go toward integrating the behavioral responses of orbit users to the state of the orbital environment is Bradley and Wein (2009)
Economists have increasingly become aware of the orbital debris problem, and the issues with orbital management more generally. A lot of the work I’ve seen so far in space economics concerning orbital debris has been in the “law and economics” tradition. A brief selection of some of the work in this vein: Macauley (1998) (a conceptual framework and a model to estimate welfare costs of non-market geostationary belt allocation procedures and potential gains from market procedures),Senechal (2007) (what should we think about when drafting and negotiating an orbital debris convention), Weeden and Chow (2012) (a framework for potential policies using Ostrom’s principles for common-pool resources), Salter (2015) (clarifying the difficulties and costs private and public actors must consider), and of course the excellent Adilov, Alexander, and Cunningham (2015) (an economic model of earth orbit debris).
Macauley (1998) stands out as the only mathematical economic model I’ve seen of supply and demand factors orbital use which includes electromagnetic spectrum use. Adilov, Alexander, and Cunningham (2015) stands out as the only mathematical economic model I’ve seen of satellite launch behavior and orbital debris generation.
These models contribute to our understanding of the gaps between decentralized orbital and spectrum use without markets, with markets, and with an infeasible social planner, so that we have some sense of what we stand to gain by implementing orbital management institutions. The physical and engineering models describe what the physical constraints on such institutions are, and offer baseline values with which to calibrate and test economic models of specific use patterns.
This is all incredibly valuable.
Macauley (1998) is particularly notable to me for 2 reasons: (a) it was written in the 90s (the earliest draft I’ve seen is from 1994), before historically low launch costs and the space industry boom; (b) most of the current discussion I see of the economics of orbit focuses on orbital debris, but the evidently-less-sexy issues with spectrum use seem to attract considerable regulatory scrutiny.
Based on my studies in this area, I think there is still a need for a “Schaefer model of orbital management” - a dynamic economic model that characterizes the interaction between launchers’ behavior and the physical constraints of orbital use (i.e., the orbital mechanics of the debris problem and the physics of electromagnetic spectrum use). Such a model would be generalizable to: (a) the many uses of orbits, from telecommunications to imaging to tourism; (b) the different orbits in use, from LEO regimes to the GEO belt; and would provide a valuable benchmark against which policies could be measured and designed.