Economic Control of Alternative Currencies - Interactive Simulator

Projective Objectives

  • To develop an economic simulator capable of simulating characteristics of hypothetical alternative ocurrencies (e.g. cryptocurrencies), their users, environment, exchanges, etc.
  • To be freely available to use online.
  • Supporting design, development, control, and also regulation of alternative currencies.
  • With the goal of making them genuinely useful and competitive as currencies and electronic payment systems, in the long term too.

This Documentation

  • This is user documentation for a system that so far has not been created. Its rich detail captures a detailed design for the system.

1   Overview

1.1   Context

Alternative currencies include a wide range of schemes, such as cryptocurrencies, which exist alongside national fiat currencies (and the regional Euro), and serve similar purposes. Typically they have relatively few users but are not necessarily restricted to particular territories.

As alternatives to more familiar forms of money, alternative currencies need to fulfill the usual roles of money. Their performance in this role is their economic performance. Achieving good economic performance requires careful control. In particular, the supply of the currency needs to keep pace with its use or prices expressed in the currency will begin to inflate or deflate.

The key challenges for an alternative currency include gaining new users and maintaining a reasonably steady valuation against other currencies and in terms of equivalent goods and services.

New alternative currencies need to be designed carefully if they are to perform economically.

1.2   Purpose

This simulator is designed to allow testing, through interactive simulation, of proposed economic control methods for alternative currencies. Typically, the alternative currency will be at the design stage and does not exist at the time its control mechanisms are being designed.

In the simulator, it is possible to choose properties of the currency, its users, its ecosystem, and its economic environment and simulate possible futures for it.

The simulator is interactive so that you can repeatedly simulate a period of time, see what has happened so far, change your selected control settings, and continue the simulation for some more time. This provides an opportunity to learn more about what it takes to control the economic behaviour of an alternative currency.

1.3   Approach

1.3.1   Testing Controls

The simulation is agent-based, stochastic, and of discrete events. This means that it simulates the decision-making behaviour of individuals in detail, that some aspects of each simulation run are randomised to reflect uncertainty, and that the simulation is based on specific events happening at precise points in time. This means that you can see time series graphs showing the behaviour of the simulation over time and that it has the intricate detail characteristic of the real world. Also, if you run the simulation again from the start with the same settings (but not the same random number seed) you will get a different prediction.

With a system as complex and unpredictable as an economy, even when it is restricted to focus on a currency, it is not reasonable to expect precise predictions of the future. It might be possible to make probabilistic predictions and the simulator, properly used, should be better than intuition. However, the real goal of the simulator is to test control methods. Provided the control methods are based on relatively predictable phenomena it should be possible to explore their effectiveness against a variety of difficult market behaviour without the ability to make precise predictions about that market.

An analogy to this is the problem of predicting where sheep will wander in a field. They may be partly predictable, but left to themselves sheep may seem to roam randomly. However, using a well-trained sheep dog it is possible to harness sheep’s predictable tendency to herd together and retreat from the dog. If we can control the dog then the dog will control the sheep and the future path of the sheep becomes much more predictable.

During the interactive simulations, the user of the simulator takes the role of Controller and adjusts various settings that influence the evolution of the simulation, attempting to achieve economically desirable results.

1.3.2   Principles For Agent Decisions

All the agents in a simulation make decisions. Modelling those decisions is one of the most complex and important aspects of simulation. The decision rules that agents can use in the simulator have been designed with some helpful principles in mind.

  • Agents are diverse and error prone: The way agents ‘think’ is not the same for all agents and they have differing priorities and circumstances. Consequently, even if they appear to be facing the same decision about the alternative currency they are usually not. In most cases this is modelled by having the decision process control the probability of each alternative being chosen in a decision, but the final choice is randomised. In addition, agents sometimes have explicitly different philosophies and sometimes make mistakes randomly. Most alternative currency users are not professional currency traders using mathematical models and automated trading, so the simulation reflects reality.
  • Agent characteristics are controllable: The mix of agents with different characteristics can usually be changed in the simulator as can some important characteristics of those agent types.
  • Collective behaviour is broadly rational despite individual lapses: This is a typical property of human thinking, but especially when people have different sources of evidence. The agents are partly rational and partly consistent, confronted with a theory of the world that is too complex and unquantified for them to deal with.
  • Not blatantly stupid: Although individuals may occasionally make blatantly stupid decisions the collective tendency should be to avoid behaviour that is clearly irrational. For example, opting in as a customer when no goods can be bought with the alternative currency, or when the exchange rate is chaotic, is illogical and few if any agents should do it in a simulation. (But it might still be logical for a speculator.)
  • Limited intelligence: Where a decision analyst should, in theory, go into detailed and sophisticated modelling but this is not what nearly everyone does, the simulator will sometimes avoid the detail and just choose a number randomly from a sensible range. This again reflects real thinking which is bounded and inconsistent.
  • Consistent techniques: Where a decision is similar to another taken in the same or a different role then the mechanism of the decision is also similar.
  • Simplicity: Where there is no strong reason for choosing something more complex, the system uses the simplest mathematical approach available. For example: uniform distributions and simple multiplicative or additive models to combine variables. It has been assumed that causes do not interact unless it is clear that they do.
  • Real world variables: Wherever possible, variables have a real world meaning rather than being arbitrary coefficients. For example, a dimensionless index of publicity is not as good as a variable representing combined publicity in a way that might be measured in the real world e.g. ‘number of positive messages received per day on average per person.’
  • Real world calibration: Where practical, variables have been chosen so that real world data are available to compare with the simulation’s numbers. The main limitation on this is that often real world numbers are not available. For example, the number of people using Bitcoin is unknown.
  • Imaginable calibration situations: For some simulation settings it is necessary for you to choose a value based on experience and judgement. To make this easier there will sometimes be suggested defaults and you will usually be asked for a value of something that can be imagined and judged, rather than a seemingly meaningless parameter within a complex mathematical function. In some cases, what you choose is then converted into a parameter within a complex mathematical function.
1.3.3   Lifecycle Of An Alternative Currency

Some alternative currencies begin life with no users and no coins issued. They have mechanisms where new coins are created and users can get them and start using them. However, some alternative currencies give themselves a flying start by having some kind of initial phase where future users are recruited and may even buy the coins in advance of them existing, or buy tokens of some kind that can be exchanged for the coins once they exist. As a result, within moments of the currency starting to operate it can have many users with holdings, or the user base and holdings can grow quickly as people convert their tokens into coins.

Subsequently, the currency is used in various ways either forever or until it fails, is withdrawn, or is replaced by something similar. In the simulator, currencies continue until the end point set but it may be that they are effectively dead because of having almost no transactions, almost no users, and not being supported by any exchanges. Replacement and orderly withdrawal of alternative currencies are not supported.

1.3.4   Lifecycle Of a User

Deciding to become a user comes before decisions about how much of the currency to buy and usually involves some effort. For example, they will have to learn about the currency, consider alternative sources of the currency (e.g. different exchanges), decide how to store private information (such as private keys) securely, choose software or websites, install that software, and set themselves up on websites.

Choices of assumptions about user decisions in this area are important because the rate at which a currency gains or loses new users is crucial to its performance.

In the world there are many more people than can be represented in the simulator but only a small proportion of them, in the foreseeable future, will have any interest in using an alternative currency. In the simulation, that huge pool of people in the world, the potential users, is represented by a table with just counts of how many people have each of a list of different levels of exposure to news of the currency.

Periodically, a few people are taken from this list and created as individual potential users who soon consider becoming active users of the currency in one or more roles. If they do not opt in then they return to the pool of potential users. If they opt in to any of the roles then their life becomes much more interesting as they become active users.

During the simulation they may opt in or out of the various roles and will own the currency. They will buy or sell goods, speculate on the exchanges, and perhaps also provide computer power to support the currency system. Their wealth will rise and fall both in fiat and alternative currency terms.

When they have opted out of all roles they may spend a bit of time getting rid of their remaining holding of alternative currency, but when they no longer own any of the alternative currency (having sold their last coins) they will return to the pool of potential users.

1.3.5   Types Of Agent and Their Roles

There are several types of agent.

Token Holding Users: Agents that have tokens they can exchange for alternative currency. When they do they will become Active Users.

Pool Of Potential Users: An agent represents the large pool of potential users out there in the world, currently unconcerned with the currency.

Individual Potential Users: These are User agents waiting to consider opting in as Active Users.

Active Users: Typically the most numerous agents are the people who use the currency in some way. These user agents can take any or all of the following roles:

  • Speculator: Someone who buys and sells the currency hoping to buy low, sell high, and make a profit.
  • Customer: Someone who wants to use the currency to pay for real goods and services.
  • Merchant: Someone who wants to accept the currency as payment for real goods and services.
  • Operator: Someone who provides computer power that supports the currency system itself.

They may opt in and out of these roles at various times and as they do their behaviour changes accordingly. There may even be conflicts between the roles. If a user is not taking the role of Speculator then it usually wants to get rid of any currency it does not need. However, when a user adopts the Speculator role that changes and the user will hold what is expected to be profitable, which will often be more currency than is needed. This happens even if the user is also in other roles, such as Customer.

Opting Out User: This is a User who has opted out of all roles but still has a holding of alternative currency and wants to get rid of it.

Exchange: A much more specialised agent is a currency exchange.

Economic Environment: There is also an agent that represents the environment and generates challenging events such as news stories.

In addition to these software agents there is a participant called the Controller that is under the interactive control of the simulator’s user and tries to manage the alternative currency system to achieve good economic outcomes.

1.3.6   What is left out

No simulation can be a faithful replica of a functioning economy. Simplifications have to be made. The main simplifications made in this simulator are as follows:

  • The buying and selling of goods is only that by Customers and Merchants who have decided to be Active Users of the alternative currency. In the real world there will be many more Customers and Merchants and many more transactions.
  • International purchases and sales are not explicitly modelled.
  • Most of the details of Merchant activity are left out, including stock levels and costs to purchase goods.
  • Merchants do not compete on price.
  • There is no inflation in the fiat currency, which instead serves as a settled benchmark for valuation.
  • There are no financial instruments — not even loans.
  • The exchanges do not operate client accounts. Users of the exchanges just get the currency they want directly.

1.4   Validation

Agent-based simulations are very different from the more traditional statistical prediction models and from dynamical models based on differential equations. Agent-based simulations are based on intricate model components with realistic detail. It is very easy to compare them with our personal beliefs and mental models of people, decisions, and economies. It is natural to wonder how realistic each detailed assumption is and to seek validation of each element as well as overall predictive performance.

In contrast, the more abstract forms of mathematical model are usually based on ruthless simplification and validated mostly by their ability to make precise predictions of the real economy a short time into the future. We tend not to worry much about the realism of the elements of the abstract mathematical models and consider only their predictive performance.

The simulator supports a wide range of different ideas about how agents make their decisions so it is not practical to provide a simulator that is already fully validated for you to use. Although we have made a lot of effort to provide realistic features, users of the simulator will need to think about the choices they make and may want to validate their choices and the overall simulation performance. There are many ways to do this but there are unavoidable limitations to what is possible, especially if the alternative currency is still at the design stage.

Even the performance of similar currencies in the past may be unreliable as a guide to the future because of different economic conditions, attracting different populations of market participants, and even different behaviours (including predatory behaviours) by participants who have learned from past experiences and developed new strategies.

1.5   Overview Of This Documentation

This documentation is at four levels. It begins with conceptual overview sections.

Then there are sections about how to work with the simulator, explaining the various parameters and what can be reported.

The agent decisions are explained in more detail in:

And, finally, most of the mathematical formulae and other nuts and bolts are given in:

1.6   Further Reading

This is a useful introductory overview of alternative currencies:

Parliamentary Office of Science & Technology (2014). Alternative Currencies. Available online here.

And this is a good example of agent-based simulation used to explore adoption of new technology and it shows some of the ways to do validation when you have relevant past data to work with:

Rai, V., & Robinson, S. A. (2015). Agent-based modeling of energy technology adoption: Empirical integration of social, behavioral, economic, and environmental factors. Environmental Modelling & Software, 70, 163-177. Available online here.

2   Simulation Workflow

2.1   Simulations And Trials

The first step is to create a Simulation, which is just a bundle of defaults for the various parameters that will be set. Having chosen those defaults you then create a Trial, which initially copies the settings of your Simulation, but which you can change, both initially and as the Trial unfolds.

This means that you can conveniently group together many Trials that are the same or almost the same, except for some tweaks you have made to see what difference they would make.

The various parameters you can change for a Simulation are under the menu on the left hand side of the simulator screen. Trial List simply shows the list of Trials, if any, for your Simulation, and Descriptions fields are just for you to add helpful text explaining your Simulation. The other menu items let you change parameter settings.

Whenever you are looking at the Trial List page the settings will be for the Simulation (i.e. will be defaults for any Trial created under that Simulation). Whenever you are looking at a particular Trial, the settings relate to that Trial only. (Defaults for other Trials under the Simulation are unaffected by changes to the settings for an individual Trial.)

Although Simulation settings and Trial settings are different numbers, the explanations of Simulation defaults are the same as for the Trial settings, so they are all explained once under the heading Parameters.

2.2   Presets

Although the simulations are, unavoidably, much simpler than real life, there are still many settings to think about and adjust. It’s complicated work that takes time. To save time it helps to reuse elements as far as possible and the simulator has three mechanisms for this:

  1. Simulations, which are bundles of defaults used as the starting point for similar or identical Trials.
  2. Copying a Simulation to create a new one with a new name but the same settings as the first, for modification.
  3. Presets, which are named bundles of settings at various levels within the parameters.

(You may have seen presets in other software. They are used extensively in music effects software to save and reuse the many complex settings needed to specify music sounds.)

Some presets are already part of the simulator. If you select one, the settings it contains are put into the Simulation or Trial you are currently working on. You can still change those settings individually as usual.

You can also create presets yourself while working with a Simulation or Trial. This involves choosing to create the preset at a particular level (explained below), then giving a name to the new preset. The settings currently in force at the chosen level are then saved in the preset.

Existing presets can be renamed and deleted.

The levels of preset are:

  • Complete simulation: All the settings for a Simulation or Trial are saved. The settings used are those of the Simulation if you are working on the Simulation, but those of the Trial if you are working on a Trial.
  • Section: The settings are saved for sections of the Simulation/Trial. The sections are: Environment, Currency, Users, Exchanges, and Controls.
  • Multiplier Definitions: Just the settings for an individual multiplier definition that maps decision factors to the values used in some decisions. The simulator distinguishes between multiplier definitions that map decision factors to values in the range 0 to 1 and other multiplier decisions and shows which is which. It also will not allow you to use a multiplier definition for a decision with which it is not compatible. While you are editing multiplier definitions the option to create a preset using the definitions you are currently working on is available.

2.3   Examining Results

During a Trial, and once a Trial is finished, you can:

  • view a number of different charts showing how the Trial unfolded
  • download those charts as graphic files
  • download a data file (.csv format) for analysis in other tools
  • download a data file (.csv format) showing the settings that were in place during the Trial, including changes made and their timing.

You can also download a data file (.csv format) showing the defaults for a Simulation.

3   Reasons For Using Alternative Currencies

People will use alternative currencies for a variety of reasons. Not all of these can be captured by the simulator but many can, at least approximately.

3.1   Non-Financial Reasons

Some potentially important reasons are as follows:

  • Exclusive Goods: To buy goods/services that can only be bought using the alternative currency.
  • Smart Contracting: To use electronic systems that help to enforce and execute contracts, potentially enabling trade between parties that initially have low mutual trust.
  • Exploration: To learn about a technology that might become important.
  • Social Reasons: For political or moral reasons, or to foster a community.
  • Style: To demonstrate qualities such as modernity or willingness to take risks.
  • Crime: A wide range of dishonest behaviours have been linked to alternative currencies, particularly cryptocurrencies. The motive might be to hide transactions, income, or wealth to evade tax, hide crime, or avoid identification. It might be part of a scam to cheat gullible speculators.

Most of these reasons cannot be modelled explicitly by the simulator. However, it is possible to create personal propensities to use the alternative currency that represent the effect of these reasons. The propensities of individuals will be randomly distributed, but according to a distribution that is controllable. For example, it is possible to make people, on average, more or less willing to get involved, or to change the difference in willingness between the most and least enthusiastic.

3.2   Financial Reasons

3.2.1   To Gain From Financial Speculation

This has been a key reason for Bitcoin especially and other cryptocurrencies. Speculators may hope to gain:

  • honestly by being smarter, better informed, faster, or luckier than other speculators; or
  • dishonestly by market manipulation (especially using pump and dump schemes i.e. manipulating news about the currency while buying and selling at just the right time).
3.2.2   To Exploit Flawed Prices

Two examples of this are as follows:

  • Differences Between Exchanges: If two currency exchanges offer different prices for the same alternative currency simultaneously it can be profitable to buy on one and simultaneously sell on the other. People doing this help keep prices across different exchanges closer together.
  • Dual Priced Goods: If goods are advertised for sale at two prices — one a fiat currency price and the other an alternative currency price — then it might be that the prices are not exactly consistent with the best current exchange rate so that it is cheaper to pay the alternative currency price. People exploiting pricing errors like this encourage frequent price revision, but if prices are not changed and the goods are sold in large quantities then it could be that the exchange rate is brought into line with the prices of goods rather than the other way around.
3.2.3   For Certainty Of Value

Even well-established fiat currencies of leading developed countries change their value over time due to inflation and exchange rate changes. Alternative currencies can use a number of methods to control their value.

  • Link To A Fiat Currency: An alternative currency can be tied to a trusted fiat currency so that the alternative currency can always be exchanged for a predictable quantity of the fiat currency.
  • Link To Real Goods: Alternative currencies tied effectively to well-defined goods can provide certainty, at least in respect of those goods. For example, if you buy a first class postage stamp and leave it, forgotten, in a drawer for five years, it will still be good for sending a letter first class, even if the price of a new stamp (and of sending a first class letter) has changed. Alternative currencies might be linked to things like a chocolate bar, a haircut, a kilogram of steel, or a kilowatt-hour of electricity.
  • Money Supply Control: One reason for inflation is a mis-match between the supply and demand for a currency. In future there might be electronically controlled currencies that manage their supply so well that inflation is all but eliminated.
3.2.4   To Save Money

Alternative currencies face two inherent disadvantages compared with typical fiat currencies when it comes to users saving money: (1) they are typically operating on a much smaller scale, so do not benefit from economies of scale, and (2) they are not accepted in payment for as many goods.

Alternative currencies can sometimes be more efficient and, even when not more efficient, they may be cheaper for some users in some situations than fiat currency alternatives. Some of these apparent price advantages cannot be continued indefinitely.

  • True Efficiency Per Transaction: A system that is very, very frugal could be competitive with fiat currency alternatives and consistently offer more efficient transactions when both buyer and seller costs are considered. It might be more efficient in its use of computer resources or be more completely automated.
  • International Circulation: When a customer in one country buys goods from a merchant in another country there are usually costs related to currency exchange and the payment transaction. Converting from one fiat currency to an alternative currency and then on to the second fiat currency would usually be inefficient because it involves, in effect, two exchange transactions rather than one, plus the purchase transaction. However, if both parties maintain a balance of the alternative currency and participate in a community of alternative currency users who collectively sell goods in both directions between the two countries it may not be necessary to exchange the alternative currency for any fiat currency. The alternative currency then operates as a global currency, albeit with a small group of users. To gain this benefit a user has to both send and receive the alternative currency (ideally to about the same extent) and collectively the cross-border trade in both directions needs to be about equal. This is something that companies do with USD and some other globally respected currencies, but an alternative currency might achieve it for ordinary individuals, who find each other, in part, through their use of the currency.
  • No Frills Service: A payment system might be less expensive because it cuts out some benefits provided by competitors, such as for security, reporting, fraud protection, recovery from errors, and insurance.
  • Better Competition: There may be situations where alternative currency is cheaper to use because the established alternative is provided by a monopolist, or oligopoly.
  • Accepting Less Profit: Operators of alternative currency payment systems might be prepared to accept less profit than providers of fiat currency payment systems (at least initially) and so might offer a cheaper service even though their technology and processes are not more efficient.
  • Temporary Loss Leaders: Promoters of an alternative currency might subsidise it for a period.
  • Funding By Speculators: An alternative currency might be paid for by giving operators of its systems amounts of newly minted alternative currency that are exchangeable for fiat currency they can spend. How this works is hard to understand but the effect is that the operators are being paid to a large extent by speculators when they buy the coins. Viewed in the long term it would be seen that the speculators on average lose fiat currency and the operators gain it.
  • Cross Subsidy: Another way that the true costs of a payment system can be hidden is by charging them to some users but not to others. In particular, some users might pay a high fee to gain some special service level while other users get their transactions free.
  • Merchant Pays All: A typical arrangement is for merchants to pay the entire cost of transactions when they receive money, making the process seem free to customers who are paying. Once it is established that customers do not have to pay more for using the system (as in the case of debit and credit cards) the merchant just has to accept less money (though of course it may be possible to increase the price of goods to compensate).

3.3   Further Reading

Ali, R., Barrdear, J., Clews, R., & Southgate, J. (2014). The economics of digital currencies. Bank of England Quarterly Bulletin, Q3. Available online here.

Khairuddin, I. E., Sas, C., Clinch, S., & Davies, N. (2016, May). Exploring motivations for bitcoin technology usage. In Proceedings of the 2016 CHI Conference Extended Abstracts on Human Factors in Computing Systems (pp. 2872-2878). ACM. Available online here.

Spenkelink, H. (2014). The adoption process of cryptocurrencies. Identifying factors that influence the adoption of cryptocurrencies from a multiple stakeholder perspective. Available online here.

4   Understanding Buzz

Interest in, and valuation of, alternative currencies is influenced by information reaching users and potential users. This takes the form of newspaper stories, blog posts, video posts, television news stories, emails and texts from friends and other contacts, conversations, and so on. These messages collectively, excluding statistics about the market such as market price and volume, are represented by the idea of Buzz. A user’s view of the alternative currency is conceptually different and modelled in other ways. (In academic literature on this subject the word ‘sentiment’ is more often used, but this potentially confuses users’ views with the news they are receiving. Buzz is about the news.)

4.1   Real World Buzz

The following are some observations about Buzz in real life. With some simplifying exceptions, the Buzz scheme implemented by the simulator reflects these.

4.1.1   Positive And Negative Information

The messages will include positive and negative information. Positive information encourages use and higher valuation of the alternative currency. Negative information discourages use and argues for lower valuation of the alternative currency.

Positive information is likely to be generated steadily, with the occasional positive event such as a supportive announcement by an exchange. Negative information may also be generated steadily, especially if there is a general swing away from a currency or a spreading realisation of a problem with it (e.g. the inefficiency and electricity consumption of Bitcoin). However, negative information is also more likely to be received due to shocking events such as crimes and regulatory restrictions.

4.1.2   Sources Of Information

Positive messages are likely to be produced by:

  • existing users, especially those with valuable holdings, customers wishing to use the currency and wanting merchants to accept it, and merchants hoping to gain new customers
  • journalists
  • people offering services to support the currency, such as software and exchange services
  • currency promoters, often the ones behind the technology.

Negative messages are likely to be produced by:

  • ex-users of the alternative currency, perhaps having realised some drawback with it
  • journalists
  • promoters of competing alternative currencies.
4.1.3   Quantity And Influence

The influencing effect of messages received depends on both their quantity and other aspects, such as the source, the medium, and what is said. Modelling these intricacies is too complex for the simulator so only the simplest aspects will be represented and randomisation used to represent the other complexities.

4.1.4   Changes Over Time

At any point in time some potential users will be attending to messages about alternative currencies more than others. They will also have a certain level of familiarity with the field. Over time, this can change, with people either losing or gaining interest, and familiarity either rising or falling. Although the simulator represents Buzz as changing, it does not attempt to model changing familiarity of people.

4.1.5   Receiving And Searching For Information

People passively receive messages initiated by others and also actively search for information.

For someone who knows nothing about an alternative currency to become a user there must be some prompt to get them interested (typically passively received), and enough information for them to find and consider for them to make up their minds (typically, actively searched for). Also, that information they find must be sufficiently positive about the currency for them to decide to try it. Those potential users will range from those who already know a lot about other alternative currencies and are regularly scanning for information about new ones to those who have no previous interest and perhaps are just prompted by a friend to take a look at something confusingly new.

The initial prompt might be, for example:

  • an email from a friend
  • a conversation with a work colleague who talks about how she started using the new currency
  • a YouTube video noticed while browsing in an idle moment
  • an article on a specialist online news site about alternative currencies
  • seeing the currency listed for the first time on a currency exchange.
4.1.6   Current Rate Of New Messages And Accumulated Messages

These prompts include messages that are sent and then forgotten (e.g. conversations and emails). It also includes items that have been published recently, such as new videos on YouTube being offered to browsers. Finally, it includes material that may have been published some time ago but can still be found on the internet. The tendency is for these prompts to be dominated by the current creation of messages about the alternative currency.

The further information they find and study might include, for example:

  • a website set up to promote the alternative currency
  • articles on specialist news sites about alternative currencies
  • blog postings about the currency
  • market statistics about the currency, such as the past exchange values and number of users.

These information sources are not so dominated by current output of messages and even quite old information can be influential if it is clear, helpful, and positive.

Clearly there can be a huge difference between the size of the accumulated body of messages and the current rate of new messages. Both will affect the rate at which new people consider becoming users and the results of their deliberations.

4.2   The Buzz Scheme

This is how Buzz has been implemented in the simulator. Details of the calculations used are given in 16.2   Buzz Calculations.

4.2.1   Buzz Generation

Conceptually, Buzz is modelled as a stream of positive messages and a stream of negative messages emitted by various people in proportion to the total holdings of the alternative currency, valued in the first fiat currency. These messages are of two types: transient and enduring. Transient messages, such as conversations, are received and then disappear from view. Enduring messages, such as blog posts, are created then remain public for a long period.

Enduring messages also tend to be messages that are sent to many people at the same time, such as news articles. The number of messages currently being received is a function of the transient messages and the enduring messages multiplied by the number of times the enduring messages are read in the first 24 hours, on average.

For each group of people generating messages that contribute to Buzz there are settings for positive messages and settings for negative messages. The meanings are the same in each case:

  • Transient Message Rate: This is the average number of transient messages per year generated by the group collectively, per £100,000 of total alternative currency holdings of all holders. (This is the value of all the alternative currency held by everyone expressed in the first fiat currency.) The idea is that people are more motivated to create and send messages (especially positive messages) when they hold more valuable alternative currency and that interest in the currency generally is greater when it is more valuable in total. These transient messages may be emails or conversations, but are not messages that stay visible, such as social media/blog postings, articles, and reports.
  • Enduring Message Rate: This is the average number of enduring messages per year generated by the group collectively, per £100,000 of total alternative currency holdings of all holders. (This is the value of all the alternative currency held by everyone expressed in the first fiat currency.) These enduring messages may be social media/blog postings, articles, and reports i.e. messages that remain visible for a long time. It does not matter to this number how many people read each message.
  • Enduring Reading Rate: This is the average number of readings per enduring message within the first 24 hours of the message being released. For example, if an article is posted on a news website and is read by 543 people in the first 24 hours then its reading rate is 543. However, the set number needs to be the average reading rate over all enduring messages generated by the group.

In addition to these messages generated by the environment, the Controller can also generate messages.

These are consolidated into two variables for use in agent decision-making: Positive Current Buzz and Negative Current Buzz. These two variables may be modified during a simulated day by newsworthy events.

4.2.2   Buzz Accumulation

The enduring messages are also important because they feed into two accumulated stocks of messages that depreciate over time: Positive Accumulated Buzz and Negative Accumulated Buzz. These are calculated at the end of each day.

4.2.3   Newsworthy Events

Newsworthy Events during a day have an immediate effect on Positive Current Buzz and Negative Current Buzz, and also an effect at the end of the day when the Accumulated Buzz figures are updated.

4.2.4   Use In Decisions

Different decisions can be made to weight Positive Current Buzz, Negative Current Buzz, Positive Accumulated Buzz, and Negative Accumulated Buzz differently. Suggested approaches are:

  • How many potential users consider opting in: mostly dependent on the Current Buzz.
  • How many potential users actually opt in having considered it: all Buzz variables.
  • Amount of alternative currency to hold: mostly depend on the Current Buzz.
  • Whether to opt out: mostly dependent on the Current Buzz.

4.3   Further Reading

Earlier academic work on ‘sentiment’ focused on the meaning of the concept, distinguishing it from rational thinking about market value. More recently the focus has been on statistical links between social media content and prices. Academic work on ‘buzz’ is more typical of work in the area of marking. This is a fairly typical example of academic work on ‘sentiment’ in recent years:

Karalevicius, V., Degrande, N., & De Weerdt, J. (2018). Using sentiment analysis to predict interday Bitcoin price movements. The Journal of Risk Finance, 19(1), 56-75. Available online here.

5   Working With Decision Factors

5.1   Decision Factors

For many of the most important decisions taken by agents in the simulator, you can specify the factors considered and how these are used in the decision method. The Decision Factor List gives all the available factors and these are also shown by the system as you work to specify a decision method.

The decision factors are labelled as either ‘half’ or ‘full’. A ‘half’ factor is one that starts at 0 and then rises (e.g. number of users). A ‘full’ factor is one that can take any value (e.g. average profit/loss, with losses being negative).

5.2   Linking Factors To Multipliers

The decision factors need to be calibrated to values of multipliers. Once the calibration is defined, each possible value of the factor is linked to a value of multiplier. These multipliers are numbers used to combine the effect of each decision factor and multipliers are used differently in different types of decision. Some multipliers are constrained between 0 and 1, but others are not.

To specify the calibration for a decision factor you need to choose a calibration function type and a small number of calibration values that are used to fix the precise mapping of decision factor values to multiplier values.

There are 8 calibration function types, but they are systematically named. The ‘asc’ is short for ‘ascending’ while ‘desc’ is short for ‘descending’. A ‘1’ on the end means the range (i.e. the output) is constrained to be between 0 and 1:

  • \(\text{half-asc}\): For factors that start at zero, and where higher factor values should link to higher multipliers.
  • \(\text{half-asc-1}\): For factors that start at zero, higher factor values should link to higher multipliers, and the multipliers must be between 0 and 1.
  • \(\text{half-desc}\): For factors that start at zero, and where higher factor values should link to lower multipliers.
  • \(\text{half-desc-1}\): For factors that start at zero, higher factor values should link to lower multipliers, and the multipliers must be between 0 and 1.
  • \(\text{full-asc}\): For factors that can take any value, and where higher factor values should link to higher multipliers.
  • \(\text{full-asc-1}\): For factors that can take any value, higher factor values should link to higher multipliers, and the multipliers must be between 0 and 1.
  • \(\text{full-desc}\): For factors that can take any value, and where higher factor values should link to lower multipliers.
  • \(\text{full-desc-1}\): For factors that can take any value, higher factor values should link to lower multipliers, and the multipliers must be between 0 and 1.

This example shows the characteristic shapes of \(\text{full-asc}\) and \(\text{full-desc}\). Different calibration values will produce similar but different curves.

_images/test.png

5.3   Calibration Values Required

The calibration values needed depend on the type of calibration function. The functions restricted to the range 0 to 1 are simpler and require only:

  • Half Level: The value of the factor that would give a multiplier of 0.5.
  • Zero Multiplier: The multiplier when the factor is 0.

The calibration functions with ranges you can specify all require:

  • Highest Multiplier: The highest possible multiplier.
  • Lowest Multiplier: The lowest possible multiplier.
  • Unit Level: The value of the factor that would give a multiplier of 1.

In addition, \(\text{full-asc}\) requires:

  • Double Level: The value of the factor that gives a multiplier of 2.

And \(\text{full-desc}\) requires:

  • Half Level: The value of the factor that gives a multiplier of 0.5.

For full details of the formulae used, see 16.5   Calibration Functions.

5.4   Further Reading

Two examples of using agent-based simulations to explore adoption of technology:

Moglia, M., Podkalicka, A., & McGregor, J. (2018). An Agent-Based Model of Residential Energy Efficiency Adoption. Journal of Artificial Societies and Social Simulation, 21(3). Available online here.

Palmer, J., Sorda, G., & Madlener, R. (2015). Modeling the diffusion of residential photovoltaic systems in italy: An agent-based simulation. Technological Forecasting and Social Change, 99, 106-131. Available online here.

6   Control Mechanisms

6.1   Controlling Currency Stocks

A number of potentially important control mechanisms require a Controller that takes currency in and sends it out. In real life this might be a done by a group of people or it might be automated. In the simulator, the Controller is an agent controlled by you, the user of the simulator. The control mechanisms are as follows:

  • Gift Freshly Minted: Users may receive a fixed amount of alternative currency, freshly minted for the purpose, when they first become Active Users.
  • Sell Freshly Minted: Users buy newly minted alternative currency from the Controller using fiat currency.
  • Buy Back And Melt: Users sell alternative currency back to the Controller and receive fiat currency; the Controller then destroys the alternative currency.
  • Sell From Holding: Users buy existing alternative currency from the Controller using fiat currency.
  • Buy Back And Hold: Users sell alternative currency back to the Controller and receive fiat currency; the Controller does not destroy the alternative currency.
  • Operator Payment In Freshly Minted: The Controller pays Operators for processing transactions using newly minted alternative currency.
  • Control Catalogue: The Controller buys goods (wholesale) using fiat currency and sells them to alternative currency users in return for alternative currency.

The Controller has to be careful to manage three stocks of currency:

  • Fiat Stock: its own stock of fiat currency.
  • Alt Stock: its own stock of alternative currency.
  • Alt Issued: the total stock of alternative currency issued (including its own stocks).

The effects of the methods can be summarised in this table.

Method Fiat Stock Alt Stock Alt Issued
Gift Coins Minted            +    
Sell Freshly Minted        +              +    
Buy Back And Melt                          
Sell From Holding        +                  
Buy Back And Hold                    +      
Operator Payment In Freshly Minted            +    
Control Catalogue                    +      
Generating Buzz                

Overall, the Controller’s position requires careful management but in general it should:

  • gain fiat as long as more alternative currency is issued than taken back (though it might have to hold on to it if using it to back the alternative currency)
  • gain fiat if selling goods profitably through the Control Catalogue
  • defend against predatory tactics by traders trying to exploit control mechanisms.

Ultimately, a lot depends on developing a more efficient payment system and/or some non-financial benefits.

For detail on the parameter settings for these controls see 12.1   Managing Stocks Of Currency.

6.2   Generating Buzz

The Controller can also increase or decrease the level of Positive Current Buzz. This costs fiat currency, so cannot be done to an unlimited extent. This is mentioned in the table of control mechanisms involving stocks of currency.

For detail on the parameter settings for these controls see 12.2   Generating Buzz.

6.3   Regulating Transactions

The Controller can also set rates that might have a useful controlling effect:

  • transaction fees paid by Users
  • choosing the rule used by a Market Maker that is a controlled Exchange to revise exchange rates (affecting sensitivity).

For detail on the parameter settings for these controls see 12.3   Other Control Settings.

6.4   Further Reading

A very interesting discussion of the idea of restricting the supply of alternative currency coins to manage the money supply:

Selgin, G. (2015). Synthetic commodity money. Journal of Financial Stability, 17, 92-99. Available online here.

7   Parameters — Timing

The parameters here are simply:

  • Trial Length: This is the total Trial length in simulated days.
  • Days Per Step: Each time you click the button to continue a Trial this number of days is simulated before control is returned to you.

8   Parameters — Environment

These settings specify the economic environment in which the alternative currency is imagined to be operating.

8.1   Goods

Merchants and the Control Catalogue (if used) offer real goods for sale to Customers. In real life these may be physical goods or services. The range of goods and their underlying prices in the fiat currency are held constant throughout simulation trials and no attempt is made to model inflation in the fiat currency.

Although the underlying fiat currency price is fixed for each good, the actual fiat currency price offered by a Merchant may be slightly different because of transaction fees. Also, alternative currency prices offered are affected by both transaction fees and changes in the value of the alternative currency relative to the fiat currency. The Controller can set its own ‘exchange rate’ for goods offered in the Control Catalogue but still pays transaction fees like everyone else.

Some goods have a substitute good that is similar but a bit better and that can only be purchased using the alternative currency. These goods may provide a motive for some Users opting in. In real life these ‘goods’ might be sessions in an online game or casino, for example. The Control Catalogue may also offer goods that cannot be offered by any Merchant.

Goods that have no substitute are called Lone Goods. Goods that have a substitute are called Paired Goods. Goods that can only be offered by the Control Catalogue are called Exclusive Goods. Goods can be priced in fiat currency, or in both the fiat currency and the alternative currency. Substitutes can only be priced in alternative currency.

The settings are:

  • Number Of Lone Goods: This is the number of different types of good that can be offered by Merchants and the Control Catalogue to be priced in either fiat currency or fiat and alternative currency (at the Merchant/Controller’s option). These goods have no substitute available exclusively in alternative currency. This should be kept quite small e.g. 10.
  • Number Of Paired Goods: This is the number of goods with a paired substitute. These pairs will be given the same fiat currency price but have different values in the eyes of Users.
  • Lowest Price Of A Good: The lowest price of a good that any Merchant/Control Catalogue can offer, expressed in the fiat currency. Must be more than zero and specified with no more than the appropriate number of decimal places for the fiat currency.
  • Mean Price Of A Good: The mean price of all goods offered, expressed in the fiat currency. Must be more than the Lowest Price Of A Good, and specified with no more than the appropriate number of decimals.
  • Median Price Of A Good: The median price of all goods offered, expressed in the fiat currency. Must be more than the Lowest Price Of A Good, and specified with no more than the appropriate number of decimals.

From this information the system randomly generates a set of goods with initial prices in the fiat currency. See 15.3.1   Choose the goods used. The Control Catalogue’s count of Exclusive Goods is set in 12.1   Managing Stocks Of Currency.

A final setting is:

  • Cost Multiple For Goods: This is a number that, when multiplied onto the underlying price of a good, gives its cost to the Merchant or Control Catalogue. This is simply a standard number for the whole simulation and is used to give an indication of profits resulting from sales. The default is 0.75.

8.2   Fiat Currency

In the simulator there is a fiat currency alongside the alternative currency. The settings for this are as follows:

  • FC Name: This is for the name of the fiat currency. The default is ‘Pounds’.
  • FC Abbreviation: This is for an abbreviation of the name of the fiat currency and is the most commonly used way to identify it on exchanges and elsewhere. Usually it has three letters (as with USD, GBP, RMB, and BTC for example). The default is ‘FC1’.
  • FC Symbol: This is a single character symbol for the fiat currency used as with symbols like $ and £. The default is ‘F’.
  • FC Decimal Places: This is the maximum number of decimal places used to state amounts in the fiat currency. For example, USD, GBP, and EUR all use two decimal places. Bitcoin has eight.
  • FC User Paid Fixed Transaction Fee The fixed fee paid in fiat currency by users of the fiat currency for each transaction.
  • FC User Paid Percentage Transaction Fee The percentage fee paid in fiat currency by users of the fiat currency for each transaction.
  • FC Who Pays Fees: This is who pays the transaction fees for a payment for goods using the fiat currency. The values are Customer and Merchant, so either Customer Pays Fees or Merchant Pays Fees. (See 16.8.1   Purchase/Sale Of Goods for full details.)

This fiat currency has special significance in the simulator because it is the main measure of value, assumed to have the same purchasing power throughout a Trial.

8.3   Buzz Generation

For more detailed information on Buzz, see 16.2   Buzz Calculations. For an overview see 4   Understanding Buzz.

Some important settings decide how much Buzz is generated in Trials. The table to fill in looks like this:

 
Speculators &
Customers
Merchants &
Operators
Journalists

Promoters

+ve Transient Message Rate        
+ve Enduring Message Rate        
+ve Enduring Reading Rate        
-ve Transient Message Rate        
-ve Enduring Message Rate        
-ve Enduring Reading Rate        

For each group of people generating messages that contribute to Buzz there are settings for positive messages and settings for negative messages. The meanings are the same in each case:

  • Transient Message Rate: This is the average number of transient messages per year generated by the group collectively, per £100,000 of total alternative currency holdings of all holders. (This is the value of all the alternative currency held by everyone expressed in the fiat currency.) The idea is that people are more motivated to create and send messages (especially positive messages) when they hold more valuable alternative currency and that interest in the currency generally is greater when it is more valuable in total. These transient messages may be emails or conversations, but are not messages that stay visible, such as social media/blog postings, articles, and reports.
  • Enduring Message Rate: This is the average number of enduring messages per year generated by the group collectively, per £100,000 of total alternative currency holdings of all holders. (This is the value of all the alternative currency held by everyone expressed in the fiat currency.) These enduring messages may be social media/blog postings, articles, and reports i.e. messages that remain visible for a long time. It does not matter to this number how many people read each message.
  • Enduring Reading Rate: This is the average number of readings per enduring message within the first 24 hours of the message being released. For example, if an article is posted on a news website and is read by 543 people in the first 24 hours then its reading rate is 543. However, the setting number needs to be the average reading rate over all enduring messages.

8.4   Buzz Accumulation

Positive and negative enduring messages are consolidated into Postive Accumulated Buzz and Negative Accumulated Buzz, representing enduring messages available to look at on the internet.

The Accumulated Buzz figures are updated at the end of each day by depreciating the current Accumulated Buzz by one day then adding the relevant enduring message rates for the day.

Buzz accumulation is controlled by the following settings:

  • Initial Positive Accumulated Buzz: This is the initial value of Positive Accumulated Buzz at go-live of the alternative currency, representing what has accumulated up to that point.
  • Initial Negative Accumulated Buzz: This is the initial value of Negative Accumulated Buzz at go-live of the alternative currency, representing what has accumulated up to that point.
  • Half Life Of Enduring Messages: This is the number of days it takes for the value given to a message within Positive and Negative Accumulated Buzz to reduce by 50%. This might be because the message is deleted, becomes obsolete, or becomes less credible. From this the simulator works out the daily depreciation of messages.

8.5   Newsworthy Events

In the simulator, newsworthy events that modify either Positive or Negative Current Buzz (and later, Positive Accumulated Buzz and Negative Accumulated Buzz) can be generated from time to time by the environment both (a) in response to simulated decisions by Exchange operators and (b) at random. Exchange operators deciding to support, or stop supporting, the currency can be important news stories. Random stories might be described as ‘Security Worry’, ‘Crime Discovered’, ‘Arrest Made’, and so on. They can be positive or negative.

There are two settings that determine the frequency of positive and negative random events:

  • Average Days Between Positive Events: This is the average number of days between positive newsworthy events. For a sense of realism, these events are randomly given the descriptions ‘Regulatory Support’ or ‘Retailer Support’, but these descriptions have no significance in the simulation.
  • Average Days Between Negative Events: This is the average number of days between negative newsworthy events. For a sense of realism, these events are randomly given the descriptions ‘Regulatory Restriction’, ‘Security Worry’, ‘Crime Discovered’, or ‘Arrest Made’, but these descriptions have no significance in the simulation.

See 16.6   Random Delays for more information on how random time delays are generated, and 15.3.4   When next to generate a positive/negative random newsworthy event, 15.3.5   The characteristics of a positive/negative random newsworthy event, and 15.3.6   The characteristics of the Exchange support increase/decrease event resulting for use in decisions.

The effect of an event is reflected in Buzz by multiplying the Positive and Negative Current Buzz by multipliers related to the event. The same is done for Accumulated Buzz figures. The idea is that the effect of an event on Buzz will be larger for currencies that already have higher Buzz. A multiplier of 1 will cause no change to Buzz. A multiplier of 2 will double it. The multipliers are taken at random from within a range determined by a Lowest and Highest value for the multiplier, with uniform probability distribution. (See 16.2   Buzz Calculations for details of the calculations.)

The settings are in the table looking like this:

Event type +ve Buzz Multiplier -ve Buzz Multiplier
  Lowest Highest Lowest Highest
Exchange Support Increase        
Exchange Support Decrease        
Random Positive Event        
Random Negative Event        

9   Parameters — Currency

Settings on these parameters determine design features of the alternative currency.

9.1   Basic Information

  • Name: This is for the name of the alternative currency. The default is ‘Alternative Coins’.
  • Abbreviation: This is for an abbreviation of the name and is the most commonly used way to identify the alternative currency on exchanges and elsewhere. Usually it has three letters (as with USD, GBP, RMB, and BTC for example). The default is ‘ALT’.
  • Symbol: This is a single character symbol for the alternative currency used as with symbols like $ and £. The default is ‘c’.
  • Decimal Places: This is the maximum number of decimal places used to state amounts in the alternative currency. For example, USD, GBP, and EUR all use two decimal places. Bitcoin has eight.
  • Who Pays Fees: This is who pays the transaction fees for a payment for goods using the alternative currency. The values are Customer and Merchant, so either Customer Pays Fees or Merchant Pays Fees. (See 16.8.1   Purchase/Sale Of Goods for full details.)
  • Initial Exchange Rate: The amount of fiat currency that is equivalent to one alternative coin. This exchange rate is not necessarily required but is the last resort when trying to establish a valuation of the the alternative currency (see 16.3   Currency Valuation History).

9.2   System Support

There are also settings related to the number of Operators involved, making the currency function:

  • Operators Needed: Choose ‘Yes’ if one or more Operators must be in place for the currency to function. This is the case for cryptocurrencies (which typically need nodes to process transactions and miners to provide proof that the Operators exist) but not for conventional notes and coins (where we ignore the physical act of creating the notes and coins because no further action is needed to support individual transactions). The number of Operators in place initially is set below under Launch Users And Holdings. If operators are needed then the minimum number is assumed to be 1.
  • Maximum Operators: The maximum number of Operators for the currency. This is useful if you want to limit the number of Operators for a blockchain in order to control its efficiency. Leave this blank if there is to be no maximum.
  • Maximum Operators Per Transaction: Current blockchain systems require all node operators to hold the full blockchain. For efficiency, future systems might split the transactions up, with only some nodes holding each transaction. This setting specifies the maximum number of Operators processing and holding any one transaction. If there are fewer than this many Operators then all the Operators will be involved. If this is left blank then this feature is not used. See 15.4.3   Which Operators process the transaction and who wins the transaction fee for details on how this affects decisions.
  • Maximum Percentage Of Operators Per Transaction: This setting specifies the maximum proportion of all Operators processing and holding any one transaction. If left blank then this feature is not used. If a Maximum Operators Per Transaction and a Maximum Percentage Of Operators Per Transaction are both set then it is the one that results in the lower number at any time that is effective. See 15.4.3   Which Operators process the transaction and who wins the transaction fee for details on how this affects decisions.

There are settings related to payments to Operators for transactions. These are made by the Controller and/or Users. All amounts are specified as the total paid across all Operators (so if there are more Operators they will each get smaller fees on average):

  • Controller Paid Fixed Transaction Fee (Minted): The total fixed fee per transaction paid to Operators by the Controller in the alternative currency, newly minted for the purpose. To model some cryptocurrencies it will be necessary to make this a fraction of the per-block fee.
  • Controller Paid Percentage Transaction Fee (Minted): This is the percentage of transaction value paid to Operators in the alternative currency by the Controller, newly minted for the purpose.
  • User Paid Fixed Transaction Fee: The total fixed fee per transaction paid to Operators in the alternative currency, paid by taking a cut of the transaction.
  • User Paid Percentage Transaction Fee: This is the percentage of transaction value paid to Operators in the alternative currency, paid by taking a cut of the transaction.
  • Just To Winner: Set to ‘Yes’ if the entire transaction fee is to be paid to the winner (in a consensus algorithm for example) and ‘No’ if it is to be split equally over all Operators that process and hold the transaction. (The settings above for Maximum Operators Per Transaction and Maximum Percentage Of Operators Per Transaction, if used, mean that in many cases not all Operators are involved with a transaction.) See 15.4.3   Which Operators process the transaction and who wins the transaction fee for details on how this affects decisions.

N.B. As the average reward per day to Operators falls to near the sum of their variable and fixed costs some will decide to quit. Alternatively, if the gap opens up then new Operators should enter, if this is allowed by Maximum Operators (the maximum number of Operators allowed).

These settings are important in various decisions by Customers and Merchants in particular. The settings are also important controls, so are repeated in 12.1   Managing Stocks Of Currency and in 12.3   Other Control Settings.

9.3   Minting Methods

This refers to the way new coins in the alterative currency get into circulation, not the physical process of minting.

The options supported by the simulator are:

  • Gifting: When a new user goes through some kind of registration process they are issued with a quantity of newly minted coins.
  • Purchase: Users can buy newly minted coins at any time at a price that may or may not vary over time.
  • Rewards: Operators are paid for their services in the alternative currency (according to Controller Paid Fixed Transaction Fee (Minted) and Controller Paid Percentage Transaction Fee (Minted) above).

These methods may also be used in combination.

The only parameter settings controlling these within this section are:

  • Gift Coins: The number of coins given to each user on registering for the first time. This may be zero or any positive number at the appropriate precision for the currency. Blank is taken as zero. The default is zero. If zero then Gift Coins are not given.
  • Sell Freshly Minted On/Off: Switches on or off the ability to buy freshly minted alternative currency from the Controller at the Mint Purchase Price.
  • Mint Purchase Price: The price in fiat currency to buy one alternative currency coin, freshly minted, from the Controller. Only effective when Sell Freshly Minted On/Off is set to On.

These two can also be set at 12.1   Managing Stocks Of Currency and the payments to Operators are specified above under System Support as Controller Paid (Minted) amounts, as well as being repeated at 12.1   Managing Stocks Of Currency.

9.4   Launch Users And Holdings

Currencies can launch in a variety of ways:

  • From Nothing: One possibility is to start with no Users and no coins minted.
  • Launch Users: Another possibility is to do some pre-launch work and so start with an initial population of Users with coins already minted and in their possession.
  • Token Holders: Another possibility is to do pre-launch work and have people who own tokens which they will be able to exchange for newly minted coins once the currency launches. Most will do that swap fairly quickly.
  • A Mix: Finally, there can be a mix of both initial coin holders and initial token holders.

The amount of money (of all kinds) that Users have initially is set under Parameters - Users, but for the Initial Users it is still necessary to specify how much of their initial wealth is to be held as the alternative currency and how much of the wealth of token holders is in the form of tokens. Note that Initial Users and token holders are separate groups of Users. That is, an individual User cannot both be an initial User and a Token Holding User.

The settings needed to define the initial situation as as follows:

  • Initial Users In Roles: This is a table used to specify the number of Users initially, showing which roles they have adopted. The available roles are Speculator, Customer, Merchant, and Operator and, since they must adopt at least one role, there are 15 combinations of roles they could adopt (\(2^4 - 1 = 15\)). In the example below, most Initial Users are Speculators only but some are Customers only and slightly more are Customers and Speculators together. There are five Merchants and five Operators. All the values must be non-negative integers and the defaults are all zero. The settings must be consistent with Operators Needed (explained above) so you must have at least one Operator initially if Operators Needed is ‘Yes’ but if it is ‘No’ then you must not have any users initially that are taking the role of Operator.
Spec. Cust. Merch. Oper. Users
Y - - - 100
- Y - - 50
Y Y - - 60
- - Y - 5
Y - Y - 0
- Y Y - 0
Y Y Y - 0
- - - Y 5
Y - - Y 0
- Y - Y 0
Y Y - Y 0
- - Y Y 0
Y - Y Y 0
- Y Y Y 0
Y Y Y Y 0
Total 220
  • Mean Fraction Held As Alternative Currency: All Initial Users are considered the same for wealth purposes initially. The total value of their holdings of fiat currency and alternative currency are determined by settings under 10.2.1   Settings For All Roles, but the proportion of that cash held as the alternative currency is drawn at random from a beta distribution whose parameters are calculated from its mean and variance. The Mean Fraction Held As Alternative Currency is the mean fraction of the initial cash pot of each User that is held in the alternative currency initially. (See 16.1   Minting Alternative Currency for all the ways that alternative currency can be minted.)
  • Variance Of Fraction Held As Alternative Currency: This variance is used along with the Mean above to calculate the parameters of the beta distribution used to generate initial fractions of wealth held in the alternative currency for each initial User. The simulator calculates parameters for the beta distribution and then displays feedback in the form of the mean, variance, P10, and P90 levels for the distribution resulting.
  • Initial Alternative Currency Value: The fiat currency price of an alternative currency coin to be used just for establishing how much of each initial User’s cash pot is in alternative currency.

See 15.4.1   The characteristics of the Initial Users in their roles for use in decisions.

  • Initial Token Holders: The number of people initially holding tokens they can exchange for coins.
  • Initial Token Holder Roles: This is a table used to specify the probability of a Token Holding User adopting each combination of roles when first becoming a User (as a result of swapping their tokens for alternative currency). If the alternative currency does not need Operators then the probability of each combination of roles that includes being an Operator must be zero. The total of the probabilities must be 1.
Spec. Cust. Merch. Oper. Prob.
Y - - - 0.8
- Y - - 0.1
Y Y - - 0.05
- - Y - 0.02
Y - Y - 0
- Y Y - 0
Y Y Y - 0
- - - Y 0.03
Y - - Y 0
- Y - Y 0
Y Y - Y 0
- - Y Y 0
Y - Y Y 0
- Y Y Y 0
Y Y Y Y 0
Total 1
  • Initial Token Price: This is the price, in the fiat currency, of each token (with each token being worth one unit of the alternative currency).
  • Mean Fraction Held As Tokens: All Token Holding Users are considered the same for wealth purposes initially. Their pots of cash are determined by settings under 10   Parameters — Users, but the proportion of that cash held as tokens is drawn at random from a beta distribution whose parameters are calculated from its mean and variance. The Mean Fraction Held As Tokens is the mean fraction of the initial holding of each Token Holding User that is held in tokens, using the Initial Token Price to value the tokens. (See 16.1   Minting Alternative Currency for all the ways that alternative currency can be minted.)
  • Variance Of Fraction Held As Tokens: This variance is used along with the Mean above to calculate the parameters of the beta distribution used to generate initial fractions of wealth held in tokens for each Token Holding User.

The parameters of the beta distribution are calculated in the same way as for the distribution of alternative currency above.

  • Mean Delay Until Using Tokens: This is the mean number of days before a Token Holding User exchanges all their tokens for alternative currency. The delay is distributed exponentially. See 16.6   Random Delays for more details.

See 15.4.2   The characteristics of the Token Holding Users initially, 15.5.1   When the Token Holding User will convert tokens into coins, 15.5.2   Which role(s) the Token Holding User will adopt, and 15.5.3   The extra characteristics of the Token Holding Users for more information on use in decisions.

9.5   Initial Holdings Of The Controller

At the start of a Trial, the Controller has initial stocks of currency:

  • Initial First Fiat Currency Of Controller: The amount of fiat currency held by the Controller when the Trial begins. Must not be negative.
  • Initial Alternative Currency Of Controller: The amount of alternative currency held by the Controller when the Trial begins. Must not be negative.

10   Parameters — Users

Users (of the alternative currency) in the simulator take many decisions and the rules governing those decisions can mostly be adjusted through parameter settings. By changing these you can change the behaviour of the Users and the whole simulated system.

The lifecycle of a User is:

  • Just a statistic in the Pool Of Potential Users.
  • An Individual Potential User, whose attention has been gained and who might decide to become…
  • an Active User in one or more roles.
  • An Opting Out User, who has opted out of all roles and now just wants to get rid of their remaining alternative currency.
  • Once again just a statistic in the Pool Of Potential Users.

10.1   The Pool Of Potential Users

The Pool Of Potential Users represents the wider population of people who might become Users but for the time being are not involved. The simulator represents this Pool with simple counts of people in it.

Each day, some of these potential Active Users are taken from the Pool and created as Individual Potential Users. These represent the people who are prompted, by conversations, emails, articles, etc to consider using the alternative currency. During the simulated day, each of the Individual Potential Users considers becoming an Active User of the alternative currency in one or more of the four roles. In the real world people usually search the internet or talk to friends to help them decide on this. If they opt in then they continue as Active Users. If they do not opt in then they cease to exist as Individual Potential Users and are returned to the Pool. If, after being an Active User of the alternative currency for a while, a User opts out of all roles then they become an Opting Out User and, finally, cease to exist as a User and get returned to the Pool.

The rate at which people become Active Users of the alternative currency is critical to the evolution of a Trial.

The Pool Of Potential Users is divided into 50 sub-totals, equal-sized at first. Each of the 50 sub-pools represents people exposed to a different proportion of the Total Current Buzz. The distribution of these proportions is controlled by settings explained below.

For example, if a sub-pool contains 1,000 potential Users and receives 5% of the Total Current Buzz (Positive Current Buzz + Negative Current Buzz), and if the Total Current Buzz is 2,000 messages (per day), then the sub-pool will receive 100 messages (2,000 x 5%). If, for example, 5% of those messages result in considering use then that is 5 (100 x 5%) Individual Potential Users from that sub-pool.

To take this example a bit further, imagine that the sub-pool initially contained 1,000 potential Users but 400 of these have already become Users leaving only 600 potential Users. If the sub-pool still receives 5% of the total Buzz Rate of 2,000 messages then the sub-pool receives 100 messages as before, but only 60 of these go to people not already Users. That means 3 (60 x 5%) Individual Potential Users will come from that sub-pool.

The number of Individual Potential Users selected from each sub-pool is rounded and the total selected is the sum across all 50 sub-pools.

The settings for the Pool are:

  • Total Pool Size: The total number of potential Users at the start of the Trial. Numbers between thousands and hundreds of thousands are reasonable, but other settings should ensure that the total number of Active Users does not become too large, making the simulator too slow. This should be a positive integer divisible by 50.
  • Time Between Releases: This is the simulated time in days between more potential Users being picked from the Pool to consider becoming Active Users. This should be a positive integer greater than or equal to 1, and the default is 1 day. The new Users will not start using the currency at the same instant, but will make their decision to opt in or out during the period between releases. While they wait to take that first decision they are Individual Potential Users.
  • Percentage Of Messages Received By Top 20%: This is the percentage of Total Current Buzz that is received by the most attentive 20% of potential Users in the Pool. (That is, the top 10 sub-pools of the 50.) This should be more than 0 and less than 100%. The simulator calculates the parameter of a Zipfian distribution that matches this percentage setting. The Zipfian distribution is a famous one with a single parameter, \(s\), that determines how unequal the distribution is.
  • Consideration Rate: This is the percentage of messages received by a potential User in the Pool that give rise to an Individual Potential User who will consider opting in. It should be between 0% and 100%, but 0% will mean that no Individual Potential Users are created.

See 15.6.1   When next to generate Individual Potential Users and 15.6.2   How many Individual Potential Users to create for use in decisions.

10.2   Individual Potential Users

10.2.1   Settings For All Roles

Regardless of their role(s), all users need an Initial Holding of the fiat currency. As usual, we want our Users to be different from each other, as in real life. The settings are as follows:

  • Lowest Initial Holding: This is the least, in the fiat currency, that any User can hold when they first become Users of the alternative currency (but before they have actually spent any of this Initial Holding of fiat currency).
  • Mean Initial Holding: This is the mean of holdings by Users when they first become Users of the alternative currency, expressed in the fiat currency.
  • Median Initial Holding: This is the median of holdings by Users when they first become Users of the alternative currency, expressed in the fiat currency.

See 16.4   Distributions Of Wealth for more details of the distribution used and 15.7.1   Initial properties of the Individual Potential User for use in decisions.

Some crucial decision factors are the personal propensities to adopt the User roles (see 14   Decision Factor List). This is a way to capture the non-financial reasons for getting involved. These propensities are distributed randomly according to Normal distributions with mean and standard deviation parameters you set. The table looks like this:

Propensity To Be A … Mean SD
Speculator    
Customer    
Merchant    
Operator    

The default value for the mean is zero but the more positive it is the more Users will tend to want to opt in to the role. The default value for the standard deviation is 1, but the larger it is the greater the variations in desire to opt in. Increasing the standard deviation but not the mean will still tend to cause more Users to opt in because it will produce more Users with an extremely positive propensity.

It is a good idea to think of these propensities as being part of the same system and to make them comparable. This will make it easier to calibrate them within decisions.

From these settings the simulator randomly generates specific propensity values for each new User agent created. See 15.7.1   Initial properties of the Individual Potential User for use in decisions.

10.2.2   Settings For Opting In

This is one of the most important and complex sets of decisions in a simulation. Each role is considered independently and, if a decision is taken to opt in to any of the roles, then the Individual Potential User will become an Active User in the selected role(s).

Different factors are important to each role. Each of these decisions is random, but with a probability of opting in that is controlled by a number of criteria. You could think of each criterion as a hurdle to be cleared. The initial assumption is that the probability of opting in is 1 (i.e. it is certain) but multipliers (always in the range 0..1) reduce this step by step. The more worry the User has on each criterion the more the probability of opting in is reduced. Having worked out a probability of opting in the final step is to generate a random number between 0 and 1 and check if it is less than the probability of opting in. If it is, then the User opts in to the relevant role.

For each role, the factors to consider must be chosen as settings from the list offered by the system. (See 14   Decision Factor List for the full set.)

Then, for each factor, a calibration function type must be chosen. With factors that have a value from zero upwards, labelled ‘half’ factors, the available function types are \(\text{half-asc-1}\) and \(\text{half-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’). With factors that can take any value, labelled ‘full’ factors, the available function types are \(\text{full-asc-1}\) and \(\text{full-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’).

Finally, for each factor, calibration values must be chosen that precisely fix the relationship between the decision factor and the probability multiplier resulting. You are asked to set a Half Level, which is the value for the factor that would give a multiplier of 0.5 (and reduce the probability of opting in by a half), and a Zero Multiplier, which is the value for the multiplier when the factor is zero.

For \(\text{half-asc-1}\) the Zero Multiplier must be less than 0.5. For \(\text{half-desc-1}\) the Zero Multiplier must be more than 0.5.

When all the criteria are considered each gives a multiplier reducing the probability of opting in and the product of all these is the final probability of opting in. This means that if all the factors are very satisfactory to the decision-maker the probability of opting in will be near to 1, but even one criterion on its own can reduce that to near zero if it is worrying enough.

10.2.2.1   As A Speculator

This requires a multiplier definition (see 15.7.3   Whether to opt in and for which role(s)):

  • IPU Speculator Opt In Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting in. Suggested factors for the Speculator opt in decision are as follows:
    • Propensity To Be A Speculator with \(\text{full-asc-1}\)
    • Current Buzz Positivity with \(\text{half-asc-1}\). The bigger the ratio of Positive to Negative Current Buzz the more persuasive it is.
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-asc-1}\). Higher variability is attractive to Speculators.
    • Trend Strength with \(\text{full-asc-1}\)
10.2.2.2   As A Customer

This requires a multiplier definition (see 15.7.3   Whether to opt in and for which role(s)):

  • IPU Customer Opt In Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting in. Suggested factors for the Customer opt in decision are as follows:
    • Propensity To Be A Customer with \(\text{full-asc-1}\)
    • Current Buzz Positivity with \(\text{half-asc-1}\)
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-desc-1}\). Customers prefer lower variability.
    • Total For Sale In Alternative Currency with \(\text{half-asc-1}\)
10.2.2.3   As A Merchant

This requires a multiplier definition (see 15.7.3   Whether to opt in and for which role(s)):

  • IPU Merchant Opt In Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting in. Suggested factors for the Merchant opt in decision are as follows:
    • Propensity To Be A Merchant with \(\text{full-asc-1}\)
    • Current Buzz Positivity with \(\text{half-asc-1}\)
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-desc-1}\). Merchants prefer lower variability.
    • Active User Count with \(\text{half-asc-1}\)
10.2.2.4   As An Operator

This requires a multiplier definition (see 15.7.3   Whether to opt in and for which role(s)):

  • IPU Operator Opt In Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting in. Suggested factors for the Operator opt in decision are as follows:
    • Propensity To Be An Operator with \(\text{full-asc-1}\)
    • Current Buzz Positivity with \(\text{half-asc-1}\)
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • Active User Count with \(\text{half-asc-1}\)
    • Operator Projected Profit with \(\text{full-asc-1}\)

10.3   Active Users

10.3.1   Settings For All Roles
10.3.1.1   When to consider holding levels

The ideal (average) time to next consider how much fiat currency and alternative currency to hold is different for each role held. The simulator calculates the ideal (average) time for each role and takes the earliest time as the average to use (see 15.8.1.1   When to consider holding levels).

The average delay for the Speculator role is determined by the following settings:

  • Speculator Holding Default Average Delay: The initial average delay in days.
  • Speculator Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Speculators in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
    • Value Of User Holding with \(\text{half-desc}\)
    • Total Transaction Fee with \(\text{half-asc}\)

The average delay for the Customer role is determined by the following settings:

  • Customer Holding Default Average Delay: The initial average delay in days.
  • Customer Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Customers in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
    • Value Of User Holding with \(\text{half-desc}\)
    • Total Transaction Fee with \(\text{half-asc}\)
    • Customer Purchases (Volume) with \(\text{half-desc}\)

The average delay for the Merchant role is determined by the following settings:

  • Merchant Holding Default Average Delay: The initial average delay in days.
  • Merchant Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Merchants in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
    • Value Of User Holding with \(\text{half-desc}\)
    • Total Transaction Fee with \(\text{half-asc}\)
    • Number Of Goods Offered with \(\text{half-desc}\)

The average delay for the Operator role is determined by the following settings:

  • Operator Holding Default Average Delay: The initial average delay in days.
  • Operator Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Operators in this decision are:
    • Value Of User Holding with \(\text{half-desc}\)
    • Fee Per Operator with \(\text{half-asc}\)
10.3.1.2   How much alternative currency and fiat currency to hold

The holdings of fiat currency and alternative currency depend on the roles taken by the User. If the User is not a Speculator then its need for currency is determined by the estimated needs of its activities as a Customer, Merchant, and/or Operator, plus a 50% safety margin. See 15.8.1.2   How much alternative currency and fiat currency to hold for related decision details.

However, if the User is a Speculator then some calculation is needed to decide how much would ideally be invested in each currency, and then this is combined with information about the currency needs from any other roles, and the Initial Holding, to decide on the holdings to aim for.

Speculators allocate their holdings (the combination of fiat currency and alternative currency) according to Kelly’s Betting Strategy, which is well-known. They decide the probability of the alternative currency rising in value relative to the fiat currency and then allocate their cash in accordance with the probability. If the probability of the alternative currency rising is judged to be \(p\) then the proportion of the holdings to be held as alternative currency will be \(p\) (valued in the fiat currency), with the rest in the fiat currency.

The judged probability of the alternative currency rising is based on decision factors, functions that map factors to probabilities (\(\text{half-asc-1}\), \(\text{half-desc-1}\), \(\text{full-asc-1}\), and \(\text{full-desc-1}\)), and their calibration settings.

The settings are:

  • Speculator Alt Holding Multiplier Definitions: Decision factors, calibration function types, and calibration levels that define probabilities for your chosen decision factors. Suggested factors for this decision are:
    • Current Buzz Positivity with \(\text{full-asc-1}\)
    • Trend Strength with \(\text{full-asc-1}\)
  • Speculator Alt Holding Factor Weights: These weight the decision factors and must sum to 1.

Since the Trend Strength is a key factor it is necessary to specify the Speculator’s approach to interpreting trends. Speculators use one of three different extrapolation rules and the percentage of each type generated (randomly) can be set. The percentages must add up to 100 of course.

  • Continue Trend %: This is the percentage of Speculators that expects current trends to continue.
  • Contrarian %: This is the percentage of Speculators that expects current trends to reverse.
  • Regress To Mean %: This is the percentage of Speculators that expects the next move to be towards a longer term moving average.

In addition, Trend Strength and some other decision factors use a recency weighting that is specific to each Speculator and represents their tendency to take a short- or long-term perspective.

  • Lowest Recency Factor: A number greater than 0 but less than 1 that represents the lowest possible long term weight given to the most recent value in a sequence.
  • Highest Recency Factor: A number greater than 0 but less than 1, and greater than or equal to the Lowest Recency Factor, that represents the highest possible long term weight given to the most recent value in a sequence. Each Speculator’s Recency Factor is chosen randomly, with a uniform probability distribution, between the Lowest and Highest Recency Factor.

The final calculation of the individual probabilities is done using a modified weighted average which requires weights, \(w_i\), summing to 1 to be chosen. If there are \(n\) factors to combine and each produces a probability, \(p_i\), then they are combined to make an overall probability as follows:

\[p_{all} = \sum_{i=0}^n w_i p_i, \ \ \ \text{where } p_0 = 0.5\]

The idea is that the initial view is that the probability of rising value is 0.5, but as more evidence is considered that view is modified. The weights determine how important each factor is and how much those revise the initial view. (The underlying idea is to use Bayesian updating of beta distributions, but the final formulae are simple.)

With this decided, the holdings of currency are then determined by considering the ideal levels for Speculation, the currency needs of other roles, and the Initial Holding of the User. This is specified in detail in 16.10.3   Reconsidering Holdings.

10.3.2   Settings For The Speculator Role
10.3.2.1   When next to consider opting in/out as a Speculator

Speculators consider opting in or out from time to time. The time delay between each consideration is random but with an average delay that you can set. However, you can also use decision factors to influence that default delay. (See 15.8.2.1   When next to consider opting in/out as a Speculator for use in decisions.)

Either the Active User is a Speculator already and will next consider opting out of that role, or the User is not a Speculator (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • Speculator Opting Default Average Delay: The initial average delay in days.
  • Speculator Opting Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Speculators in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
10.3.2.2   Opting In As A Speculator

The settings for opting in as a Speculator are those already covered under Individual Potential Users (10.2.2   Settings For Opting In), with specific suggestions for Speculators at 10.2.2.1   As A Speculator.

10.3.2.3   Opting Out From Being A Speculator

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors. Sometimes different criteria are used because Active Users have more information.

This requires a multiplier definition (see 15.8.2.3   Whether to opt out as a Speculator):

  • Speculator Opt Out Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting out. Suggested factors for this decision are as follows:
    • Propensity To Be A Speculator with \(\text{full-desc-1}\)
    • Current Buzz Positivity with \(\text{full-desc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-desc-1}\)
    • Speculator Gains with \(\text{full-desc-1}\)
    • Trend Strength with \(\text{full-desc-1}\)
10.3.3   Settings For The Customer Role
10.3.3.1   When next to consider opting in/out as a Customer

Customers consider opting in or out from time to time. The time delay to the next consideration is random but with an average delay that you can set (see 16.6   Random Delays). However, you can also use decision factors to adjust that default delay. (See 15.8.3.1   When next to consider opting in/out as a Customer for use in decisions.)

Either the Active User is a Customer already and will next consider opting out of that role, or the User is not a Customer (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • Customer Opting Default Average Delay: The initial average delay in days.
  • Customer Opting Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Customers in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
10.3.3.2   Opting In

The settings for opting in as a Customer are those already covered under Individual Potential Users (10.2.2   Settings For Opting In), with specific suggestions for Customers at 10.2.2.2   As A Customer.

10.3.3.3   Opting Out From Being A Customer

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors. Sometimes different criteria are used because Active Users have more information.

This requires a multiplier definition (see 15.8.3.3   Whether to opt out as a Customer):

  • Customer Opt Out Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting out. Suggested factors for this decision are as follows:
    • Propensity To Be A Customer with \(\text{full-desc-1}\)
    • Current Buzz Positivity with \(\text{full-desc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-asc-1}\)
    • Total For Sale In Alternative Currency with \(\text{half-desc-1}\)
    • Customer Purchases In Alternative Currency (Volume) with \(\text{half-desc-1}\)
10.3.3.4   Shopping

The simulator models only some of the complexities of everyday shopping behaviour. Merchants are not allowed to compete on price, other than accidentally and by choosing cheaper payment systems. Customers buy sub-sets of the Lone, Paired, and Exclusive Goods each day, selecting the Merchant offering the best price, or the Control Catalogue, or choosing at random if there is a tie.

Customers go shopping each day. Each Customer has their preferred time of day for shopping. How many items each Customer buys when shopping varies from day to day, and each Customer has their own average number. Some Customers buy more items, on average, each time they go shopping than others.

The exact number of purchases made daily is random but with a fixed average number for each person. The distribution of these averages is controlled by the following settings:

  • Earliest Time Of Day: When the Customer role is adopted, a time of day for shopping is selected and random. This is the earliest shopping time for any shopper.
  • Latest Time Of Day: This is the latest time of day for any shopper. Actual shopping times are chosen with a uniform probability distribution between the Earliest and Latest times.
  • Lowest Average Fraction Of Lone Goods Purchased: When the Customer role is adopted, an average fraction of the Lone Goods purchased daily is chosen based on the User’s Initial Holding but between the Lowest and Highest Average Fraction Of Lone Goods Purchased. This is the lowest fraction.
  • Highest Average Fraction Of Lone Goods Purchased: This is the highest average fraction of Lone Goods that the Customer will purchase daily.
  • Lowest Average Fraction Of Paired Goods Purchased: When the Customer role is adopted, an average fraction of the Paired Goods purchased daily is chosen based on the User’s Initial Holding but between the Lowest and Highest Average Fraction Of Paired Goods Purchased. This is the lowest fraction.
  • Highest Average Fraction Of Paired Goods Purchased: This is the highest average fraction of Paired Goods that the Customer will purchase daily.
  • Lowest Average Fraction Of Exclusive Goods Purchased: When the Customer role is adopted, an average fraction of the Exclusive Goods purchased daily is chosen based on the User’s Initial Holding but between the Lowest and Highest Average Fraction Of Exclusive Goods Purchased. This is the lowest fraction.
  • Highest Average Fraction Of Exclusive Goods Purchased: This is the highest average fraction of Exclusive Goods that the Customer will purchase daily.
  • Mean Substitute Valuation Multiple: Some goods have a substitute that is a bit different in value to the Customer (but not in underlying fiat currency price). The value of the substitute divided by the value of the good is the Substitute Valuation Multiple. These are generated randomly for Users according to the Normal distribution, with the Mean Substitute Valuation Multiple.
  • SD Of Substitute Valuation Multiple: This is the standard deviation for the distribution used to generate Substitute Valuation Multiples.

See 15.8.3.5   What to purchase and how for use in decisions.

10.3.4   Settings For The Merchant Role
10.3.4.1   When next to consider opting in/out as a Merchant

Merchants consider opting in or out from time to time. The time delay to the next consideration is random but with an average delay that you can set (see 16.6   Random Delays). However, you can also use decision factors to adjust that default delay. (See 15.8.4.1   When next to consider opting in/out as a Merchant for use in decisions.)

Either the Active User is a Merchant already and will next consider opting out of that role, or the User is not a Merchant (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • Merchant Opting Default Average Delay: The initial average delay in days.
  • Merchant Opting Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Merchants in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
10.3.4.2   Opting In As A Merchant

The settings for opting in as a Merchant are those already covered under Individual Potential Users (10.2.2   Settings For Opting In), with specific suggestions for Merchants at 10.2.2.3   As A Merchant.

10.3.4.3   Opting Out From Being A Merchant

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors. Sometimes different criteria are used because Active Users have more information.

This requires a multiplier definition (see 15.8.4.3   Whether to opt out as a Merchant):

  • Merchant Opt Out Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting out. Suggested factors for this decision are as follows:
    • Propensity To Be A Merchant with \(\text{full-desc-1}\)
    • Current Buzz Positivity with \(\text{full-desc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-asc-1}\)
    • Total For Sale In Alternative Currency with \(\text{half-desc-1}\)
    • Sales Made in Alternative Currency with \(\text{half-desc-1}\)
10.3.4.4   Which goods to offer

The following settings control the selection of goods offered by each Merchant.

  • Lowest Fraction Of Lone Goods: This is the lowest fraction of the total list of types of Lone Good that any Merchant can offer. Must be between 0 and 1.
  • Highest Fraction Of Lone Goods: This is the highest fraction of the total list of types of Lone Good that any Merchant can offer. Must be between 0 and 1 and not less than the Lowest Fraction Of Lone Goods.
  • Lowest Fraction Of Paired Goods: This is the lowest fraction of the total list of types of Paired Good that any Merchant can offer. Must be between 0 and 1.
  • Highest Fraction Of Paired Goods: This is the highest fraction of the total list of types of Paired Good that any Merchant can offer. Must be between 0 and 1 and not less than the Lowest Fraction Of Paired Goods.

The simulator chooses how many Lone Goods and Paired Goods are offered by each Merchant by considering the Merchant’s Initial Holding (choosing between the Highest and Lowest Fractions). It then chooses which goods each Merchant will offer at random. The result of this is that the Merchant could be offering goods with no substitute and goods with their substitute.

Merchants choose a pricing policy and one alternative is to offer no prices in the alternative currency. This means that the substitute good in each pair of Paired Goods cannot be sold by the Merchant until the policy is changed.

See 10.3.4.4   Which goods to offer and 8.1   Goods for related settings and 15.3.1   Choose the goods used for details of the selection made.

10.3.4.5   When to reconsider the pricing policy

The pricing policy is considered immediately on opting in as a Merchant, and also after planned delays.

The delay to the next consideration is exponentially distributed (see 16.6   Random Delays) with an average delay determined by the following settings:

  • Merchant Price Policy Average Delay: The initial average delay in days.
  • Merchant Price Policy Delay Multiplier Definitions: Decision factors, calibration functions, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors for Merchants in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)

See 15.8.4.5   When to reconsider the pricing policy for use in decisions.

10.3.4.6   Which pricing policy to use

The Merchant’s two-stage decision is the same regardless of what policy, if any, the Merchant is already using. The options are, first:

  • No Alternative Currency Prices: No prices in the alternative currency are offered. The Merchant will not accept alternative currency on any goods.
  • Alternative Currency Prices: This is done in two ways, considered in the second stage.

Then, if Alternative Currency Prices is chosen, there is a second choice between:

  • Fixed: Prices in alternative currency are set for all goods the Merchant offers and left fixed until a planned revision time and date.
  • Floating: Prices in alternative currency are set at the instant of enquiry/purchase by a Customer.

In all cases, the alternative currency price is the amount needed to obtain the fiat currency price of the good by obtaining fiat in the most efficient immediate way at the time of pricing. Typically, that means exchanging the alternative currency received for fiat currency on a currency exchange using orders already on the exchange.

For the choice between No Alternative Currency Prices and Alternative Currency Prices a probability is chosen in a way similar to the Opt In decisions, and the final choice is random according to that probability. The starting assumption is that Alternative Currency Prices will be set, but worries create multipliers that reduce the probability from 1 down to something lower. This requires a multiplier definition:

  • Merchant Policy Choice 1 Multiplier Definitions: Decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that decrease the probability of choosing Alternative Currency Prices. Suggested factors for this first decision are as follows:
    • Current Buzz Positivity with \(\text{half-asc-1}\). The bigger the ratio of Positive to Negative Current Buzz the more persuasive it is.
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-desc-1}\). Higher variability is discouraging.

If Alternative Currency Prices are chosen then the second decision is made between Fixed and Floating prices. The approach is similar with an initial assumption of choosing Fixed prices which is reduced by multipliers reflecting worry about various factors — typically related to volatility. This requires a multiplier definition:

  • Merchant Policy Choice 2 Multiplier Definitions: Decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that decrease the probability of choosing Fixed prices. The suggested factor for this second decision is:
    • SD Of Alternative Currency Value with \(\text{half-desc-1}\). Higher variability is off-putting.
10.3.4.7   When to price next

If a Fixed policy has been chosen the prices are set immediately and after planned delays, influenced by decision factors.

The delay to the next re-pricing is exponentially distributed (see 16.6   Random Delays) with an average delay determined by the following settings:

  • Merchant Price Average Delay: The initial average delay in days.
  • Merchant Price Delay Multiplier Definitions: Decision factors, calibration functions, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors for Merchants in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)

See 15.8.4.7   When to price next for use in decisions.

10.3.5   Settings For The Operator Role
10.3.5.1   Operating

Operators provide services that allow the alternative currency to operate. They incur costs and these affect whether they continue in their role. These costs are of two types:

  • Variable: The variable cost is the cost, in the fiat currency, incurred by an Operator, on average, per transaction. This means the extra cost incurred through having to process the transaction and does not include costs incurred simply by having the equipment and leaving it switched on.
  • Fixed: The fixed cost, in fiat currency, incurred by an Operator, on average, daily. This excludes the variable costs that are driven by processing transactions.

The settings that control the distributions of these costs across different Operators are as follows:

  • Lowest Variable Cost: The lowest variable cost possible for any Operator. Must be zero or more and may be given to more precision than the fiat currency will allow.
  • Mean Variable Cost: The mean variable cost across all Operators. Must be more than the Lowest Variable Cost.
  • Median Variable Cost: The median variable cost across all Operators. Again, must be more than the Lowest Variable Cost.
  • Lowest Fixed Cost: The lowest fixed cost possible for any Operator. Must be zero or more and may be given to more precision than the fiat currency will allow.
  • Mean Fixed Cost: The mean fixed cost across all Operators. Must be more than the Lowest Fixed Cost.
  • Median Fixed Cost: The median fixed cost across all Operators. Must be more than the Lowest Fixed Cost.

These costs are used in decisions via a decision factor. See 14   Decision Factor List for details.

10.3.5.2   When next to consider opting in/out as an Operator

Operators consider opting in or out from time to time. The time delay to the next consideration is random but with an average delay that you can set (see 16.6   Random Delays). However, you can also use decision factors to adjust that default delay. (See 15.8.5.1   When next to consider opting in/out as an Operator for use in decisions.)

Either the Active User is an Operator already and will next consider opting out of that role, or the User is not an Operator (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • Operator Opting Default Average Delay: The initial average delay in days.
  • Operator Opting Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types for Operators in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
10.3.5.3   Opting In As An Operator

The settings for opting in as an Operator are those already covered under Individual Potential Users (10.2.2   Settings For Opting In), with specific suggestions for Operators at 10.2.2.4   As An Operator.

10.3.5.4   Opting Out From Being An Operator

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors. Sometimes different criteria are used because Active Users have more information.

This requires a multiplier definition (see 15.8.5.3   Whether to opt out as an Operator):

  • Operator Opt Out Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that will decrease the probability of opting out. Suggested factors for this decision are:
    • Propensity To Be An Operator with \(\text{full-desc-1}\)
    • Current Buzz Positivity with \(\text{full-desc-1}\)
    • SD Of Alternative Currency Value with \(\text{half-asc-1}\)
    • Operator Profit Made with \(\text{full-desc-1}\)
    • Operator Projected Profit with \(\text{full-desc-1}\)

10.4   Opting Out Users

10.4.1   When next to try to get rid of alternative currency holding

On initially becoming an Opting Out User, the User will immediately try to get rid of its alternative currency holding. If this is not completely successful immediately then a delay until next consideration will be set.

The delay to the next attempt is exponentially distributed with an average delay determined by the following settings:

  • Opting Out Default Average Delay: The initial average delay in days.
  • Opting Out Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors for Opting Out Users in this decision are:
    • Value Of User Holding with \(\text{half-desc}\)
    • Current Buzz Negativity with \(\text{full-desc}\)

See 15.9.1   When next to try to get rid of alternative currency holding for details.

10.5   Further Reading

Office For National Statistics (2019). Average household income, UK: Financial year ending 2018. Available online here.

Kelly Jr, J. L. (2011). A new interpretation of information rate. In The Kelly Capital Growth Investment Criterion: Theory and Practice (pp. 25-34). Available online here.

Kubińska, E., Markiewicz, Ł., & Tyszka, T. (2012). Disposition effect among contrarian and momentum investors. Journal of Behavioral Finance, 13(3), 214-225. Available online here.

Morrin, M., Jacoby, J., Johar, G. V., He, X., Kuss, A., & Mazursky, D. (2002). Taking stock of stockbrokers: Exploring momentum versus contrarian investor strategies and profiles. Journal of Consumer Research, 29(2), 188-198. Available online here.

11   Parameters — Exchanges

These are for choosing the features of the currency Exchange or Exchanges to be used in the simulation, allowing User agents to exchange alternative currency and fiat currency.

11.1   Exchange Agents

The simulation may contain 1, 2 or 3 Exchanges. One Exchange may be ‘owned’ by the operators of the alternative currency and will be available at all times and under the direction of the Controller. The other Exchanges must be independent and, although their properties are determined by the parameter settings below, their agents will decide during the simulation which currency exchanges they will support on their Exchanges.

The settings for this are as follows:

  • Number Of Exchanges: This can be 1, 2, or 3. The default is 1.
  • E1 Controlled: This should be ‘Yes’ if the first Exchange is controlled by the promoters of the alternative currency, and ‘No’ otherwise. If it is controlled then the Exchange will always try to offer exchange between the alternative currency and all fiat currencies in the Trial. If it is not controlled then the Exchange agent will decide what to support as the Trial unfolds.

11.2   Settings Common To Exchanges

11.2.1   When next to consider offering an Exchange service for the alternative currency

Either the Exchange is offering an Exchange service already and will next consider stopping, or it is not offering a service and will next consider starting.

The delay to the next consideration is exponentially distributed (see 16.6   Random Delays) with an average delay determined by the following settings:

  • Exchange Support Default Average Delay: The initial average delay in days.
  • Exchange Support Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors for Exchanges in this decision are:
    • SD Of Alternative Currency Value with \(\text{half-desc}\)
    • Total Current Buzz with \(\text{half-desc}\)
    • Value Of User Holding with \(\text{half-desc}\)
    • Average Daily Purchases with \(\text{half-desc}\)

See 15.10.1.2   When next to consider offering an exchange service for the alternative currency for use in decisions.

11.2.2   Whether to start offering an Exchange service for the alternative currency

The decision is similar to an opt in decision by a User. The decision is random, but with a probability of opting in that is controlled by a number of criteria.

  • Exchange Support Start Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can decrease the probability of starting to offer an exchange service for the alternative currency. Suggested factors for the Exchange start support decision are as follows:
    • Propensity To Support Exchange with \(\text{full-asc-1}\)
    • Current Buzz Positivity with \(\text{half-asc-1}\)
    • Accumulated Buzz Positivity with \(\text{half-asc-1}\)
    • Active User Count with \(\text{half-asc-1}\)
    • Value Of User Holding with \(\text{half-asc-1}\)
    • Average Daily Purchases with \(\text{half-asc-1}\)

See 15.10.1.3   Whether to start offering an exchange service for the alternative currency for details.

Having started offering an Exchange service the Exchange will offer all possible exchange pairs involving the alternative currency.

11.2.3   Whether to stop offering an Exchange service for the alternative currency

The decision to stop support is similar to the decision to start, but the directions are reversed. It starts with a probability of 1 for stopping, but this is reduced by multipliers driven by the decision factors. The factors considered can be chosen and then linked to multiplier values using calibration function types and levels. See 15.10.1.4   Whether to stop offering an exchange service for the alternative currency for use in decisions.

  • Exchange Support Stop Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can decrease the probability of deciding to stop offering an Exchange service for the alternative currency. Suggested factors for the Exchange stop support decision are as follows:
    • Propensity To Support Exchange with \(\text{full-desc-1}\)
    • Current Buzz Positivity with \(\text{half-desc-1}\)
    • Accumulated Buzz Positivity with \(\text{half-desc-1}\)
    • Active User Count with \(\text{half-desc-1}\)
    • Value Of User Holding with \(\text{half-desc-1}\)
    • Average Daily Purchases with \(\text{half-desc-1}\)

Having stopped, all exchange pairs are withdrawn and any existing unsettled orders are cancelled.

11.3   Settings For Exchange 1

  • E1 Name: The name of the first Exchange.
  • E1 Propensity: The value of the Exchange’s propensity to support the alternative currency. This is not relevant if E1 is Controlled.
  • E1 Type: The alternatives are ‘Market Maker’ and ‘Continuous Order Driven’. The default is ‘Continuous Order Driven’, which is typical for cryptocurrency exchanges. The price is driven by the ebb and flow of orders placed by users hoping to buy or sell within price ranges they specify in their orders. The ‘Market Maker’ type is where an agent owns a significant stock of the currency and offers prices for buying and selling.

If this Exchange is a Market Maker then additional settings are required to define its autonomous decision making behaviour:

  • E1 MM Who Pays Fees: This is who pays the transaction fees for a transaction on the first Exchange, if it is a Market Maker. The values are Exchange, User, and Initiators (i.e. the party sending each currency pays the transaction fee for that movement). For Continuous Order Driven Exchanges the fees are always paid by each initiator. (See 16.8.2   Currency Exchange for full details.)
  • E1 MM Initial Fiat Currency Holding: This is the amount of fiat currency the Market Maker has initially. (See 16.1   Minting Alternative Currency for all the ways that alternative currency can be minted.)
  • E1 MM Initial Alternative Currency Target Holding: If the Exchange type is Market Maker then it may use a Target as part of its deliberations over how much alternative currency to occur. This parameter gives just the initial target.

Also, for the Market Maker decision on when to set/revise prices (see 15.10.3.2   When to consider changing prices), the delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • E1 MM Price Default Average Delay: The initial average delay in days.
  • E1 MM Price Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

Two decision rules are needed for revising prices (see 15.10.3.3   Set/revise Bid and Ask prices), each requiring a multiplier definition:

  • E1 MM Price Mean Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the geometric mean of the Bid and Ask prices from their previous values. Although the choice of decision factors is open to users of the simulator to decide, it is strongly recommended to use (at least) the suggested decision factors, with calibration function types. For adjusting the geometric mean of the Bid and Ask prices:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-desc}\) calibrated to strongly push prices up when stocks are low so that more alternative currency will flow in.
    • Deviation From Target Stock Of Alternative Currency with \(\text{full-desc}\).
    • Velocity Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Acceleration Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Proportion Of Volume Captured* with \(\text{half-desc}\).
  • E1 MM Price Ratio Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the ratio of the Ask price over the Bid price. Suggestions for this are:
    • Estimated Exchange Profit Per Transaction with \(\text{full-desc}\).
    • Proportion Of Volume Captured with \(\text{half-asc}\).

Other decision factors that might be experimented with for these two multiplier definitions include:

  • Best Competing Exchange Rate
  • Average Competing Exchange Rate
  • Order Level Of Market Maker
  • Overall Order Level Of Exchanges
  • Buy Volume / Sell Volume
  • Current Buzz Positivity

Also for a Market Maker, if a target for alternative currency holding is used, then it will be reconsidered after a delay (see 15.10.3.4   When to reconsider the target stock of alternative currency) defined by:

  • E1 MM Target Holding Default Average Delay: The initial average delay in days.
  • E1 MM Target Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggestions are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

The target holding itself (see 15.10.3.5   What to use as target for currency stocks) needs a multiplier definition:

  • E1 MM Target Holding Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the target holding of alternative currency from its previous value. Suggested decision factors and calibration function types are as follows:
    • Overall Order Level Of Exchanges with \(\text{half-asc}\).
    • Total Current Buzz with \(\text{half-asc}\).
    • SD Of Alternative Currency Value with \(\text{half-asc}\).

11.4   Settings For Exchange 2

If there is a second Exchange:

  • E2 Name: The name of the second Exchange.
  • E2 Propensity: The value of the Exchange’s propensity to support the alternative currency.
  • E2 Type: The alternatives are the same as for the first Exchange.

If this Exchange is a Market Maker then additional settings are required to define its autonomous decision making behaviour:

  • E2 MM Who Pays Fees: This is who pays the transaction fees for a transaction on the second Exchange, if it is a Market Maker. The values are Exchange, User, and Initiators (i.e. the party sending each currency pays the transaction fee for that movement). For Continuous Order Driven Exchanges the fees are always paid by each initiator. (See 16.8.2   Currency Exchange for full details.)
  • E2 MM Initial Fiat Currency Holding: This is the amount of fiat currency the Market Maker has initially.
  • E2 MM Initial Alternative Currency Target Holding: If the Exchange type is Market Maker then it may use a Target as part of its deliberations over how much alternative currency to occur. This parameter gives just the initial target.

Also, for the Market Maker decision on when to set/revise prices (see 15.10.3.2   When to consider changing prices), the delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • E2 MM Price Default Average Delay: The initial average delay in days.
  • E2 MM Price Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

Two decision rules are needed for revising prices (see 15.10.3.3   Set/revise Bid and Ask prices), each requiring a multiplier definition:

  • E2 MM Price Mean Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the geometric mean of the Bid and Ask prices from their previous values. Although the choice of decision factors is open to users of the simulator to decide, it is strongly recommended to use (at least) the suggested decision factors, with calibration function types. For adjusting the geometric mean of the Bid and Ask prices:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-desc}\) calibrated to strongly push prices up when stocks are low so that more alternative currency will flow in.
    • Deviation From Target Stock Of Alternative Currency with \(\text{full-desc}\).
    • Velocity Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Acceleration Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Proportion Of Volume Captured* with \(\text{half-desc}\).
  • E2 MM Price Ratio Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the ratio of the Ask price over the Bid price. Suggestions for this are:
    • Estimated Exchange Profit Per Transaction with \(\text{full-desc}\).
    • Proportion Of Volume Captured with \(\text{half-asc}\).

Other decision factors that might be experimented with for these two multiplier definitions include:

  • Best Competing Exchange Rate
  • Average Competing Exchange Rate
  • Order Level Of Market Maker
  • Overall Order Level Of Exchanges
  • Buy Volume / Sell Volume
  • Current Buzz Positivity

Also for a Market Maker, if a target for alternative currency holding is used, then it will be reconsidered after a delay (see 15.10.3.4   When to reconsider the target stock of alternative currency) defined by:

  • E2 MM Target Holding Default Average Delay: The initial average delay in days.
  • E2 MM Target Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggestions are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

The target holding itself (see 15.10.3.5   What to use as target for currency stocks) needs a multiplier definition:

  • E2 MM Target Holding Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the target holding of alternative currency from its previous value. Suggested decision factors and calibration function types are as follows:
    • Overall Order Level Of Exchanges with \(\text{half-asc}\).
    • Total Current Buzz with \(\text{half-asc}\).
    • SD Of Alternative Currency Value with \(\text{half-asc}\).

11.5   Settings For Exchange 3

If there is a third Exchange:

  • E3 Name: The name of the third Exchange.
  • E3 Propensity: The value of the Exchange’s propensity to support the alternative currency.
  • E3 Type: The alternatives are the same as for the first Exchange.

If this Exchange is a Market Maker then additional settings are required to define its autonomous decision making behaviour:

  • E3 MM Who Pays Fees: This is who pays the transaction fees for a transaction on the third Exchange, if it is a Market Maker. The values are Exchange, User, and Initiators (i.e. the party sending each currency pays the transaction fee for that movement). For Continuous Order Driven Exchanges the fees are always paid by each initiator. (See 16.8.2   Currency Exchange for full details.)
  • E3 MM Initial Fiat Currency Holding: This is the amount of fiat currency the Market Maker has initially.
  • E3 MM Initial Alternative Currency Target Holding: If the Exchange type is Market Maker then it may use a Target as part of its deliberations over how much alternative currency to occur. This parameter gives just the initial target.

Also, for the Market Maker decision on when to set/revise prices (see 15.10.3.2   When to consider changing prices), the delay to the next consideration is exponentially distributed with an average delay determined by the following settings:

  • E3 MM Price Default Average Delay: The initial average delay in days.
  • E3 MM Price Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggested decision factors and calibration function types are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

Two decision rules are needed for revising prices (see 15.10.3.3   Set/revise Bid and Ask prices), each requiring a multiplier definition:

  • E3 MM Price Mean Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the geometric mean of the Bid and Ask prices from their previous values. Although the choice of decision factors is open to users of the simulator to decide, it is strongly recommended to use (at least) the suggested decision factors, with calibration function types. For adjusting the geometric mean of the Bid and Ask prices:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-desc}\) calibrated to strongly push prices up when stocks are low so that more alternative currency will flow in.
    • Deviation From Target Stock Of Alternative Currency with \(\text{full-desc}\).
    • Velocity Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Acceleration Of Alternative Currency Stock Change with \(\text{full-desc}\).
    • Proportion Of Volume Captured* with \(\text{half-desc}\).
  • E3 MM Price Ratio Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the ratio of the Ask price over the Bid price. Suggestions for this are:
    • Estimated Exchange Profit Per Transaction with \(\text{full-desc}\).
    • Proportion Of Volume Captured with \(\text{half-asc}\).

Other decision factors that might be experimented with for these two multiplier definitions include:

  • Best Competing Exchange Rate
  • Average Competing Exchange Rate
  • Order Level Of Market Maker
  • Overall Order Level Of Exchanges
  • Buy Volume / Sell Volume
  • Current Buzz Positivity

Also for a Market Maker, if a target for alternative currency holding is used, then it will be reconsidered after a delay (see 15.10.3.4   When to reconsider the target stock of alternative currency) defined by:

  • E3 MM Target Holding Default Average Delay: The initial average delay in days.
  • E3 MM Target Holding Delay Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the average delay from the initial default. Suggestions are:
    • Stock Of Alternative Currency (which cannot go below zero) with \(\text{half-asc}\).
    • Speed Of Alternative Currency Stock Change with \(\text{half-desc}\).
    • Overall Order Level Of Exchanges with \(\text{half-desc}\).

The target holding itself (see 15.10.3.5   What to use as target for currency stocks) needs a multiplier definition:

  • E3 MM Target Holding Multiplier Definitions: The decision factors, calibration function types, and calibration levels that define multipliers for your chosen decision factors that can both increase and decrease the target holding of alternative currency from its previous value. Suggested decision factors and calibration function types are as follows:
    • Overall Order Level Of Exchanges with \(\text{half-asc}\).
    • Total Current Buzz with \(\text{half-asc}\).
    • SD Of Alternative Currency Value with \(\text{half-asc}\).

12   Parameters — Controls

Settings of these parameters specify the control mechanisms available to you initially and as a Trial unfolds. Many of these are also explained and available under Parameters for other sections, but are duplicated here to bring together all the settings with value as controls.

12.1   Managing Stocks Of Currency

The first group of parameters allows the Controller (you interacting with the simulator) to manage stocks of currency. The mechanisms are explained in 6.1   Controlling Currency Stocks.

The table allows you to specify which of these mechanisms are in operation (i.e. On or Off) and what rate is used for each:

Mechanism On / Off Rate
Gift Freshly Minted Not needed
Gift Coins (also under 9   Parameters — Currency)
Alternative currency given to new Active Users
Sell Freshly Minted  
Mint Purchase Price
Fiat price of an alternative currency coin sold to a User
Buy Back And Melt  
Buy Back To Melt Price
Fiat price offered to buy an alternative currency coin
Sell From Holding  
Alt Purchase Price
Fiat sale price of an alternative currency coin
Buy Back And Hold  
Buy Back To Hold Price
Fiat price offered to buy an alternative currency coin
Operator Payment In
Freshly Minted, Fixed
Not needed
Controller Paid Fixed Transaction Fee (Minted)
A fixed amount per transaction in alternative currency
Operator Payment In
Freshly Minted, %
Not needed
Controller Paid Percentage Transaction Fee (Minted)
A % amount per transaction in alternative currency
Control Catalogue  
Control Catalogue Pricing Rate
The rate used to calculate alternative currency
prices of goods. (Alt price = fiat price / rate.)

The Controller also needs an initial holding of first fiat currency and an initial holding of alternative currency. These can be set to zero of course.

See 16.1   Minting Alternative Currency for all the ways that alternative currency gets minted.

If the Control Catalogue is in operation then there are other settings that specify it.

  • Number Of Control Catalogue Exclusive Goods: This is the number of types of good offered in the Control Catalogue that are not available to be sold by Merchants. Their prices are determined randomly using the same distribution parameters as other goods (see 8.1   Goods). They have no substitutes.
  • Fraction Of Control Catalogue Lone Goods: This is the fraction of the types of Lone Good that are offered in the Control Catalogue. These are the same goods available to be sold by Merchants.
  • Fraction Of Control Catalogue Paired Goods: This is the fraction of the types of Paired Good that are offered in the Control Catalogue. These are the same goods available to be sold by Merchants.

The Controller can offer goods with prices in first fiat currency and/or alternative currency. These prices will be worked out from the underlying first fiat currency price, the transaction fees involved, and the Control Catalogue Pricing Rate. The Controller needs to specify which prices are offered by switching them On or Off:

Good
First Fiat Price
On/Off
Alternative Currency
Price On/Off
Exclusive Good    
Lone Good    
Paired Good - ordinary    
Paired Good - substitute Not used  

The Controller pays the same for goods as Merchants, as determined by the parameter: Cost Multiple For Goods (see 8.1   Goods). This amount is taken off the Controller’s fiat currency stock when a sale is made to a User.

Once the goods and their fixed fiat prices have been determined the Control Catalogue Rate can be used to (in effect) define the value of the alternative currency using the goods offered in the Control Catalogue.

12.2   Generating Buzz

The Controller can generate positive transient and enduring messages and so increase Positive Current Buzz and, later, Positive Accumulated Buzz. This might be to generate interest initially or perhaps in response to a negative event. The settings needed are:

  • Cost Per 1,000 Transient Messages: The first fiat currency cost to the Controller of generating 1,000 positive transient messages in a day.
  • Cost Per 1,000 Enduring Messages: The first fiat currency cost to the Controller of generating 1,000 positive enduring messages in a day.
  • Controller Generated Transient Messages Per Day: The number of transient messages generated by the Controller per day. Each day this many messages will be sent, affecting the day’s Positive Current Buzz and, subsequently, its Positive Accumulated Buzz. The stock of fiat currency will be reduced by the cost of generating these messages.
  • Controller Generated Enduring Messages Per Day: The number of enduring messages generated by the Controller per day. Each day this many messages will be sent, affecting the day’s Positive Current Buzz and, subsequently, its Positive Accumulated Buzz. The stock of fiat currency will be reduced by the cost of generating these messages.
  • Controller Generated Positive Enduring Reading Rate: The number of people who read the enduring messages generated by the Controller in the first 24 hours.

12.3   Other Control Settings

Other control settings regulate transactions:

  • User Paid Fixed Transaction Fee: The total fixed fee per transaction paid to Operators in the alternative currency, paid by taking a cut of the transaction. Whether it is the payer who has to pay the extra or the receiver who has to go without depends on the commercial deal between them and not on the currency.
  • User Paid Percentage Transaction Fee: This is the percentage of transaction value paid to Operators in the alternative currency, paid by taking a cut of the transaction.

There are also parameters for the User paid transaction fees when first fiat currency is used, but these are not the Controller’s responsibility. See 8.2   Fiat Currency.

If the first exchange is controlled and a Market Maker then all the controls over the Market Maker’s decision making are part of the Controller’s responsibility and can be changed during a Trial. These are given in 11.3   Settings For Exchange 1.

13   Examining Results

When a Trial pauses for further instructions, and when a Trial has ended, a wide range of results can be viewed and downloaded as charts, and downloaded as data files in .csv format.

These are of three types:

  • Snapshot: This is the current value of the attribute(s) at the time (either the end of a day or the start of a Trial). All Snapshots can be downloaded as .csv files. If a Snapshot is viewed for more than one agent (e.g. all Active Users) then the Snapshot will also be available as a histogram to view and download in .png format.
  • Event History: This is for events happening at particular times during a Trial. By default the period of time is the whole Trial so far, but smaller time ranges can be specified. A list of events can be downloaded in .csv format. If the events change a numeric value (e.g. the price on an Exchange) then a chart of this is also available to view and download in .png format.
  • Daily History: This is for values that have been recorded at the start/end of each day. By default the period of time is the whole Trial so far, but smaller time ranges can be specified. A list of daily values can be downloaded as a .csv file. If the history is for a numeric value (e.g. valuation of the alternative currency) then a chart is also available to view and download in .png format.

All attributes are available for Snapshots and all Simulation and Trial parameters have a complete Event History. However there are some additional Event and Daily Histories available, as listed below.

Data Event History Daily History
Environment
  • Alternative currency value
  • Newsworthy events: descriptions and multipliers
  • Alternative currency valuation
  • Positive Current Buzz, Negative Current Buzz
  • Positive Accumulated Buzz, Negative Accumulated Buzz
  • Controller generated messages and contribution to Buzz
Currency  
  • Alternative currency coins issued
Token Holding Users
  • Token exchanges
  • Count of Token Holding Users
  • Holdings of fiat currency and tokens
Pool Of Potential
Users
 
  • Counts of users in each sub-pool
Individual Potential
Users
 
  • Count of Individual Potential Users
  • Holdings of fiat currency
Active Users
  • Opt in and opt out events
  • Transactions
  • Purchases/sales of goods
  • Counts of Active Users, in each role, and each role combination
  • Holdings of fiat and alternative currency
  • Goods offered in total, counts, values, prices
  • Total purchases/sales of goods with fiat and alt. values
  • Gains/losses on transactions and speculation
  • Fiat currency adjustments
Opting Out Users
  • New Opting Out Users
  • Deletion of Opting Out Users
  • Count of Opting Out Users
Exchange —
Continuous Order Driven
  • Exchanges starting/stopping support
  • Orders received
  • Orders matched and completed
  • Count of Exchanges supporting the alternative currency
  • Number of unmatched sale and purchase orders on hand
Exchange —
Market Maker
  • Exchanges starting/stopping support
  • Orders received
  • Orders not met
  • Count of Exchanges supporting the alternative currency
  • Holdings of fiat and alternative currency
Controller
  • All changes made, one type at a time or all
  • None
  • Holdings of fiat and alternative currency

14   Decision Factor List

The factors that can be used in decisions are listed in related groups and defined here. Each can range over a half range (from 0 upwards) or full range (any value) and this is indicated by ‘(half)’ or ‘(full)’ respectively.

Some factors are calculated for individual Users (e.g. concerning economic results from their activity) while others are the same for every user (but of course change over time).

14.1   Buzz

Positive Current Buzz (half):
Negative Current Buzz (half):
Positive Accumulated Buzz (half):
Negative Accumulated Buzz (half):
Total Current Buzz (half):
Positive Current Buzz + Negative Current Buzz.
Current Buzz Positivity (full):
Positive Current Buzz / Negative Current Buzz. A value of 1 if both are zero and a very high value given if only Negative Current Buzz is zero.
Current Buzz Negativity (full):
Negative Current Buzz / Positive Current Buzz. A value of 1 if both are zero and a very high value given if only Positive Current Buzz is zero.
Accumulated Buzz Positivity (full):
Positive Accumulated Buzz / Negative Accumulated Buzz. A value of 1 if both are zero and a very high value given if only Negative Current Buzz is zero.
Accumulated Buzz Negativity (full):
Negative Accumulated Buzz / Positive Accumulated Buzz. A value of 1 if both are zero and a very high value given if only Positive Current Buzz is zero.

14.2   User Base

Pool Of Potential Users Size (half)
The current number of potential Users in the Pool Of Potential Users.
Individual Potential User Count (half)
The current number of Individual Potential Users.
Active User Count (half):
The current number of Active Users.
Speculator Count (half)
The current number of Active Users taking the Speculator role.
Customer Count (half)
The current number of Active Users taking the Customer role.
Merchant Count (half)
The current number of Active Users taking the Merchant role.
Operator Count (half)
The current number of Active Users taking the Operator role.
Opting Out Count (half)
The current number of Opting Out Users.

14.3   Personal Propensities

Propensity To Be A Speculator (full)
The User’s propensity to opt in to the role of Speculator. (These are generated randomly using the Normal distribution.)
Propensity To Be A Customer (full)
The User’s propensity to opt in to the role of Customer. (These are generated randomly using the Normal distribution.)
Propensity To Be A Merchant (full)
The User’s propensity to opt in to the role of Merchant. (These are generated randomly using the Normal distribution.)
Propensity To Be An Operator (full)
The User’s propensity to opt in to the role of Operator. (These are generated randomly using the Normal distribution.)
Propensity To Support Exchange (full)
The Exchange’s propensity to start offering an exchange service for the alternative currency. (These are generated randomly using the Normal distribution.)

14.4   Holdings

Value Of User Holding (half)
Current value, in the fiat currency, of the User’s current holding of alternative currency.
User Holding Of Alternative Currency (half)
The User’s current holding of alternative currency.
User Holding Of Fiat Currency (half)
The User’s current holding of fiat currency.
Total Alternative Currency Issued (half)
The current total quantity of alternative currency issued.

14.5   Economics

User Transaction Fixed Fee (half):
The fixed fee for each transaction paid by Users to Operators, expressed in the fiat currency.
Fee Per Operator (half):
The total transaction fee divided by the current number of Operators.
Number Of Goods Offered (half):
The number of goods offered for sale by the Merchant.
Total For Sale In Alternative Currency (half):
The sum of the fiat currency prices of goods that can be paid for using the alternative currency.
Customer Purchases In Alternative Currency (Volume) (half)
Customer Purchases In Fiat Currency (Volume) (half)
Customer Purchases (Volume) (half):
Customer Purchases In Alternative Currency (Volume) + Customer Purchases In Fiat Currency (Volume).
Merchant Sales In Alternative Currency (Volume) (half)
Merchant Sales In Fiat Currency (Volume) (half)
Operator Transactions (Volume) (half)
Exchange Transactions (Volume) (half)
Speculation Level (Value) (half)
Customer Purchases In Alternative Currency (Value) (half)
Customer Purchases In Fiat Currency (Value) (half)
Merchant Sales In Alternative Currency (Value) (half)
Merchant Sales In Fiat Currency (Value) (half)
Merchant Resupply Purchases (Value) (half)
Operator Transaction Fees (Value) (half)
Operator Expenses (Value) (half)
Exchange Transactions (Value) (half)
Speculation Gain (full)
Buying Gain (full)
Selling Gain (full)
Exchange Gain (full)
Operating Gain (full)
Market Making Gain (full)
Daily Fiat Currency Adjustments (full)
The daily total value of fiat currency added to the User’s holding or taken away by transfers with other wealth.

14.6   Exchange Activity

Best Competing Exchange Rate To Buy Alternative Currency (half)
(Focuses on the prices where other exchanges are offering to buy alternative currency.) The highest current order to buy price or Bid price on all other exchanges.
Best Competing Exchange Rate To Sell Alternative Currency (half)
(Focuses on the prices where other exchanges are offering to sell alternative currency.) The lowest current order to sell price or Ask price on all other exchanges.
Alternative Currency Buy Volume (half)
Relevant to Market Makers only, the total amount of the fiat currency used to buy alternative currency from the Market Maker in the past 24 hours.
Alternative Currency Sell Volume (half)
Relevant to Market Makers only, the total amount of the fiat currency paid for alternative currency by the Market Maker in the past 24 hours.
Order Level Of Market Maker (half)
The Alternative Currency Buy Volume of the agent plus its Alternative Currency Sell Volume.
Buy Volume / Sell Volume (half)
The Alternative Currency Buy Volume of the agent divided by the Alternative Currency Sell Volume of the agent.
Overall Alternative Currency Buy Volume (half)
The total amount of the fiat currency used to buy alternative currency on all exchanges (Continuous Order Driven and Market Maker) in the past 24 hours.
Overall Alternative Currency Sell Volume (half)
The total amount of the fiat currency paid for alternative currency on all exchanges (Continuous Order Driven and Market Maker) in the past 24 hours.
Overall Buy Volume / Sell Volume (half)
The Overall Alternative Currency Buy Volume divided by the Overall Alternative Currency Sell Volume.
Overall Order Level Of Exchanges (half)
The Overall Alternative Currency Buy Volume plus the Overall Alternative Currency Sell Volume.
Proportion Of Volume Captured (half)
Relevant to Market Makers only, the Order Level Of Market Maker divided by the Overall Order Level Of Exchanges.
Stock Of Alternative Currency (half)
The agent’s current holding of alternative currency, expressed in alternative currency.
Velocity Of Alternative Currency Stock Change (full)
The agent’s current Stock Of Alternative Currency less the agent’s Stock Of Alternative Currency 24 hours earlier.
Acceleration Of Alternative Currency Stock Change (full)
The agent’s current Velocity Of Alternative Currency Stock Change less the agent’s Velocity Of Alternative Currency Stock Change 24 hours earlier.
Speed Of Alternative Currency Stock Change (half)
The absolute value of the Velocity Of Alternative Currency Stock Change.
Deviation From Target Stock Of Alternative Currency (full)
The agent’s current holding of alternative currency less its current target stock of alternative currency, expressed in alternative currency. (Relevant for Exchanges that are Market Makers.)

14.7   Alternative Currency Valuation History

Alternative Currency Value (half)
The current value of the alternative currency expressed in fiat currency according to the rules of the Alternative Currency Valuation (see 16.3   Currency Valuation History).
SD Of Alternative Currency Value (half):
The standard deviation of the Alternative Currency Daily Value History over the past 28 days (or fewer if 28 days are not available).
Trend Strength (full):
Definition depends on the Speculator’s extrapolation rule:
- Recency Weighted Average Daily Percentage Gain: The average daily percentage increase in value (based on the Alternative Currency Daily Value History, see 16.3   Currency Valuation History), but with a weighting that puts more importance on the most recent value changes. Only available to Speculators using the Continue Trend extrapolation rule.
- Recency Weighted Average Daily Percentage Loss: -1 \(\times\) Recency Weighted Average Daily Percentage Gain. Only available to Speculators using the Contrarian extrapolation rule.
- Current Value Digression: The difference between the average value over the past 28 days (or fewer if 28 are not available) and the current value (all using the Alternative Currency Daily Value History, see 16.3   Currency Valuation History). Only available to Speculators using the Regress To Mean extrapolation rule.

15   Agent Decision Reference

15.1   Overview

Agents are the simulated decision makers. They make many decisions. These can be divided into:

  • Timing Decisions: These are simply decisions about when to take another decision.
  • Other Decisions: These are any other type of decision.

15.2   List Of Decisions

Environment
Taken at the start of the simulation:
Taken at the start of each day (midnight):
Taken at the end of each day (midnight):
Taken at (a) the start of the simulation, and (b) just after considering generating a positive/negative newsworthy event:
Taken at the planned time:
Taken when an exchange decides to increase/decrease support for the alternative currency:
Alternative Currency
Token Holding Users
Taken when the Token Holding User is created at the start of the simulation:
Taken at the planned time for converting tokens:
Taken when converting tokens:
Pool Of Potential Users
Taken (a) at the start of the simulation and (b) just after creating new users:
Taken at the planned time:
Individual Potential Users
Taken at the creation of the Individual Potential User:
Taken at the planned time:
Taken just after deciding when to opt in and for which roles:
Active Users
In All Roles
Taken on (a) becoming a User and (b) just after considering holding level:
Taken at planned time to reconsider holding levels:
Taken just after deciding how much alternative currency to hold:
As Speculators
Taken on (a) becoming a User and (b) just after considering opting in/out as a Speculator:
Taken at the planned time for considering opting in/out:
As Customers
Taken on (a) becoming a user and (b) just after considering opting in/out as a Customer:
Taken at planned time for considering opting in/out:
Taken on (a) becoming a User and (b) just after shopping:
Taken when shopping, for each item bought:
As Merchants
Taken on (a) becoming a User and (b) just after considering opting in/out as a Merchant:
Taken at planned time:
Taken on becoming a Merchant:
Taken on (a) becoming a Merchant and (b) considering the pricing policy:
Taken on (a) becoming a Merchant and (b) at planned time:
Taken at (a) deciding to use Fixed prices and (b) just after pricing:
Taken at (a) the planned time to revise Fixed prices and (b) when a Customer considers purchasing with Floating prices:
As Operators
Taken on (a) becoming a User and (b) just after considering opting in/out as an Operator:
Taken at planned time:
Opting Out Users
Taken just after trying to sell all holdings if not entirely successful:
Taken (a) after opting out of all User roles and (b) at planned time:
Exchanges
All Exchanges
As Continuous Order Driven Exchange (CODE)
Taken when an order is received:
As Market Maker (MM)
Taken when an order is received:
Taken on (a) starting to offer an exchange service and (b) on changing prices:
Taken at planned time:
Taken on (a) starting to offer an exchange service and (b) on reconsidering the stock of alternative currency:
Taken at the planned time:

15.3   Environment

15.3.1   Choose the goods used

Merchants and the Control Catalogue (if used) offer real goods for sale to Customers. The set of goods used in a simulation, with its underlying fiat currency price list, is created at the start of a simulation and not changed.

Some goods have a substitute good that is similar but a bit better and that can only be purchased using the alternative currency. Goods that have no substitute are called Lone Goods. Goods that have a substitute are called Paired Goods. There may also be goods that can only be offered by the Control Catalogue, called Exclusive Goods. Goods can be priced in fiat currency, or in both the fiat currency and the alternative currency. Substitutes can only be priced in alternative currency.

Individual Merchants, and perhaps also the Control Catalogue, offer some or all of the goods and their substitutes.

The goods to be priced are:

  • Lone Goods: The number of these is set by Number Of Lone Goods (see 8.1   Goods).
  • Paired Goods: These are really pairs of a good and its substitute, both with the same price in fiat currency. (The differences are that Users see their values as being different and the substitute can only be purchased using the alternative currency.) The number of these pairs is set by Number Of Paired Goods (see 8.1   Goods).
  • Exclusive Goods: These are the goods that can only be offered by the Control Catalogue. the number of these is set by Number Of Control Catalogue Exclusive Goods (see 12.1   Managing Stocks Of Currency).

The underlying prices of the goods in fiat currency are generated randomly with a Log-normal distribution using the parameters give by Lowest Price Of A Good, Mean Price Of A Good, and Median Price Of A Good. (See 16.4   Distributions Of Wealth for details and see 8.1   Goods for the related settings.) These are the underlying fiat currency prices, reflecting the value of the goods. The fiat currency prices quoted to customers may be different in order to cover transaction fees, where the Merchant pays the fees.

15.3.2   The initial levels of Current Buzz

The level of Positive Current Buzz and Negative Current Buzz is calculated at the start of each day (at midnight) but may be modified by newsworthy events during the following day. The Buzz includes that generated by the environment and the Buzz generated by the Controller. For full details see 16.2   Buzz Calculations and for related settings see 8.3   Buzz Generation and 12.2   Generating Buzz.

15.3.3   The levels of Accumulated Buzz

The level of Positive Accumulated Buzz and Negative Accumulated Buzz is calculated at the end of each day (at midnight) based on the Positive and Negative Current Buzz of the day, as modifid by any newsworthy events happening during the day and Buzz from the Controller. For full details see 16.2   Buzz Calculations and for related settings see 8.4   Buzz Accumulation and 12.2   Generating Buzz.

15.3.4   When next to generate a positive/negative random newsworthy event

The delay until the next positive/negative random newsworthy event is generated is exponentially distributed, based on the set Average Days Between Positive Events and Average Days Between Negative Events respectively. See 16.6   Random Delays for details and 8.5   Newsworthy Events for related settings.

15.3.5   The characteristics of a positive/negative random newsworthy event

Each random event has two multipliers, one for the Positive Current Buzz and the other for Negative Current Buzz.

The value of each multiplier is selected randomly using a uniform distribution between the Lowest and Highest relevant multiplier, taken from the appropriate cell of the table below.

Event type +ve Buzz Multiplier -ve Buzz Multiplier
  Lowest Highest Lowest Highest
Random Positive Event \(m_{1,1}\) \(m_{1,2}\) \(m_{1,3}\) \(m_{1,4}\)
Random Negative Event \(m_{2,1}\) \(m_{2,2}\) \(m_{2,3}\) \(m_{2,4}\)

See 8.5   Newsworthy Events for related settings.

15.3.6   The characteristics of the Exchange support increase/decrease event resulting

Each exchange support change event has two multipliers, one for the Positive Current Buzz and the other for Negative Current Buzz.

The value of each multiplier is selected randomly using a uniform distribution between the Lowest and Highest relevant multiplier, taken from the appropriate cell of the table below.

Event type +ve Buzz Multiplier -ve Buzz Multiplier
  Lowest Highest Lowest Highest
Exchange Support Increase \(m_{1,1}\) \(m_{1,2}\) \(m_{1,3}\) \(m_{1,4}\)
Exchange Support Decrease \(m_{2,1}\) \(m_{2,2}\) \(m_{2,3}\) \(m_{2,4}\)

See 8.5   Newsworthy Events for related settings.

15.4   Alternative Currency

15.4.1   The characteristics of the Initial Users in their roles

Simulations may start with an initial population of Active Users. Each of these Initial (i.e launch) Users has to be created with the properties specified for all Users and the properties for each role the User is taking.

Each Initial User is created with an initial Holding In The Fiat Currency and an initial Holding In The Alternative Currency. (See 16.1   Minting Alternative Currency for all the ways that alternative currency can be minted.) These are calculated in three stages.

  1. The total of these two, with the alternative currency valued in the fiat currency, is drawn randomly according to the Log-normal distribution specified by the settings: Lowest Initial Holding, Mean Initial Holding, and Median Initial Holding (see 10.2.1   Settings For All Roles). (See 16.4   Distributions Of Wealth for the formulae used.)
  2. The fraction of this total held as alternative currency is selected randomly according to the beta distribution with parameters specified by the Mean Fraction Held As Alternative Currency and the Variance Of Fraction Held As Alternative Currency (see 9.4   Launch Users And Holdings).

The \(\alpha\) and \(\beta\) parameters of the beta distribution are calculated from the mean, \(m\), and variance, \(v\), as follows:

\[\begin{split}&\alpha = {m^2(1-m) \over v} - m \\ &\beta = {(1-m)(m(1-m)-v) \over v}\end{split}\]

The values of \(\alpha\) and \(\beta\) will be rounded to the nearest integer and must be greater than or equal to 1. Having made these adjustments, the simulator displays the mean, variance, P10, and P90 levels for the beta distribution resulting.

  1. The amount of alternative currency held is calculated by converting the fiat currency value using the rate specified in Initial Alternative Currency Value (see 9.4   Launch Users And Holdings). The remaining value is held as fiat currency.

All Initial Users that take the role of Speculator initially will have further properties decided as follows:

All Initial Users that take the role of Customer initially will have further properties decided as follows (see 10.3.3.4   Shopping for settings):

  • Shopping Time: The time of day the Customer will go shopping. Selected with uniform density between the Earliest and Latest Time Of Day set.
  • Average Fraction Of Lone Goods Purchased Daily: This is located between the Lowest and Highest Average Fraction Of Lone Goods Purchased and is found using the function \(\text{full-asc}\) (see 16.5   Calibration Functions) with \(m_t\) equal to the Highest Fraction Of Lone Goods Purchased, \(m_b\) equal to the Lowest Fraction Of Lone Goods Purchased, \(k=1\), and \(x_0\) equal to the Mean Initial Holding.
  • Average Fraction Of Paired Goods Purchased Daily: This is located between the Lowest and Highest Average Fraction Of Paired Goods Purchased and is found using the function \(\text{full-asc}\) (see 16.5   Calibration Functions) with \(m_t\) equal to the Highest Fraction Of Paired Goods Purchased, \(m_b\) equal to the Lowest Fraction Of Paired Goods Purchased, \(k=1\), and \(x_0\) equal to the Mean Initial Holding.
  • Average Fraction Of Exclusive Goods Purchased Daily: This is located between the Lowest and Highest Average Fraction Of Exclusive Goods Purchased and is found using the function \(\text{full-asc}\) (see 16.5   Calibration Functions) with \(m_t\) equal to the Highest Fraction Of Exclusive Goods Purchased, \(m_b\) equal to the Lowest Fraction Of Exclusive Goods Purchased, \(k=1\), and \(x_0\) equal to the Mean Initial Holding. Exclusive goods are those only available from the Control Catalogue (if one is in use).
  • Substitute Valuation Multiple: Expresses how much more value the User places on a substitute compared to its paired ordinary good.

All Initial Users that take the role of Merchant initially will need sets of goods to offer for sale, decided as follows:

  • Number Of Lone Goods Offered: This is located between the Lowest and Highest Fraction Of Lone Goods set and found using the function \(\text{full-asc}\) (see 16.5   Calibration Functions) with \(m_t\) equal to the Highest Fraction Of Lone Goods, \(m_b\) equal to the Lowest Fraction Of Lone Goods, \(k=1\), and \(x_0\) equal to the Mean Initial Holding.
  • Number Of Paired Goods Offered: This is located between the Lowest and Highest Fraction Of Paired Goods set and found using the function \(\text{full-asc}\) (see 16.5   Calibration Functions) with \(m_t\) equal to the Highest Fraction Of Paired Goods, \(m_b\) equal to the Lowest Fraction Of Paired Goods, \(k=1\), and \(x_0\) equal to the Mean Initial Holding.

The required numbers of goods are then chosen randomly from the total sets of goods created for the simulation. See 10.3.4.4   Which goods to offer for the settings involved.

All Initial Users that take the role of Operator initially will have additional properties decided as follows:

  • Variable Cost Per Transaction: This is generated randomly using the Log-normal distribution with parameters Lowest Variable Cost, Mean Variable Cost, and Median Variable Cost.
  • Fixed Cost Per Day: This is generated randomly using the Log-normal distribution with parameters Lowest Fixed Cost, Mean Fixed Cost, and Median Fixed Cost.

See 10.3.5.1   Operating for related settings.

15.4.2   The characteristics of the Token Holding Users initially

Each Token Holding User is created with an initial Holding In The Fiat Currency and an initial Holding Of Tokens. (The initial Holding Of Alternative Currency is zero.) The total of these, with the tokens valued in the fiat currency, is drawn randomly according to the Log-normal distribution specified by the settings: Lowest Initial Holding, Mean Initial Holding, and Median Initial Holding. (See 16.4   Distributions Of Wealth for the formulae used and 9.4   Launch Users And Holdings for settings.)

The fraction of this total held as tokens is selected randomly according to the beta distribution with parameters specified by the Mean Fraction Held As Tokens and the Variance Of Fraction Held As Tokens. Each token is worth one coin of the alternative currency, and each coin is worth the amount of fiat currency specified by Initial Token Price (see 9.4   Launch Users And Holdings). This is done in a similar way to the wealth of Initial Users. (See 16.1   Minting Alternative Currency for all the ways that alternative currency can be minted.)

15.4.3   Which Operators process the transaction and who wins the transaction fee

The settings Maximum Operators Per Transaction and Maximum Percentage Of Operators Per Transaction both put a limit on how many Operators can process a transaction. The smaller of these limits, if it exists is compared with the current number of Operators. If the current number of Operators is not larger than the smaller limit then all Operators are chosen to process the transaction. However, if there are more Operators then just the maximum numbered allowed are chosen randomly to process the transaction. These have been chosen to process the transaction and so will incur variable costs of processing and may get rewarded with transaction fees.

If Just To Winner is set to Yes (see 9.2   System Support) then an Operator is chosen randomly from the set chosen to process the transaction and is allocated the entire transaction fees for the transaction. If Just To Winner is set to No then all Operators that processed the transaction receive an equal share of the transaction fees for the transaction.

15.5   Token Holding Users

15.5.1   When the Token Holding User will convert tokens into coins

The simulated delay from the start of the Trial to the time when a Token Holding User exchanges all its tokens for alternative currency is exponentially distributed with an average delay given by the Mean Delay Until Using Tokens. See 16.6   Random Delays for more details and 9.4   Launch Users And Holdings for related settings.

15.5.2   Which role(s) the Token Holding User will adopt

Token Holding Users have already committed to adopting at least one of the four roles for Users, but still have to decide which role(s) they will adopt.

The role combination for each Token Holding User is chosen randomly according to the probabilities in the table of Initial Token Holder Roles. It is not responsive to events in the Trial because it is assumed that Token Holding Users convert their tokens quite quickly. See 9.4   Launch Users And Holdings for related settings.

15.5.3   The extra characteristics of the Token Holding Users

The Token Holding Users have already been given the properties of every User, but also need additional properties according to the roles they have adopted. This is done in the same way as for Initial Users (see 15.4.1   The characteristics of the Initial Users in their roles).

15.6   The Pool Of Potential Users

15.6.1   When next to generate Individual Potential Users

The Pool Of Potential Users considers how many Individual Potential Users to generate at the start of each day, with the number of days between each release being determined by the Time Between Releases. See 10.1   The Pool Of Potential Users for related settings.

15.6.2   How many Individual Potential Users to create

The Pool Of Potential Users is represented by 50 sub-totals, equal-sized at first. (The Total Pool Size must be divisible by 50.) Each of the 50 sub-totals represents a sub-pool of people exposed to a different proportion of Total Current Buzz.

The proportion of Total Current Buzz going to each sub-pool is distributed according to a Zipfian distribution,

\[\text{Z}[k; s, N] = {1 \over k^s \sum\limits_{r=1}^{N}{1 \over r^s}}\]

where \(k\) is the sub-pool number (with 1 being the sub-pool exposed to the most Buzz), and \(N=50\).

By iterative search, the simulator software automatically finds the value of \(s\) that gives the required Percentage Of Messages Received By Top 20%.

The number of Individual Potential Users created on one occasion, \(I\) is driven by the Positive Current Buzz, \(P\), Negative Current Buzz, \(N\), Consideration Rate, \(c\), starting number of potential users in each sub-pool, \(S_r\), and current number of potential users in each sub-pool, \(C_r\), as follows:

\[I = \sum_{r=1}^{50} {\text{round}\bigg( \text{Z}[r;s,50](P+N){C_r \over S_r}c \bigg)}\]

The number of Individual Potential Users selected from each sub-pool is rounded and the total selected is the sum across all 50 sub-pools.

As an example of the calculation for a single sub-pool, if a sub-pool contains 1,000 potential Users and receives 5% of the Total Current Buzz (Positive Current Buzz + Negative Current Buzz), and if the Total Current Buzz is 2,000 messages (per day), then the sub-pool will receive 100 messages (2,000 x 5%). If, for example, 5% of those messages result in considering use then that is 5 (100 x 5%) Individual Potential Users from that sub-pool.

To take this example a bit further, imagine that the sub-pool initially contained 1,000 potential Users but 400 of these have already become Users leaving only 600 potential Users. If the sub-pool still receives 5% of the Total Current Buzz of 2,000 messages then the sub-pool receives 100 messages as before, but only 60 of these go to people not already Users. That means 3 (60 x 5%) Individual Potential Users will come from that sub-pool.

See 10.1   The Pool Of Potential Users for related settings.

15.7   Individual Potential Users

15.7.1   Initial properties of the Individual Potential User

Each Individual Potential User is created with:

  • an Initial Holding, which is an initial cash amount in the fiat currency. The amount is drawn randomly according to the Log-normal distribution specified by the settings: Lowest Initial Holding, Mean Initial Holding, and Median Initial Holding. (See 16.4   Distributions Of Wealth for the formulae used and 10.2.1   Settings For All Roles for related settings.)
  • propensities to be each of the roles, generated according to the Normal distribution and using the parameters set (see 10.2.1   Settings For All Roles for settings).

Other properties related to particular roles are created when a role is adopted for the first time.

15.7.2   When to consider opting in

The time at which each Individual Potential User will consider opting in is uniformly distributed across a period equal to the Time Between Releases, starting from the creation of the Individual Potential User. This helps to spread out the arrival of new joiners rather than have them all joining at the same instant.

15.7.3   Whether to opt in and for which role(s)

This is one of the most important and complex sets of decisions in a simulaton. Each role is considered independently and, if a decision is taken to opt in to any of the roles, then the Individual Potential User will become an Active User in the selected role(s).

Different factors are important to each role. Each of these decisions is random, but with a probability of opting in that is controlled by a number of criteria. You could think of each criterion as a hurdle to be cleared. The initial assumption is that the probability of opting in is 1 (i.e. it is certain) but multipliers (always in the range 0..1) reduce this step by step. The more worry the User has on each criterion the more the probability of opting in is reduced. Having worked out a probability of opting in the final step is to generate a random number between 0 and 1 and check if it is less than the probability of opting in. If it is, then the User opts in.

For each role, the factors to consider must be chosen as settings from the list offered by the system. (See Decision Factor List for the full set.)

Then, for each factor, a calibration function type must be chosen. With factors that have a value from zero upwards, labelled ‘half’ factors, the available function types are \(\text{half-asc-1}\) and \(\text{half-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’). With factors that can take any value, labelled ‘full’ factors, the available function types are \(\text{full-asc-1}\) and \(\text{full-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’).

Finally, for each factor, calibration values must be chosen that precisely fix the relationship between the decision factor and the probability multiplier resulting. You are asked to set a Half Level, which is the value for the factor that would give a multiplier of 0.5 (and reduce the probability of opting in by a half), and a Zero Multiplier, which is the value for the multiplier when the factor is zero.

For \(\text{half-asc-1}\) the Zero Multiplier must be less than 0.5. For \(\text{half-desc-1}\) the Zero Multiplier must be more than 0.5.

Names for the calibration settings are constructed like this:

<role> <decision> <factor> <value name>

For example, ‘Speculator Opt In Current Buzz Positivity Half Level’, whose parts are ‘Speculator | Opt In | Current Buzz Positivity | Half Level’.

When all the criteria are considered each gives a multiplier reducing the probability of opting in and the product of all these is the final probability of opting in. This means that if all the factors are very satisfactory to the decision-maker the probability of opting in will be near to 1, but even one criterion on its own can reduce that to near zero if it is worrying enough.

See 10.2.2   Settings For Opting In for suggested decision factors and calibration function types.

15.7.4   Initial properties as an Active User

If the Individual Potential User opts in to any of the four roles then it is converted into an Active User with the properties needed for its role(s). If it does not opt in to any role then the Individual Potential User is deleted and the sub-pool from which it was created is incremented by one to put the User back in the Pool Of Potential Users.

The Initial Holding of the Active User is copied from when it was an Individual Potential User. If the Controller provides Gift Coins to new Active Users then these coins are added to the User’s holding of alternative currency (see 12.1   Managing Stocks Of Currency). All other properties are determined in the same way as for Initial Users, explained in The characteristics of the Initial Users in their roles.

15.8   Active Users

15.8.1   In All Roles
15.8.1.1   When to consider holding levels

The best time to reconsider holdings depends on the roles adopted. The ideal (average) time until next reconsideration is calculated for each role the User is in and then the earliest of these times is taken as the reconsideration time.

In each role the delay to the next consideration of holding level is exponentially distributed with an average delay determined by a setting or calculation. This is then multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen for each role. The multipliers can both increase and decrease the average delay. See 16.6   Random Delays for details.

The initial average is taken from a parameter setting as follows:

Role Parameter
Speculator Speculator Holding Default Average Delay
Customer Customer Holding Default Average Delay
Merchant Merchant Holding Default Average Delay
Operator Operator Holding Default Average Delay

See 10.3.1.1   When to consider holding levels for related settings.

15.8.1.2   How much alternative currency and fiat currency to hold

The holdings of fiat currency and alternative currency depend on the roles taken by the User. If the User is not a Speculator then its need for currency is determined by the estimated needs of its activities as a Customer, Merchant, and/or Operator, plus a 50% safety margin. See 16.10.3   Reconsidering Holdings for details of how these are combined, 16.7   Economic Predictions for details of how the individual predictions are made, and 10.3.1.2   How much alternative currency and fiat currency to hold for related settings.

However, if the User is a Speculator then some calculation is needed to decide how much would ideally be invested in each currency, and then this is combined with information about the currency needs from any other roles, and the Initial Holding, to decide on the holdings to aim for.

Speculators allocate their holdings according to Kelly’s Betting Strategy, which is well-known. They decide the probability of the alternative currency rising in value relative to the fiat currency and then allocate their cash in accordance with that probability. If the probability of the alternative currency rising is judged to be \(p\) then the proportion of the holdings to be held as alternative currency will be \(p\) (valued in the fiat currency), with the rest in the fiat currency.

The judged probability of the alternative currency rising is based on decision factors, functions that map factors to probabilities (\(\text{half-asc-1}\), \(\text{half-desc-1}\), \(\text{full-asc-1}\), and \(\text{full-desc-1}\)), and their calibration settings.

However, the final calculation of the individual probabilities is done using a modified weighted average which requires weights, \(w_i\), summing to 1 to be chosen. If there are \(n\) factors to combine and each produces a probability, \(p_i\), then they are combined to make an overall probability as follows:

\[p_{all} = \sum_{i=0}^n w_i p_i, \ \ \ \text{where } p_0 = 0.5\]

The idea is that the initial view is that the probability of rising value is 0.5 (represented by \(p_0\) and \(w_0\), which are the initial view rather than decision factors), but as more evidence is considered that view is modified. The weights determine how important each factor is and how much those revise the initial view. (The underlying idea is to use Bayesian updating of beta distributions, but the final formulae are simple.)

With this decided, the holdings of currency are then determined by considering the ideal levels for Speculation, the currency needs of other roles, and the Initial Holding of the User. This is specified in detail in 16.10.3   Reconsidering Holdings.

15.8.1.3   How to adjust currency holdings

The way the User adjusts its holding of alternative currency does not require immediate adjustment and is explained in detail in 16.11.1   Delay allowed.

The way the User adjusts its holding of fiat currency is to increase or decrease its holding of fiat currency by drawing on, or returning money to, its other wealth. The value of other wealth is not modelled by the simulator, so really all that is seen is an adjustment to the fiat currency amount. These adjustments are also recorded as history.

15.8.2   As Speculators
15.8.2.1   When next to consider opting in/out as a Speculator

Either the Active User is a Speculator already and will next consider opting out of that role, or the User is not a Speculator (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the Speculator Opting Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays for technical details and also 10.3.2.1   When next to consider opting in/out as a Speculator for related settings.

15.8.2.2   Whether to opt in as a Speculator

The logic and settings for the opt in decision as a Speculator while an Active User are the same as those used for opting in as an Individual Potential User. See 15.7.3   Whether to opt in and for which role(s) for details.

15.8.2.3   Whether to opt out as a Speculator

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors.

Sometimes different criteria are used because Active Users have more information. The factors considered can be chosen and mapped to the final probability of opting out using calibration function types and levels. See 10.3.2.3   Opting Out From Being A Speculator for related settings.

Also, if an Active User opts out of all roles then it becomes an Opting Out User and will not consider becoming an Active User again in any role. That means that planned considerations of roles are cancelled (or ignored) and instead the Opting Out User just focuses on getting rid of any remaining alternative currency holding.

15.8.3   As Customers
15.8.3.1   When next to consider opting in/out as a Customer

Either the Active User is a Customer already and will next consider opting out of that role, or the User is not a Customer (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by Customer Opting Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and see 10.3.3.1   When next to consider opting in/out as a Customer for related settings.

15.8.3.2   Whether to opt in as a Customer

The logic and settings for the opt in decision as a Customer while an Active User are the same as those used for opting in as an Individual Potential User. See 15.7.3   Whether to opt in and for which role(s) for details.

15.8.3.3   Whether to opt out as a Customer

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors.

Sometimes different criteria are used because Active Users have more information. The factors considered can be chosen and mapped to the final probability of opting out using calibration function types and levels. See 10.3.3.3   Opting Out From Being A Customer for related settings.

Also, if an Active User opts out of all roles then it becomes an Opting Out User and will not consider becoming an Active User again in any role. That means that planned considerations of roles are cancelled (or ignored) and instead the Opting Out user just focuses on getting rid of any remaining alternative currency holding.

15.8.3.4   When to shop next

Customers shop daily at their chosen time of day.

15.8.3.5   What to purchase and how

When they shop, Customers randomly select a number of Lone Goods to try to buy, a number of Paired Goods to try to buy, and a number of Exclusive Goods to try to buy according to their personal characteristics, and then randomly select goods to try to buy until they have attempted the intended numbers of purchases. For each purchase they must decide what exactly to buy, from whom, and with which payment mechanism.

Looking across all Merchants and the Control Catalogue (if there is one), the Customer identifies the best available:

  • fiat price of the good
  • alternative currency price of the good
  • alternative currency price of the good’s substitute.

Each of these may be paid for by using existing stocks of the relevant currency or by obtaining more of the currency at short notice. Therefore, there are up to 6 possibilities to be considered, but some may be ruled out because of low currency stocks or because goods or substitutes are not currently offered by Merchants or the Control Catalogue. All the prices considered allow correctly for the transaction fees involved, as do calculations of the cost of exchanges of currency at short notice. These are explained in 16.8   Transaction Fees.

Some comparisons are simple but others are not.

  • The Customer makes no purchase if no Merchant/Control Catalogue offers the good or its substitute, or if the Customer has insufficient currency (of any kind) left. This still counts as a purchase for the purposes of making the intended number of purchases that day.
  • If the Customer has enough currency to purchase the good at an advertised price without obtaining more of the currency at short notice then using the existing stock of currency will be preferred.
  • If the good and its substitute are both offered at a price in the same currency then the item with the best value per unit of the currency will be preferred.
  • The Customer will be indifferent between a good priced in fiat currency but paid for by obtaining alternative currency at short notice and a good priced in alternative currency and paid for by obtaining fiat currency at short notice. In the rare event of a choice being needed, it will be random with equal probabilities. The reason this is likely to be rare is that the Customer has a good stock of both currencies and will be able to buy using the advertised currency more efficiently.

More complicated comparisons are between goods priced in fiat currency and goods priced in alternative currency.

  • In clear cut cases one price will be so much better that even obtaining its currency at short notice (a costly approach) would still be better than using that currency on the other price. The Customer will prefer that price.
  • Where a good is priced in one currency and its substitute is priced in the other, a similar logic applies but now comparing the value per unit currency to see if the situation is clear cut.
  • If a clear cut difference between a fiat currency price and an alternative currency price does not exist then the Customer will choose at random between the prices with equal probability.

For more detail see 16.9   Customer Purchasing Decisions and see 10.3.3.4   Shopping for related settings.

15.8.4   As Merchants
15.8.4.1   When next to consider opting in/out as a Merchant

Either the Active User is a Merchant already and will next consider opting out of that role, or the User is not a Merchant (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by the Merchant Opting Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and 10.3.4.1   When next to consider opting in/out as a Merchant.

15.8.4.2   Whether to opt in as a Merchant

The logic and settings for the opt in decision as a Merchant while an Active User are the same as those used for opting in as an Individual Potential User. See 15.7.3   Whether to opt in and for which role(s) for details.

15.8.4.3   Whether to opt out as a Merchant

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors.

Sometimes different criteria are used because Active Users have more information. The factors considered can be chosen and mapped to the final probability of opting out using calibration function types and levels. See 10.3.4.3   Opting Out From Being A Merchant for related settings.

Also, if an Active User opts out of all roles then it becomes an Opting Out User and will not consider becoming an Active User again in any role. That means that planned considerations of roles are cancelled (or ignored) and instead the Opting Out user just focuses on getting rid of any remaining alternative currency holding.

15.8.4.4   Which goods to offer

On opting into the role of Merchant:

  • The number of Lone Goods is chosen randomly using a uniform distribution and the Lowest Fraction Of Lone Goods, Highest Fraction Of Lone Goods, and Number Of Lone Goods set.
  • The selected number of Lone Goods are then chosen randomly from the full set, to be offered by the Merchant.
  • The number of Paired Goods is chosen randomly using a uniform distribution and the Lowest Fraction Of Paired Goods, Highest Fraction Of Paired Goods, and Number Of Paired Goods set.
  • The selected number of Paired Goods are then chosen randomly from the full set, to be offered by the Merchant.

See 10.3.4.4   Which goods to offer for related settings.

15.8.4.5   When to reconsider the pricing policy

The pricing policy is considered immediately on opting in as a Merchant, and also after planned delays.

The delay to the next consideration is exponentially distributed with an average delay determined by Merchant Price Policy Average Delay set, multiplied by multipliers determined by the decision factors, calibration functions, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and 10.3.4.5   When to reconsider the pricing policy.

15.8.4.6   Which pricing policy to use

The Merchant’s two-stage decision is the same regardless of which policy, if any, the Merchant is already using. The options are, first:

  • No Alternative Currency Prices: No prices in the alternative currency are offered and the Merchant will not accept alternative currency on any goods.
  • Alternative Currency Prices: These are offered in one of two ways, decided in the second stage.

Then, if Alternative Currency Prices is chosen, there is a second choice between:

  • Fixed: Prices in alternative currency are set for all goods the Merchant offers and left fixed until a planned revision time.
  • Floating: Prices in alternative currency are set at the instant of purchase/enquiry by a Customer.

In all cases, the alternative currency price is the amount needed to obtain the underlying fiat currency price of the good by obtaining fiat in the most efficient immediate way at the time of pricing. Typically, that means exchanging the alternative currency received for fiat currency on a currency exchange using orders already on the Exchange.

For the choice between No Alternative Currency Prices and Alternative Currency Prices a probability is chosen in a way similar to the Opt In decisions, and the final choice is random according to that probability. The starting assumption is that Alternative Currency Prices will be set, but worries create multipliers that reduce the probability from 1 down to something lower.

The factors to consider must be chosen as settings from the list offered by the system. (See 14   Decision Factor List for the full set.)

Then, for each factor, a calibration function type must be chosen. With factors that have a value from zero upwards, labelled ‘half’ factors, the available function types are \(\text{half-asc-1}\) and \(\text{half-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’). With factors that can take any value, labelled ‘full’ factors, the available function types are \(\text{full-asc-1}\) and \(\text{full-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’).

Finally, for each factor, calibration values must be chosen that precisely fix the relationship between the decision factor and the probability multiplier resulting. You are asked to set a Half Level, which is the value for the factor that would give a multiplier of 0.5 (and reduce the probability of opting in by a half), and a Zero Multiplier, which is the value for the multiplier when the factor is zero.

For \(\text{half-asc-1}\) the Zero Multiplier must be less than 0.5. For \(\text{half-desc-1}\) the Zero Multiplier must be more than 0.5.

Names for the calibration settings are constructed like this:

Merchant Pricing Policy <factor> <value name>

For example, ‘Merchant Pricing Policy Current Buzz Positivity Half Level’, whose parts are ‘Merchant Pricing Policy | Current Buzz Positivity | Half Level’.

When all the criteria are considered each gives a multiplier reducing the probability of Alternative Currency Prices and the product of all these is the final probability of Alternative Currency Prices.

If Alternative Currency Prices are chosen then the second decision is made between Fixed and Floating prices. The approach is similar with an initial assumption of choosing Fixed prices which is reduced by multipliers reflecting worry about various factors — typically related to volatility.

15.8.4.7   When to price next

When the pricing policy is changed in any way all relevant prices are immediately revised. If No Alternative Currency Prices was chosen then all alternative currency prices the Merchant has are removed. If Floating prices are chosen, any existing Fixed prices are removed.

If a Fixed policy has been chosen the prices are set immediately and after planned delays, influenced by decision factors. If a Fixed policy is confirmed (i.e. it was Fixed before) then prices are not revised until the currently planned time for revising those prices.

The delay to the next re-pricing is exponentially distributed with an average delay determined by Merchant Price Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay. See 16.6   Random Delays and see 10.3.4.7   When to price next for use in decisions.

15.8.4.8   The prices to use

The alternative currency price set for a good is always the price that, given the current best immediate exchange method and transaction fees would yield the specified fiat price for the good. There is no attempt to undercut or anticipate rate changes. Prices might be competitive if the exchange and transaction costs are low enough.

The fiat currency price to set for a good is always the price that, given the current transaction fees for the fiat currency, would yield the underlying specified price for the good.

15.8.5   As Operators
15.8.5.1   When next to consider opting in/out as an Operator

Either the Active User is an Operator already and will next consider opting out of that role, or the User is not an Operator (but has some other role(s) instead) and will next consider opting in to that role.

The delay to the next consideration is exponentially distributed with an average delay determined by Operator Opting Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and see 10.3.5.2   When next to consider opting in/out as an Operator for related settings.

15.8.5.2   Whether to opt in as an Operator

The logic and settings for the opt in decision as an Operator while an Active User are the same as those used for opting in as an Individual Potential User. See 15.7.3   Whether to opt in and for which role(s) for details.

15.8.5.3   Whether to opt out as an Operator

Opt out decisions are similar to opt in but the directions are reversed. It starts with a probability of 1 for opting out, but this is reduced by multipliers driven by the decision factors.

Sometimes different criteria are used because Active Users have more information. The factors considered can be chosen and mapped to the final probability of opting out using calibration function types and levels. See 10.3.5.4   Opting Out From Being An Operator for related settings.

Also, if an Active User opts out of all roles then it becomes an Opting Out User and will not consider becoming an Active User again in any role. That means that planned considerations of roles are cancelled (or ignored) and instead the Opting Out user just focuses on getting rid of any remaining alternative currency holding.

15.9   Opting Out Users

15.9.1   When next to try to get rid of alternative currency holding

On initially becoming an Opting Out User, the User will immediately try to get rid of the its alternative currency holding. If this is not completely successful immediately then a delay until next consideration will be set.

The delay to when next to try to get rid of the alternative currency holding is exponentially distributed with an average delay determined by the Opting Out Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration functions, and calibration levels chosen. The multipliers can both increase and decrease the average delay. See 16.6   Random Delays and see 10.4.1   When next to try to get rid of alternative currency holding for related settings.

15.9.2   How to get rid of alternative currency holding

To get rid of alternative currency, the Opting Out User will purchase goods from Merchants, selecting items at random, until the amount of alternative currency held is too little to buy the chosen good.

To sell the remaining alternative currency, the Opting Out user will use the method that does not require immediate exchange, explained in detail in 16.11.1   Delay allowed.

15.10   Exchanges

15.10.1   All Exchanges
15.10.1.1   Initial characteristics of the exchange

At the start of the simulation, the exchanges are created with the initial attributes specified by their settings, see 11.1   Exchange Agents.

15.10.1.2   When next to consider offering an exchange service for the alternative currency

Either the Exchange is offering an exchange service already and will next consider stopping, or it is not offering a service and will next consider starting.

The delay to the next consideration is exponentially distributed with an average delay determined by Exchange Support Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and see 11.2.1   When next to consider offering an Exchange service for the alternative currency for related settings.

15.10.1.3   Whether to start offering an exchange service for the alternative currency

The decision is similar to an opt in decision by a User. The decision is random, but with a probability of opting in that is controlled by a number of criteria. You could think of each criterion as a hurdle to be cleared. The initial assumption is that the probability of starting to offer support is 1 (i.e. it is certain) but multipliers (always in the range 0..1) reduce this step by step. The more worry the Exchange has on each criterion the more the probability of starting support is reduced. Having worked out a probability of starting support the final step is to generate a random number between 0 and 1 and check if it is less than the probability of starting support. If it is, then the Exchange starts support for the alternative currency.

The factors to consider must be chosen as settings from the list offered by the system. (See 14   Decision Factor List for the full set.)

Then, for each factor, a calibration function type must be chosen. With factors that have a value from zero upwards, labelled ‘half’ factors, the available function types are \(\text{half-asc-1}\) and \(\text{half-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’). With factors that can take any value, labelled ‘full’ factors, the available function types are \(\text{full-asc-1}\) and \(\text{full-desc-1}\) (short for ‘full-ascending in the range 0-1’ and ‘full-descending in the range 0-1’).

Finally, for each factor, calibration values must be chosen that precisely fix the relationship between the decision factor and the probability multiple resulting. You are asked to set a Half Level, which is the value for the factor that would give a multiplier of 0.5 (and reduce the probability of opting in by a half), and a Zero Multiplier, which is the value for the multiplier when the factor is zero.

For \(\text{half-asc-1}\) the Zero Multiplier must be less than 0.5. For \(\text{half-desc-1}\) the Zero Multiplier must be more than 0.5.

Names for the calibration settings are constructed like this:

Exchange Start <factor> <value name>

For example, ‘Exchange Start Current Buzz Positivity Half Level’, whose parts are ‘Exchange Start | Current Buzz Positivity | Half Level’.

When all the criteria are considered each gives a multiplier reducing the probability of starting support and the product of all these is the final probability of starting support. This means that if all the factors are very satisfactory to the decision-maker the probability of starting support will be near to 1, but even one criterion on its own can reduce that to near zero if it is worrying enough.

See 11.2.2   Whether to start offering an Exchange service for the alternative currency for suggested decision factors and calibration function types.

What the Exchange starts support a newsworthy event is generated by the Environment.

15.10.1.4   Whether to stop offering an exchange service for the alternative currency

The decision to stop support is similar to the decision to start, but the directions are reversed. It starts with a probability of 1 for stopping, but this is reduced by multipliers driven by the decision factors.

The factors considered can be chosen and mapped to the final probability of stopping support using calibration function types and levels. See 11.2.3   Whether to stop offering an Exchange service for the alternative currency for related settings.

When the Exchange stops support a newsworthy event is generated by the Environment.

15.10.2   Each Continuous Order Driven Exchange (CODE)
15.10.2.1   CODE actions on receiving an order

In the simulator, a Continuous Order Driven Exchange maintains no stocks of alternative or fiat currency and simply matches orders that are then settled directly between those placing the orders.

On receipt of a new order, the Exchange tries to match it with orders already lodged on the Exchange until the full quantity has been matched or there are no more orders with acceptable prices. To decide the sequence in which matches are made it uses criteria in the following order:

  • Price Attractiveness: The primary criterion is price attractiveness with precedence for orders with better prices. For a new order to buy currency, the existing orders with the lowest prices are taken first. For a new order to sell currency, the existing orders with the highest prices are taken first.
  • Order Size: If orders have the same price attractiveness, the next criterion to consider is the quantity. Precedence is given to larger orders so that transactions are simpler.
  • Order Age: If orders have the same price attractiveness and size, the next criterion to consider is the date on which the existing order was placed. The earlier orders have precedence.

If there is still a tie then tied orders can be matched in any order.

Regardless of the number of existing orders matched with a new order, the Users collectively are charged for one transaction and the Operators are paid for one transaction.

15.10.3   Each Market Maker (MM)
15.10.3.1   MM actions on receiving an order

When an order is received, a Market Maker fulfills it if possible using existing stocks of currency.

  • If the order is to buy alternative currency then the Market Maker receives fiat currency (less the transaction fees charged for fiat currency transactions), calculates the appropriate amount of alternative currency using the advertised Ask price, then transfers alternative currency to the buyer, with more transaction fees being paid.
  • If the order is to buy fiat currency (with alternative currency) then the Market Maker receives alternative currency (less the transaction fees charged for alternative currency transactions), calculates the appropriate amount of fiat currency using the advertised Bid price, then transfers fiat currency to the buyer, with more transaction fees being paid.

If the Market Maker lacks the currency stocks to fulfil the order then it tries to obtain further stocks, either by selling fiat currency to buy alternative currency, or selling alternative currency to buy fiat currency. It does these in the most efficient immediate way it considers. (See 16.11.2   Immediate Result Needed for details.) It then fulfills the order if it can.

If the Market Maker cannot obtain sufficient currency stocks to fulfill the order then the order is not met.

Having responded to the order, the Market Maker considers changing its Bid and Ask prices and decides when to review them if no order is received in the meantime.

15.10.3.2   When to consider changing prices

Each Market Maker considers changing prices immediately on responding to an order and after planned delays. The Market Maker sets those delays immediately on reviewing prices, cancelling previously planned reviews.

The delay to the next consideration is exponentially distributed with an average delay determined by the Market Maker Pricing Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

Each Market Maker has its own rules for this decision.

See 16.6   Random Delays and see 11.3   Settings For Exchange 1, 11.4   Settings For Exchange 2, and 11.5   Settings For Exchange 3 for related settings.

15.10.3.3   Set/revise Bid and Ask prices

Market Makers aim to profit from currency exchange rather than from speculation. They want to receive orders and compete with other exchanges (if there are any). The difference between their Bid and Ask prices is crucial to their profit but the levels of those prices drive the level of orders received.

Each Market Maker needs initial Bid and Ask prices and then adjusts them by working out multipliers. The initial prices have a geometric mean that is the same as the current valuation of the alternative currency in the valuation history. If there is no price in the valuation history at the time then the price is taken as 1 (it should quickly adjust). The initial Ask price is 2% higher than the Bid price.

Each exchange whose type is Market Maker has its own rules for adjusting prices, set using decision factors, calibration function types, and calibration values. The objective of these is to arrive at:

  • a multiplier to be applied to the current price level (the geometric mean of the Bid and Ask prices) to produce the new price level; and
  • a multiplier to be applied to the ratio between Bid and Ask prices to produce the new ratio between the Bid and Ask prices.

The new geometric mean and difference in Bid and Ask prices can then be combined to calculate the new Bid and Ask prices.

In symbols, if \(B\) and \(B'\) are the Bid price before and after adjustment, \(A\) and \(A'\) are the Ask price before and after adjustment, \(G\) and \(G'\) are the geometric mean of the prices before and after adjustment, \(R\) and \(R'\) are the ratios of Ask and Bid prices before and after adjustment, \(m_G\) is the multiplier for the geometric mean, and \(m_R\) is the multiplier for the ratio, then:

\[\begin{split}G = \sqrt{AB}, \ \ \ G' = m_G G \\ R = {A \over B}, \ \ \ R' = m_R R \\ A' = m_G A \sqrt{m_R}, \ \ \ B' = m_G B \sqrt{{1 \over m_R}}\end{split}\]
15.10.3.4   When to reconsider the target stock of alternative currency

If the decision on Bid and Ask prices uses Deviation From Target Stock Of Alternative Currency as a decision factor then a target is needed. If a target for the stock of alternative currency is not used then it is not necessary to set up this decision. Otherwise, each Market Maker considers the target stock of alternative currency on deciding to offer exchange services, and reconsiders it after planned delays.

Each Market Maker has its own rules for this decision.

The delay to the next consideration is exponentially distributed with an average delay determined by the Market Maker Target Default Average Delay set, multiplied by multipliers determined by the decision factors, calibration function types, and calibration levels chosen. The multipliers can both increase and decrease the average delay.

See 16.6   Random Delays and see 11.3   Settings For Exchange 1, 11.4   Settings For Exchange 2, and 11.5   Settings For Exchange 3 for related settings.

15.10.3.5   What to use as target for currency stocks

If a target for the stock of alternative currency is not used then it is not necessary to set up this decision. Otherwise, the target level will be set when each Market Maker decides to offer an exchange service for the alternative currency and at planned times.

Each Market Maker has its own rules for this decision.

The target currency stock should balance the need to avoid running out with the risk of holding stock and having it lose value. Exchange operators are not modelled as speculators.

When first offering an exchange service, the target will simply be the E1/2/3 MM Initial Alternative Currency Target Holding set. Later, it is decided by calculating a multiplier that is applied to the current target to produce a new target.

15.10.3.6   How to adjust currency stocks

In most situations Market Makers adjust their currency stocks only by adjusting Bid and Ask prices so that exchanges have the desired effect. The exceptions are:

  • when they run out of alternative currency — and so have to buy some from other Exchanges or the Controller at short notice (see 16.11.2   Immediate Result Needed)
  • when they begin offering an exchange service for the alternative currency — and so they obtain some more but will tolerate a delay (see 16.11.1   Delay allowed).

16   Technical Notes

16.1   Minting Alternative Currency

Within the simulator, alternative currency can be minted (i.e. coins are created) at various different times:

  • The Controller may have an Initial Holding of alternative currency. That is, one that is in existence from the very start of a Trial.
  • Market Makers may be given an Initial Holding of alternative currency.
  • Initial Users (i.e. agents that are Active Users from the start) may have an Initial Holding of alternative currency.
  • Token Holding Users exchange their tokens for alternative coins freshly minted at the time of the exchange.
  • When an Individual Potential User becomes an Active User they may receive a gift of freshly minted alternative currency.
  • Active Users may purchase freshly minted coins from the Controller.
  • Operators may be paid for supporting transactions using freshly minted alternative currency coins.

None of these mechanisms needs to be used, but of course at least one must be used or no alternative currency will be created.

Alternative currency can also be destroyed. The only method by which this can happen in the simulator is this:

  • The Controller buys back alternative currency and destroys it.

16.2   Buzz Calculations

16.2.1   Buzz Generation

This table defines some variable names for the formulae below:

 
Speculators &
Customers
Merchants &
Operators
Journalists

Promoters

+ve Transient Message Rate \(r_{1,1}\) \(r_{1,2}\) \(r_{1,3}\) \(r_{1,4}\)
+ve Enduring Message Rate \(r_{2,1}\) \(r_{2,2}\) \(r_{2,3}\) \(r_{2,4}\)
+ve Enduring Reading Rate \(r_{3,1}\) \(r_{3,2}\) \(r_{3,3}\) \(r_{3,4}\)
-ve Transient Message Rate \(r_{4,1}\) \(r_{4,2}\) \(r_{4,3}\) \(r_{4,4}\)
-ve Enduring Message Rate \(r_{5,1}\) \(r_{5,2}\) \(r_{5,3}\) \(r_{5,4}\)
-ve Enduring Reading Rate \(r_{6,1}\) \(r_{6,2}\) \(r_{6,3}\) \(r_{6,4}\)

These are first consolidated into two variables for use in agent decision-making: Positive Current Buzz and Negative Current Buzz. In these formulae, \(P\) is the Positive Current Buzz, \(N\) is the Negative Current Buzz, \(h\) is total holdings of the alternative currency expressed in the fiat currency at the start of the day, and the other variables are rates from the table above:

\[\begin{split}&P = {((r_{1,1} + r_{1,2} + r_{1,3} + r_{1,4}) + (r_{2,1}r_{3,1} + r_{2,2}r_{3,2} + r_{2,3}r_{3,3} + r_{2,4}r_{3,4})) \over 365} {h \over 100,000} \\ &N = {((r_{4,1} + r_{4,2} + r_{4,3} + r_{4,4}) + (r_{5,1}r_{6,1} + r_{5,2}r_{6,2} + r_{5,3}r_{6,3} + r_{5,4}r_{6,4})) \over 365} {h \over 100,000}\end{split}\]

To these are added the messages generated by the Controller (transient and enduring). These totals may also be modified during a simulated day by newsworthy events.

16.2.2   Buzz Accumulation

The enduring messages are also important because they feed into two accumulated stocks of messages that depreciate over time: Positive Accumulated Buzz and Negative Accumulated Buzz. These are calculated at the end of each day. The daily depreciation rate, \(d\), is calculated from the half life, \(L\), in days. \(P\!A_t\) is the Positive Accumulated Buzz at the end of day \(t\), \(N\!A_t\) is the Negative Accumulated Buzz at the end of the day, and \(m_p\) and \(m_n\) are the product of positive and negative multipliers (if any) from the day’s newsworthy events:

\[\begin{split}&d = \bigg({1 \over 2}\bigg)^{L} \\ &P\!A_{t+1} = P\!A_{t} d + {(r_{2,1} + r_{2,2} + r_{2,3} + r_{2,4})m_p \over 365} {h \over 100,000} \\ &N\!A_{t+1} = N\!A_{t} d + {(r_{5,1} + r_{5,2} + r_{5,3} + r_{5,4})m_n \over 365} {h \over 100,000}\end{split}\]

The initial values of Accumulated Buzz, \(P\!A_0\) and \(N\!A_0\), are given by the settings Initial Positive Accumulated Buzz and Initial Negative Accumulated Buzz.

16.2.3   Newsworthy Events

Newsworthy Events during a day have an immediate effect on Positive Current Buzz and Negative Current Buzz, and also an effect at the end of the day when the Accumlated Buzz figures are updated.

The immediate effect on Current Buzz values is calculated by multiplying the Current Buzz by the appropriate multiplier for the event. The multipliers used for the Accumulated Buzz numbers consolidate the effects of any newsworthy events during the day. If there are no events then the multipliers are 1. If there are some events then the multipliers are the products of the multipliers from all the events.

16.3   Currency Valuation History

16.3.1   Hierarchy Of Valuation Sources

The current value and history of the alternative currency’s value is important for decisions in Trials and a key metric for understanding results. The source of the numbers for the history depends on what information is available at each time. The sources, in descending priority order, are as follows:

  • First Exchange: If the first Exchange is a Continuous Order Driven Exchange, the value will be the price of the alternative currency expressed in the fiat currency of the latest completed trade, unless that was more than 30 simulated minutes earlier. After this time the value used is the geometric mean of the buying and selling prices of the most competitive orders on the exchange, expressed in the fiat currency. If the first exchange is a Market Maker, the value used will be the geometric mean of the Bid and Ask prices.
  • Minted Sale Price: If there is no better source of prices and the Controller of the alternative currency offers freshly minted coins at a price in the fiat currency then this is the value to use.
  • Control Catalogue Pricing Rate: If there is no better source of prices and there is a Control Catalogue in operation then the rate used to set alternative currency prices for goods in the Control Catalogue is used.
  • Token Sale Price: If there is no better source of prices and tokens were sold then the price of those tokens, in fiat currency, is the value given to the alternative currency. This means that the price will be unchanging until a better source of prices appears.
  • Initial Exchange Rate: This is a parameter set for the alternative currency as the last resort — typically only needed initially and even then only in some situations. See 9.1   Basic Information for settings.
16.3.2   Valuation Histories

The above hierarchy of sources is used for determining the:

  • Alternative Currency Current Value, which shows the current valuation
  • Alternative Currency Daily Value History, which shows the valuation at the end of each day (midnight)
  • Alternative Currency Full Value History, which lists every change to the value of the alternative currency, with its exact time.

16.4   Distributions Of Wealth

Many economic quantities are unequally distributed. The simulator needs to distribute quantities unequally in a number of situations, such as:

  • Distribution of cash holdings of Initial Users.
  • The cash holdings of additional Users.
  • Average number of purchases per day of Users.
  • Prices of goods offered for sale.

In all cases, the simulator does this by generating pseudorandom numbers according to the Log-normal distribution (shifted by a non-negative constant) with parameters (\(\mu\) and \(\sigma\)) worked out from settings given. When you enter setting values the distribution parameters are worked out and feedback is shown in the form of further key numbers from the distribution:

  • The mode.
  • The P01, P10, P90, and P99 values.

The settings to give are the lowest possible value (\(L\)), the median (\(d\)), and the mean (\(n\)). This may not seem like the most intuitive choice but economic statistics, such as those from the UK’s Office of National Statistics, often give the values for the median and mean, and approximate P10 and P90 values can be read off their charts for comfirmation. The lowest possible value can be set to zero.

The parameters and mode are calculated as follows:

\[\begin{split}&\mu = \ln[d-L]\\ &\sigma = \sqrt{2(\ln[n-L]-\mu)}\\ &mode = e^{\mu - \sigma^2} + L\end{split}\]

Note that, in this documentation, square brackets are used to indicate the inputs to functions to avoid ambiguity.

16.5   Calibration Functions

This section explains the calibration function types, how their parameters are calculated from given settings, and their inverses used to provide feedback to users.

16.5.1   Ranging Over 0 To 1

The simpler calibration function types are the ones that map decision factor values to numbers between 0 and 1. In these formulae for the calibration function types the variables after the semicolon are parameters that define a function mapping an input, \(x\), to an output, which is the required multiplier.

\[\begin{split}&\text{half-asc-1}[x;a,b] \equiv 1 - {1 \over a(x-b)+1}, x \geq 0 \\ &\text{half-desc-1}[x;a,b] \equiv {1 \over a(x-b) + 1}, x \geq 0 \\ &\text{full-asc-1}[x;k,x_0] \equiv {1 \over 1 + e^{-k(x-x_0)}} \\ &\text{full-desc-1}[x;k,x_0] \equiv {1 \over 1 + e^{k(x-x_0)}}\end{split}\]

With \(\text{half-asc-1}\) and \(\text{half-desc-1}\), you are asked to set a value for the factor, \(f_{0.5}\), that would reduce the probability of opting in by a half, and a value for the multiplier, \(m_0\), when the factor is zero. For the \(\text{half-asc-1}\) function \(m_0\) must be less than 0.5 and \(a\) and \(b\), are calculated as follows:

\[a = {2m_0-1 \over f_{0.5}(m_0-1)}, \ \ \ b = {f_{0.5} m_0 \over 2m_0-1}\]

For the \(\text{half-desc-1}\) function type \(m_0\) must be greater than 0.5 and \(a\) and \(b\), are calculated as follows:

\[a = {2m_0-1 \over f_{0.5}m_0}, \ \ \ b = {f_{0.5} (m_0-1) \over 2m_0-1}\]

With the \(\text{full-asc-1}\) and \(\text{full-desc-1}\) function types you are asked for the value of the factor, \(x\), that would give a multiplier of 0.5, \(f_{0.5}\), and a multiplier value for when \(x=0\), (\(m_0\) in the following formulae). From these two the system calculates the values of the two parameters of the functions, \(k\) and \(x_0\), using the same pair of equations in each case.

\[x_0 = f_{0.5}, \ \ \ k = {1 \over f_{0.5}} \ln\left[{1 \over m_0} -1 \right]\]

When you have entered settings to specify the parameters of these functions the system shows feedback in the form of further statistics from the distribution. These will be the values of the factor that give multipliers of 0.01, 0.1, 0.5, 0.9, and 0.99, if there are any such values. The inverse functions are as follows:

\[\begin{split}\text{half-asc-1}^{-1}[m;a,b] \equiv {m \over a(1-m)} + b,\ \ \text{provided} \ x \geq 0 \\ \text{half-desc-1}^{-1}[m;a,b] \equiv {1 - m \over am} + b,\ \ \text{provided} \ x \geq 0 \\ \text{full-asc-1}^{-1}[m;k,x_0] \equiv x_0 - {1 \over k} \ln\left[{1-m \over m} \right] \\ \text{full-desc-1}^{-1}[m;k,x_0] \equiv x_0 + {1 \over k} \ln\left[{1-m \over m} \right]\end{split}\]
16.5.2   Ranging Over A Chosen Interval

Similar calibration function types are available to map to an interval of your choice, rather than just 0 to 1.

\[\begin{split}&\text{half-asc}[x;a,b,c] \equiv c - {b \over ax+1}, x \geq 0 \\ &\text{half-desc}[x;a,b,c] \equiv {b \over ax+1} + c, x \geq 0 \\ &\text{full-asc}[x;m_t,m_b,k,x_0] \equiv {m_t - m_b \over 1 + e^{-k(x-x_0)}} + m_b \\ &\text{full-desc}[x;m_t,m_b,k,x_0] \equiv {m_t - m_b \over 1 + e^{k(x-x_0)}} + m_b\end{split}\]

For \(\text{half-asc}\) and \(\text{half-desc}\) you have to specify the highest (\(m_t\)) and lowest (\(m_b\)) possible multiple and the value of the factor that gives a multiple of 1 (\(f_1\), having no effect on the average delay).

For the \(\text{half-asc}\) function, the parameters are calculated as follows:

\[a = {1-m_b \over x_1(m_t-1)}, \ \ \ b = m_t - m_b, \ \ \ c = m_t\]

For the \(\text{half-desc}\) function, the parameters are calculated as follows:

\[a = {m_t - 1 \over x_1(1-m_b)}, \ \ \ b = m_t - m_b, \ \ \ c = m_b\]

For the \(\text{full-asc}\) you have to specify the highest possible multiple, \(m_t\), the lowest possible multiple, \(m_b\), the value of the factor that gives a multiple of 1, \(f_1\), and the value of the factor that gives a multiple of 2, \(f_2\). The parameters of the function are then calculated as follows:

\[x_0 = {f_1L_2 - f_2L_1 \over L_2-L_1}, \ \ \ k = {L_1 \over x_0 - f_1}\]

where,

\[L_1 = \ln\left[{m_t - 1 \over 1 - m_b}\right], \ \ \ L_2 = \ln\left[{m_t - 2 \over 2 - m_b} \right]\]

For the \(\text{full-desc}\) you have to specify the highest possible multiple, \(m_t\), the lowest possible multiple, \(m_b\), the value of the factor that gives a multiple of 1, \(f_1\), and the value of the factor that gives a multiple of 0.5, \(f_{0.5}\). The parameters of the function are then calculated as follows:

\[x_0 = {f_1L_2 - f_{0.5}L_1 \over L_2-L_1}, \ \ \ k = {L_1 \over f_1 - x_0}\]

where,

\[L_1 = \ln\left[{m_t - 1 \over 1 - m_b}\right], \ \ \ L_2 = \ln\left[{2m_t - 1 \over 1 - 2m_b} \right]\]

When you have entered settings to specify the parameters of these functions the system shows feedback in the form of further statistics from the distribution. These will be the values of the factor that give multipliers of 0.01, 0.1, 0.5, 0.9, and 0.99, if there are any such values. The inverse functions are as follows:

\[\begin{split}&\text{half-asc}^{-1}[m;a,b,c] \equiv {1 \over a} \left({b \over c-m} -1 \right),\ \ \text{provided} \ x \geq 0 \\ &\text{half-desc}^{-1}[m;a,b,c] \equiv {1 \over a} \left({b \over m-c} -1 \right),\ \ \text{provided} \ x \geq 0 \\ &\text{full-asc}^{-1}[m;k,x_0,m_t,m_b] \equiv x_0 - {1 \over k} \ln\left[{m_t - m_b \over m-m_b} \right] \\ &\text{full-desc}^{-1}[m;k,x_0,m_t,m_b] \equiv x_0 + {1 \over k} \ln\left[{m_t-m_b \over m - m_b} \right]\end{split}\]

16.6   Random Delays

The two most common distributions used in the simulator for generating random time delays are the uniform and exponential.

16.6.1   Uniformly Distributed Delays

Uniformly distributed delays ensure that the event happens at a random time within a specified interval. It means we can guarantee that the event happens at some time within the interval but all delays within the interval are equally likely.

Specifying the distribution requires just the maximum time delay.

16.6.2   Exponentially Distributed Delays

Exponentially distributed delays could, in theory, be any length, but they have a predictable long term average length. This is the result of a Poisson point process and is a common choice for modelling relatively rare events that happen randomly. The usual parameterization of the exponential distribution uses lambda, the rate of occurrence, but it seems easier to think in terms of the average delay, which is its reciprocal. Using \(d\) as the average delay, the cumulative distribution function is:

\[P[x<X] \equiv 1 - e^{-X \over d}\]

The inverse distribution function, used for generating random delays, is:

\[X \equiv - {d \ln[1-p]}\]

The distribution is memoryless, which means that an event occurring does not affect the expected time until the next event. (This may be unrealistic in some situations.)

16.6.2.1   Deciding Average Delays

Agents sometimes need to decide on delays based on a number of different factors. This is done by using functions to determine the average delay then generating delays according to the exponential distribution using the average delay as usual.

The starting point is an default average delay. The factors considered will each then multiply that delay by a value that may be more than or less than 1, and so may increase or decrease the delay respectively.

The calibration function types used are \(\text{half-asc}\), \(\text{half-desc}\), \(\text{full-asc}\), and \(\text{full-desc}\).

16.7   Economic Predictions

Users and Exchanges need to consider the economics underlying their decisions. Key decision factors for this purpose are their best estimates for future volumes and values of activity and resulting gains. These predictions reflect:

  • personal extrapolation: i.e. their direct personal experiences
  • market extrapolation: i.e. more ‘theoretical’ calculations based on overall market numbers and crude assumptions
  • theoretical extrapolation: i.e. even cruder calculations based on simple parameters of the Trial.

The importance of direct personal experience rises in the calculation as more of that personal experience becomes available. Also, the agent’s tendency to react to the most recent information is reflected in the predictions by using a personal recency factor.

All predictions described below are based on calculating an exponentially weighted moving average of the days since the User took up the relevant role, plus up to an additional 21 days of daily (i.e. midnight to midnight) numbers, or as many as exist in the early days of the simulation. Those days do not include the current day. Each day in the sequence contains either:

  • actual personal data based on the agent’s transactions during the relevant day, and only used when the agent is an Active User or providing exchange services for the alternative currency for the entire day; or
  • market estimated personal data based on the whole market’s transactions during the day and some crude assumptions and calculations; or
  • theoretical estimated personal data based on parameter settings for the Trial and very crude assumptions and calculations.

The best quality available number is used on each day. This means that individual agents maintain their personal moving averages, with their own recency weightings, and when starting in a new role can create a new moving average by looking back at market and theoretical numbers shared by all agents.

16.7.1   Recency Weighted Moving Averages

Recency weighted moving averages are calculated by using the exponentially weighted moving average method with a discount factor \(d\).

The average is calculated by keeping two running totals. One is for the sum of weights and the other for the sum of weighted values. The average is the sum of weighted values divided by the sum of weights. The following formulae are for a sequence of values: \(a_1, a_2, a_3, ...\), and the goal is to work out the exponentially weighted moving average for the sequence up to and including \(a_k\).

For \(k = 1\),

\[\begin{split}&V_1 = a_1 \\ &W_1 = 1 \\ &\text{EWMA}_k = {V_1 \over W_1}\end{split}\]

For \(k > 1\),

\[\begin{split}&V_k = d V_{k-1} + a_k \\ &W_k = d W_{k-1} + 1 \\ &\text{EWMA}_k = {V_k \over W_k}\end{split}\]

\(d\) is calculated from a recency factor set, \(r\):

\[d = 1 - r\]

This factor represents the proportion of the weight given to the latest value in the sequence, in the very long term. (When the sequence has only one number in it this has all the weight, but as more numbers are added to the sequence the proportion of the weight falls, gradually approaching \(r\).)

Individual Users have different discount factors, giving some a more long term view than others.

16.7.2   Transaction Volumes

Daily transaction volumes are defined as follows:

  • Customer Purchases In Alternative Currency (Volume): i.e. the number of purchases made by the Customer in Alternative Currency.
    • Actual: The number of alternative currency amounts paid to purchase goods during the day by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. Not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Half the Customer’s purchases are assumed to be in alternative currency.
\[= 0.5 (F_l N_l + F_p N_p)\]
where:
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Customer Purchases In Fiat Currency (Volume): i.e. the number of purchases made by the Customer in fiat currency.
    • Actual: The number of fiat currency amounts paid to purchase goods during the day by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. Not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Half the Customer’s purchases are assumed to be in fiat currency.
\[= 0.5 (F_l N_l + F_p N_p)\]
where:
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Merchant Sales In Alternative Currency (Volume):
    • Actual: The number of alterative currency amounts received for goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Also, half the Merchant’s sales are assumed to be in alternative currency.
\[= 0.5 C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Sales In Fiat Currency (Volume):
    • Actual: The number of fiat currency amounts received for goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Also, half the Merchant’s sales are assumed to be in alternative currency.
\[= 0.5 C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Resupply Purchases (Volume):
    • Actual: The number of fiat currency payments made to resupply goods sold during the day by the Merchant. This will be the sum of the number of sales made in alternative currency and the number of sales made in the fiat currency since every sale is accompanied by an immediate resupply purchase.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales.
\[= C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Operator Transactions (Volume):
    • Actual: The number of transactions handled by the Operator during the day.
    • Market Estimate: The sum of the Actuals for all Operators divided by the number of Operators at the end of the day.
    • Theoretical Estimate: Not required as there will always be at least one Operator if Operators are needed at all.
  • Exchange Transactions (Volume):
    • Actual: The number of transactions fulfilled by a Market Maker or number of arriving orders partly or fully satisfied during the day by a Continuous Order Driven Exchange.
    • Market Estimate: The sum of the Actuals for all Exchanges, divided by the number of Exchanges at the end of the day. Not defined if the number of Exchanges at the end of the day is zero.
    • Theoretical Estimate: The sum of the Actuals for all Exchanges, since it is assumed that a new exchange would get all the transactions.
16.7.3   Transaction Values

Daily transaction values are defined as follows:

  • Speculation Level (Value):
    • Actual: The alternative currency balance of the agent at the end of the day (midnight).
    • Market Estimate: The sum of the Actuals for all agents, excluding exchanges, divided by the the number of such agents. This is not defined if the number of relevant agents at the end of the day is zero.
    • Theoretical Estimate: Zero.
  • Customer Purchases In Alternative Currency (Value):
    • Actual: The sum of the alternative currency amounts paid to purchase goods during the day by the Customer. This will include any transaction fees to be paid by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. This is not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Assuming that half of the purchases are in alternative currency.
\[= 0.5 {P_m \over r} (F_l N_l + F_p N_p)\]
where:
\(P_m\) is the Mean Price Of A Good set
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
\(r\) is the value of alternative currency in fiat currency at the end of the day
  • Customer Purchases In Fiat Currency (Value):
    • Actual: The sum of the fiat currency amounts paid to purchase goods during the day by the Customer. This will include any transaction fees to be paid by the Customer.
    • Market Estimate: The sum of the Actuals for all Customers divided by the number of Customers at the end of the day. This is not defined if the number of Customers at the end of the day is zero.
    • Theoretical Estimate: Assuming that half of the purchases are in alternative currency.
\[= 0.5 P_m (F_l N_l + F_p N_p)\]
where:
\(P_m\) is the Mean Price Of A Good set
\(F_l\) is the Average Fraction Of Lone Goods Purchased daily by the Customer
\(N_l\) is the Number Of Lone Goods set for the simulation
\(F_p\) is the Average Fraction Of Paired Goods Purchased daily by the Customer
\(N_p\) is the Number Of Paired Goods set for the simulation
  • Merchant Sales In Alternative Currency (Value):
    • Actual: The sum of the alternative currency amounts received for goods sold during the day by the Merchant. This will be after deducting any transaction fees.
    • Market Estimate: The sum of the Actuals for all Merchants, divided by the number of Merchants at the end of the day. This is not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Half the sales are assumed to be in alternative currency.
\[= 0.5 {P_m C_n \over r} \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
\(r\) is the value of alternative currency in fiat currency at the end of the day
  • Merchant Sales In Fiat Currency (Value):
    • Actual: The sum of the fiat currency amounts received for goods sold during the day by the Merchant. This will be after deducting any transaction fees.
    • Market Estimate: The sum of the Actuals for all Merchants, divided by the number of Merchants at the end of the day. This is not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales. Half the sales are assumed to be in fiat currency.
\[= 0.5 P_m C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Merchant Resupply Purchases (Value):
    • Actual: The fiat currency paid to resupply goods sold during the day by the Merchant.
    • Market Estimate: The sum of the Actuals for all Merchants divided by the number of Merchants at the end of the day. Not defined if the number of Merchants at the end of the day is zero.
    • Theoretical Estimate: Since there were no Merchants at the end of the day it is assumed that, if the Merchant has just opted in, then it will get all sales.
\[= P_m m_c C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(P_m\) is the Mean Price Of A Good set
\(m_c\) is the Cost Multiple For Goods
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Operator Transaction Fees (Value):
    • Actual: The sum of the transaction fees earned by the Operator during the day. These are always in alternative currency.
    • Market Estimate: The sum of the Actuals for all Operators, divided by the number of Operators at the end of the day. This is not defined if the number of Operators at the end of the day is zero.
    • Theoretical Estimate: Not required as there will always be at least one Operator.
  • Operator Expenses (Value):
    • Actual: The sum of the transaction costs and daily fixed costs for the Operator during the day. These are in fiat currency.
    • Market Estimate:* The sum of the Actuals for all Operators, divided by the number of Operators at the end of the day. This is not defined if the number of Operators at the end of the day is zero.
    • Theoretical Estimate:* This considers only the transactions needed for purchases of goods.
\[= c_d + c_v C_n \bigg( {(L_l + H_l) \over 2} N_l + {(L_p + H_p) \over 2} N_p \bigg)\]
\(c_v\) is the variable cost i.e. cost per transaction borne by the Operator
\(c_d\) is the daily fixed cost of the Operator
\(L_l\) is the Lowest Average Fraction Of Lone Goods Purchased by Customers
\(H_l\) is the Highest Average Fraction Of Lone Goods Purchased by Customers
\(L_p\) is the Lowest Average Fraction Of Paired Goods Purchased by Customers
\(H_p\) is the Highest Average Fraction Of Paired Goods Purchased by Customers
\(C_n\) is the number of Customers
  • Exchange Transactions (Value):
    • Actual: The alternative currency value of transactions fulfilled by a Market Maker or arriving orders partly or fully satisfied during the day by a Continuous Order Driven Exchange.
    • Market Estimate: The sum of the Actuals for all Exchanges, divided by the number of Exchanges.
    • Theoretical Estimate: The sum of the Actuals for all Exchanges, since it is assumed that a new Exchange would get all the transactions.
16.7.4   Transaction Gains

In the course of exchanging currency (with the Controller or Exchanges), buying and selling goods, and supporting transactions, agents make gains (losses are negative gains) from:

  • speculation
  • buying
  • selling
  • operating
  • exchanges as a Market Maker.

The actual gains on individual transactions are calculated as given in the following two tables. Within these the variables are:

  • \(F\) and \(F'\) are the agent’s stock of fiat currency before and after the transaction.
  • \(S\) and \(S'\) are the agent’s stock of goods, valued in fiat currency, before and after the transaction.
  • \(A\) and \(A'\) are the agent’s stock of alternative currency, expressed in alternative currency, before and after the transaction.
  • \(r\) is the rate of exchange implied by the transaction.
  • \(V_A\) and \(V'_A\) are the fiat currency values of the stock of alternative currency before and after the transaction.
  • \(a\) is the alternative currency initially paid/finally received: (1) by the Customer when goods are bought, (2) by the User when currency exchange is made.
  • \(f\) is the fiat currency initially paid/finally received: (1) by the Customer when goods are bought, (2) by the User when currency exchange is made.
  • \(p\) is the underlying price of the good in fiat currency.
  • \(m_v\) is the valuation multiple for a substitute i.e. showing how much more valuable to the Customer a substitute is compared to its Paired Good.
  • \(m_c\) is the cost multiple for a good. Multiplying the underlying price by the cost multiple gives the cost of the good for profit calculation purposes.
  • \(t_a\) is the transaction fee on alternative currency movement excluding any fee paid by the other party. (This varies depending on various factors, see 16.8   Transaction Fees.) In the case of an Operator supporting a transaction in the alternative currency, the \(t_a\) represents either the whole transaction fee paid by the Controller and Users (if paid only to the winner and the Operator is that winner), zero (if paid only the winner and the Operator is not the winner), or the transaction fee paid divided by the lesser of the number of Operators and the Maximum Operators Per Transaction (see 9.2   System Support).
  • \(t_f\) is the transaction fee on fiat currency movement excluding any fee paid by the other party. (This varies depending on various factors, see 16.8   Transaction Fees.)
  Buy good with fiat Buy good with alt. Buy subst. with alt. Sell for fiat (and restock) Sell for alt. (and restock)
\[F'\]
\[F - f\]
\[F\]
\[F\]
\[F + f - p m_c - t_f - t_{f2}\]
\[F - p m_c - t_{f2}\]
\[S'\]
\[S + p\]
\[S + p\]
\[S + p m_v\]
\[S\]
\[S\]
\[A'\]
\[A\]
\[A - a\]
\[A - a\]
\[A\]
\[A + a - t_a\]
\[r\]
\[\text{None}\]
\[{p \over a}\]
\[{p \over a}\]
\[\text{None}\]
\[{p \over a}\]
\[V'_A\]
\[V_A\]
\[A' r\]
\[A' r\]
\[V_A\]
\[A' r\]
Speculation gain
\[0\]
\[p+V'_A-V_A+t_ar\]
\[pm_v+V'_A-V_A+t_ar\]
\[0\]
\[-p+V'_A-V_A+t_ar\]
Buying gain
\[- t_f\]
\[- t_a r\]
\[p (1-m_v) - t_a r\]
\[0\]
\[0\]
Selling gain
\[0\]
\[0\]
\[p - p m_c\]
\[f - p m_c - t_f - t_{f2}\]
\[ar - p m_c - t_a r - t_{f2}\]
Operating gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Market Making gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]

In the Sell for fiat (and restock) case, the sale is accompanied by the Merchant buying replacement stock using fiat currency and this also attracts a second transaction fee, \(t_{f2}\). In the Sell for alt. (and restock) case the Merchant again replaces the stock, paying in fiat currency and attracting the second transaction fee.

  Support transaction User buys fiat User buys alt. MM sells fiat MM sells alt.
\[F'\]
\[F\]
\[F + f\]
\[F - f\]
\[F - f - t_f\]
\[F + f - t_f\]
\[S'\]
\[S\]
\[S\]
\[S\]
\[S\]
\[S\]
\[A'\]
\[A + t_a\]
\[A - a\]
\[A + a\]
\[A + a - t_a\]
\[A - a - t_a\]
\[r\]
\[{c_v \over t_a}\]
\[{f \over a}\]
\[{f \over a}\]
\[{f \over a}\]
\[{f \over a}\]
\[V'_A\]
\[V_A\]
\[A' r\]
\[A' r\]
\[A' r\]
\[A' r\]
Speculation gain
\[0\]
\[f+V'_A-V_A+t_f+t_a r\]
\[-f+V'_A-V_A+t_f+t_a r\]
\[0\]
\[0\]
Buying gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Selling gain
\[0\]
\[0\]
\[0\]
\[0\]
\[0\]
Exchange gain
\[0\]
\[-t_f - t_a r\]
\[-t_f - t_a r\]
\[0\]
\[0\]
Operating gain
\[t_a r\]
\[0\]
\[0\]
\[0\]
\[0\]
Market Making gain
\[0\]
\[0\]
\[0\]
\[-f+t_f+V'_A-V_A\]
\[f-t_f+V'_A-V_A\]

The gains for a whole day (midnight to midnight) are defined as follows:

  • Speculation Gain:
    • Actual: The sum of the speculation gains on transactions by the agent during the day.
    • Estimates: Not needed as all Active Users can make speculation gains.
  • Buying Gain:
    • Actual: The sum of the buying gains on transactions by the agent during the day.
    • Market Estimate: The sum of all buying gains on transactions by all agents during the day divided by the number of Customers at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.
  • Selling Gain:
    • Actual: The sum of the selling gains on transactions by the agent during the day.
    • Market Estimate: The sum of all selling gains on transactions by all agents during the day divided by the number of Merchants at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.
  • Exchange Gain:
    • Actual: The sum of the exchange gains (really just transaction costs on exchanges) on transactions by the agent during the day.
    • Estimates: Not needed as all Active Users can use exchanges.
  • Operating Gain:
    • Actual: The sum of the operating gains on transactions by the agent during the day, less the Operator’s daily fixed costs.
    • Market Estimate: The actual operating gains of all Operators during the day divided by the number of Operators at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Not required as there will always be at least one Operator if Operators are required at all.
  • Market Making Gain:
    • Actual: The sum of the market making gains on transactions by the agent during the day.
    • Market Estimate: The total market making gains of all Market Makers during the day divided by the number of Market Makers at the end of the day. (No value if there are none.)
    • Theoretical Estimate: Zero.

16.8   Transaction Fees

All transfers of currency involve transaction fees (though they can be set to zero). The types where the alternative currency is involved are:

\(T_{cf}\) Controller Paid Fixed Transaction Fee (Minted)
\(T_{cp}\) Controller Paid Percentage Transaction Fee (Minted)
\(T_{af}\) User Paid Fixed Transaction Fee (in alternative currency)
\(T_{ap}\) User Paid Percentage Transaction Fee (in alternative currency)

The types where the fiat currency is involved are:

\(T_{ff}\) FC User Paid Fixed Transaction Fee (in fiat)
\(T_{fp}\) FC User Paid Percentage Transaction Fee (in fiat)
16.8.1   Purchase/Sale Of Goods

Purchase/sale of goods involve just one transfer of currency and involve two possible arrangements.

  • Merchant Pays Fees: Customer sends the price (\(P\)) in appropriate currency and the Merchant receives that less the user-paid transaction fees.
  Pay in fiat Pay in alt.
Customer pays (\(C_p\))
\[P \text{ fiat}\]
\[P \text{ alt.}\]
Merchant receives
\[P(1 - 0.01 T_{fp}) - T_{ff} \text{ fiat}\]
\[P(1 - 0.01 T_{ap}) - T_{af} \text{ alt.}\]
Controller pays
\[0\]
\[T_{cf} + 0.01 C_p T_{cp} \text{ alt.}\]
Operators receive
\[0\]
\[T_{af} + T_{cf} + 0.01 C_p (T_{ap} + T_{cp}) \text{ alt.}\]
  • Customer Pays Fees: Customer sends the price plus the user-paid transaction fees so that the Merchant receives the price once the transaction fees have been deducted.
  Pay in fiat Pay in alt.
Customer pays (\(C_p\))
\[{P + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{P + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Merchant receives
\[P \text{ fiat}\]
\[P \text{ alt.}\]
Controller pays
\[0\]
\[T_{cf} + 0.01 C_p T_{cp} \text{ alt.}\]
Operators receive
\[0\]
\[T_{af} + T_{cf} + 0.01 C_p (T_{ap} + T_{cp}) \text{ alt.}\]
16.8.2   Currency Exchange

For currency exchanges there are three possible arrangements:

  • Exchange Pays Fees: The person using the Exchange sends an amount of one currency and receives in return an amount that is simply converted at the advertised/order rate (\(r\)). The Exchange pays the fees.
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange receives
\[U_p(1 - 0.01 T_{fp}) - T_{ff} \text{ fiat}\]
\[U_p(1 - 0.01 T_{ap}) - T_{af} \text{ alt.}\]
Exchange pays (\(E_p\))
\[{{U_p \over r} + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
\[{U_p r + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
User receives
\[{U_p \over r} \text{ fiat}\]
\[U_p r \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p (T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]
  • User Pays Fees: The Exchange receives an amount and sends an amount based on converting it as the advertised exchange rate (\(r\)).
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[{F - T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{A + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Exchange receives (\(E_r\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange pays (\(E_p\))
\[{E_r \over r} \text{ alt.}\]
\[E_r r \text{ fiat}\]
User receives
\[E_p(1 - T_{ap}) - T_{af} \text{ alt.}\]
\[E_p(1 - T_{fp}) - T_{ff} \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p(T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]
  • Initiators Pay Fees: The payers in each currency movement pay the fees.
  Buy alt. with fiat Sell alt. for fiat
User pays (\(U_p\))
\[{F - T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
\[{A + T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
Exchange receives (\(E_r\))
\[F \text{ fiat}\]
\[A \text{ alt.}\]
Exchange pays (\(E_p\))
\[{{E_r \over r} - T_{af} \over 1 - 0.01 T_{ap}} \text{ alt.}\]
\[{E_r r + T_{ff} \over 1 - 0.01 T_{fp}} \text{ fiat}\]
User receives
\[{E_r \over r} \text{ alt.}\]
\[E_r r \text{ fiat}\]
Controller pays
\[T_{cf} + 0.01 E_p T_{cp} \text{ alt.}\]
\[T_{cf} + 0.01 U_p T_{cp} \text{ alt.}\]
Operators receive
\[T_{af} + T_{cf} + 0.01 E_p(T_{ap} + T_{cp}) \text{ alt.}\]
\[T_{af} + T_{cf} + 0.01 U_p(T_{ap} + T_{cp}) \text{ alt.}\]

16.9   Customer Purchasing Decisions

When they shop, Customers randomly select a number of Lone Goods to try to buy, a number of Paired Goods to try to buy, and a number of Exclusive Goods to try to buy according to their personal characteristics, and then randomly select goods to try to buy until they have attempted the intended numbers of purchases. For each purchase they must decide what exactly to buy, from whom, and with which payment mechanism.

The Customer identifies the best available:

  • fiat price of the good
  • alternative currency price of the good
  • alternative currency price of the good’s substitute.

Each of these may be paid for by using existing stocks of the relevant currency or by obtaining more of the currency at short notice using the other currency. Therefore, there are up to 6 possibilities to be considered, but some may be ruled out because of low currency stocks or because goods or substitutes are not currently offered by Merchants. All the prices considered allow correctly for the transaction fees involved, as do calculations of the cost of exchanges of currency at short notice (see 16.8   Transaction Fees for details).

The cases to consider are:

  Use Fiat Use alt.
Good with fiat price \(G_{ff}\) \(G_{fa}\)
Good with alt. price \(G_{af}\) \(G_{aa}\)
Substitute with alt. price \(S_{af}\) \(S_{aa}\)

Some comparisons are simple but others are not. In the formulae, the symbol \(\succ\) means ‘is preferred to’.

  • The Customer makes no purchase if no Merchant/Control Catalogue offers the good or its substitute, or if the Customer has insufficient currency (of any kind) left. This still counts as a purchase for the purposes of making the intended number of purchases that day.
  • If the Customer has enough currency to purchase the good at an advertised price without obtaining more of the currency at short notice then using the existing stock of currency will be preferred.
\[\begin{split}&G_{ff} \succ G_{fa} \\ &G_{aa} \succ G_{af} \\ &S_{aa} \succ S_{af}\end{split}\]
  • If the good and its substitute are both offered at a price in the same currency then the item with the best value per unit of the currency will be preferred.
\[\begin{split}&m\ \text{fiat-price}[G_{ff}] \geq \text{fiat-price}[S_{ff}] \implies S_{ff} \succ G_{ff} \\ &m\ \text{fiat-price}[G_{ff}] < \text{fiat-price}[S_{ff}] \implies G_{ff} \succ S_{ff} \\ &m\ \text{fiat-price}[G_{fa}] \geq \text{fiat-price}[S_{fa}] \implies S_{fa} \succ G_{fa} \\ &m\ \text{fiat-price}[G_{fa}] < \text{fiat-price}[S_{fa}] \implies G_{fa} \succ S_{fa} \\ &m\ \text{fiat-price}[G_{aa}] \geq \text{fiat-price}[S_{aa}] \implies S_{aa} \succ G_{aa} \\ &m\ \text{fiat-price}[G_{aa}] < \text{fiat-price}[S_{aa}] \implies G_{aa} \succ S_{aa} \\ &m\ \text{fiat-price}[G_{af}] \geq \text{fiat-price}[S_{af}] \implies S_{af} \succ G_{af} \\ &m\ \text{fiat-price}[G_{af}] < \text{fiat-price}[S_{af}] \implies G_{af} \succ S_{af}\end{split}\]
  • The Customer will be indifferent between a good priced in fiat currency but paid for by obtaining alternative currency at short notice and a good priced in alternative currency and paid for by obtaining fiat currency at short notice. In the rare event of a choice being needed, it will be random with equal probabilities. The reason this is likely to be rare is that the Customer has a good stock of both currencies and will be able to buy using the advertised currency more efficiently.
\[\begin{split}&G_{fa} \nsucc G_{af} \\ &G_{af} \nsucc G_{fa}\end{split}\]

More complicated comparisons are between goods priced in fiat currency and goods priced in alternative currency. For these it is necessary to calculate the cost of the purchase in the relevant currency, taking all transaction fees into account, and bearing in mind which party pays each fee.

  • In clear cut cases one price will be so much better that even obtaining its currency at short notice (a costly approach) would still be better than using that currency on the other price. The Customer will prefer that price. That is:
\[\begin{split}\text{fiat-cost}[G_{af}] < \text{fiat-cost}[G_{ff}] &\implies G_{af} \succ G_{ff} \\ \text{alt-cost}[G_{fa}] < \text{alt-cost}[G_{aa}] &\implies G_{fa} \succ G_{aa}\end{split}\]
  • Where a good is priced in one currency and its substitute is priced in the other, a similar logic applies but now comparing the value per unit currency to see if the situation is clear cut.
\[\begin{split}m\ \text{fiat-cost}[G_{ff}] > \text{fiat-cost}[S_{af}] &\implies S_{af} \succ G_{ff} \\ m\ \text{alt-cost}[G_{aa}] > \text{alt-cost}[S_{fa}] &\implies S_{fa} \succ G_{aa}\end{split}\]
  • If a clear cut difference between a fiat currency price and an alternative currency price does not exist then the Customer will choose at random between the prices with equal probability.

16.10   Currency Holdings Management

16.10.1   Holdings Of Currency

Users, Market Maker Exchanges, and the Controller each have holdings of fiat currency and alternative currency. In the case of the Controller and Market Maker Exchanges, these holdings represent their entire wealth. However, for Users these are just the part of their wealth considered relevant to the alternative currency. In particular, when a User is a Speculator the combination of these holdings is the total wealth considered currently available for speculating on currencies and is allocated between the fiat currency and alternative currency. Users may top up their fiat currency holdings from their other wealth, or take money from their fiat currency holding. (The amount of other wealth is not represented in the simulator.)

Market Makers and the Controller must try to avoid running out of money. Market Makers need to set their prices to avoid this and you, as the brains behind the Controller, have many ways to avoid it. In the extreme, Market Makers and the Controller will be prevented from accepting transactions that require more money than they have, or would leave them with no money at all.

Users are also prevented from completing transactions that would cause them to overspend a currency, but they can adjust their holdings as a trial unfolds. They are given Initial Holdings and subsequently reconsider them from time to time. In an effort to complete transactions they may also try to swap value between the fiat currency and the alternative currency, but this does not change the combined value of the holdings significantly.

16.10.2   Initial Holdings

All Users have an Initial Holding, valued in fiat currency. This is randomly generated when the User agent is first created according to the parameter settings: Lowest Initial Holding, Mean Initial Holding, and Median Initial Holding. This Initial Holding is remembered and remains an enduring indication of the overall wealth of the User.

However, this Initial Holding is modified as follows:

  • Initial Users: These are Users with holdings of alternative currency from the start of the Trial. Their Initial Holding is split between fiat currency and alternative currency according to the parameter settings: Mean Fraction Held As Alternative Currency, Variance Of Fraction Held As Alternative Currency, and Initial Alternative Currency Value. The fraction held as alternative currency is chosen randomly and the currency conversion uses the Initial Alternative Currency Value.
  • Token Holding Users: These are Users who bought tokens exchangeable for alternative currency at an exchange rate of 1. Their Initial Holding is split between fiat currency and tokens according to the parameter settings: Mean Fraction Held As Tokens, Variance Of Fraction Held As Tokens, and Initial Token Price.The fraction held as tokens is chosen randomly and the valuation of those tokens is given by the Initial Token Price.
  • Individual Potential Users Opting In: These users begin with their Initial Holding in fiat currency, but may be given Gift Coins if those are being provided. The parameter Gift Coins gives the number of alternative currency coins given to each new User in this situation.

This Initial Holding is related to the level of purchasing of goods, should the User become a Customer, and to the number of goods offered for sale, should be User become a Merchant.

16.10.3   Reconsidering Holdings

The User reconsiders the amounts of currency to hold from time to time. The delay until next reconsidering the holding amounts is found by calculating the delay that would be chosen for each of the User’s roles (one or more from: Speculator, Customer, Merchant, Operator) individually, then choosing the shortest delay.

How much to hold in each currency is determined by predicting currency needs until the next reconsideration (excluding Speculation) and considering the Initial Holding (which is used as an indicator of the User’s overall wealth, including wealth not included in the currency holdings).

\[A_N = \text{max}(D (A_{cb} - A_{ms} - A_{of}), 0)\]
where:
\(A_N\) is the estimated amount of alternative currency needed to cover the Customer, Merchant, and Operator roles.
\(D\) is the number of days until the next reconsideration of holdings.
\(A_{cb}\) is the predicted amount of alternative currency needed by a Customer to buy goods per day, or is zero if the User is not a Customer. This comes from the decision factor Customer Purchases In Alternative Currency (Value) and see 16.7.3   Transaction Values.
\(A_{ms}\) is the predicted amount of alternative currency received by a Merchant from selling goods per day, or is zero if the User is not a Merchant. This comes from the decision factor Merchant Sales In Alternative Currency (Value) and see 16.7.3   Transaction Values.
\(A_{of}\) is the predicted amount of alternative currency received by an Operator for supporting transactions per day, or is zero if the User is not an Operator. This comes from the decision factor Operator Transaction Fees (Value) and see 16.7.3   Transaction Values.
\[F_N = \text{max}(D (F_{cb} - F_{ms} + F_{mr} + F_{oc}), 0)\]
where:
\(F_N\) is the estimated amount of fiat currency needed to cover the Customer, Merchant, and Operator roles.
\(D\) is the number of days until the next reconsideration of holdings.
\(F_{cb}\) is the amount of fiat currency paid by a Customer to buy goods, or zero if the User is not a Customer. This comes from the decision factor Customer Purchases In Fiat Currency (Value) and see 16.7.3   Transaction Values.
\(F_{ms}\) is the amount of fiat currency received by a Merchant for selling goods, or zero if the User is not a Merchant. This comes from the decision factor Merchant Sales In Fiat Currency (Value) and see 16.7.3   Transaction Values.
\(F_{mr}\) is the amount of fiat currency used by a Merchant to replenish stocks of goods, or zero if the User is not a Merchant. This comes from the decision factor Merchant Resupply Purchases (Value) and see 16.7.3   Transaction Values.
\(F_{oc}\) is the amount of fiat currency paid by an Operator to cover expenses, or zero if the User is not a Merchant. This comes from the decision factor Operator Expenses (Value) and see 16.7.3   Transaction Values.

If the User is not a Speculator, then the target holdings will be these estimated requirements plus 50%:

\[\begin{split}&A_H = 1.5 A_N \\ &F_H = 1.5 F_N\end{split}\]

However, if the User is a Speculator then the situation is more complicated. The Speculator’s probability of the alternative currency rising in value relative to the fiat currency, \(p\), is crucial. If the amount the User would invest as a Speculator (the average of the current and initial wealth allocated) is less than the amount forecast to be required (plus 50%) then it is the requirement that prevails. Otherwise, it is the Speculation amount that is used.

\[\begin{split}&A_H = \text{max}\bigg(1.5 A_N, {p(I + C_A r + C_F) \over 2 r}\bigg) \\ &F_H = \text{max}\bigg(1.5 F_N, {(1 - p)(I + C_A r + C_F) \over 2} \bigg)\end{split}\]
where:
\(I\) is the Initial Holding of fiat currency allocated to the User.
\(C_A\) is the current holding of alternative currency.
\(C_F\) is the current holding of fiat currency.
\(r\) is the current valuation of the alternative currency.

Averaging the current and initial wealth means that the holding tend to return towards the initial wealth, but gaining and losing money through transactions and speculation can make the wealth rise and fall, temporarily.

As a result of these reconsiderations the holding of alternative currency needs to be adjusted. This can be done in a variety of ways, buying and selling the alternative currency with Exchanges and the Controller.

Also, the holding of fiat currency is adjusted. This is done by drawing on or returning money to the User’s other wealth. These transfers are recorded (see 13   Examining Results).

16.10.4   Transactions

Cash is used by Customers to buy goods and is received from them by Merchants. Merchants also use cash to resupply their stocks. Operators must pay their costs, but receive transaction fees.

The calculations to update stocks of fiat currency and alternative currency for transactions involving Exchanges and Users are tabulated in 16.7.4   Transaction Gains. The calculations for transactions involving the Controller are in the following table. Note that when the Controller sells a good from the Control Catalogue is immediately replenishes its stock.

  \(A'\) \(F'\)
Gift Freshly Minted \(A\) \(F\)
Sell Freshly Minted \(A\) \(F + f - t_f\)
Buy Back And Melt \(A\) \(F - f - t_f\)
Sell From Holding \(A - a - t_a\) \(F + f - t_f\)
Buy Back And Hold \(A + a - t_a\) \(F - f - t_f\)
Operator Payment
In Freshly Minted, Fixed
\(A\) \(F\)
Operator Payment
In Freshly Minted, %
\(A\) \(F\)
Sell from Control Catalogue \(A + a\) \(F - p m_c - t_f\)
where:
\(A\) and \(A'\) are the Controller’s stock of alternative currency before and after the transaction.
\(F\) and \(F'\) are the Controller’s stock of fiat currency before and after the transaction.
\(a\) is the amount of alternative currency initially supplied for the transaction.
\(f\) is the amount of fiat currency initially supplied for the transaction.
\(t_f\) is the transaction fee for a fiat currency transaction.
\(t_a\) is the transaction fee for an alternative currency transaction.
\(p\) is the underlying price of the good.
\(m_c\) is the cost multiple, representing the cost of goods for the Controller as a multiple of the underlying price.

16.11   Adjusting Alternative Currency Holdings

Users and Market Makers need to adjust the amount of alternative currency they hold from time to time. The way they do this must reflect the economics of their decision but also imperfections in their reasoning. The approach depends on whether the agent is buying or selling alternative currency and whether that is for immediate settlement or whether the possibility of delay is tolerable.

16.11.1   Delay allowed
16.11.1.1   Buying Alternative Currency

If the agent is an Active User then it will not attempt adjustment unless the size of the adjustment is at least 10 times any fixed transaction fees that would be payable.

To buy alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the lowest selling price for the alternative currency on any current order. It does not matter if the quantity the order is offering to sell is different from the quantity the agent wishes to buy.
  • Market Makers: The Ask price i.e. price at which each Market Maker is currently willing to sell alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Sell Freshly Minted
  • The Controller’s price to Sell From Holding

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent then identifies the set of sources offering the lowest cost and chooses one from them at random. (The cost reflects the price and also any applicable transaction fees.)

Having chosen a source to buy from, the agent makes the purchase. If the source is the Controller or a Market Maker then the agent simply makes the purchase at the advertised price immediately. (The agent’s deliberation time is very short so the seller does not revise prices during it.) There is a small possibility of the purchase failing or not providing the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with one or two new orders on the selected Exchange, with the following parameters.

Order 1:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match the best order on the Exchange. This may result in failing to buy the full quantity, in which case the remaining quantity will stay on the Exchange and may be matched with later orders from other Users.

Order 2:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match the best order on the Exchange less between 0 and 2% of that price (the exact percentage reduction being selected at random with uniform probability distribution). This order may result in a cheaper purchase for the agent if new orders come into the Exchange within the next three days.
16.11.1.2   Selling Alternative Currency

If the agent is an Active User then it will not attempt adjustment unless the size of the adjustment is at least 10 times any fixed transaction fees that would be payable.

To sell alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the highest buying price for the alternative currency on any current order. It does not matter if the quantity the order is offering to buy is different from the quantity the agent wishes to sell.
  • Market Makers: The Bid price i.e. price the Market Maker is willing to pay to buy alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Buy Back And Melt
  • The Controller’s price to Buy Back And Hold

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent the finds the set of sources offering the highest quantity of fiat currrency for the alternative currency (considering any applicable transaction fees) then chooses one randomly from this set with equal probability.

Having chosen a source to sell to, the agent makes the sale. If the source is the Controller or a Market Maker then the agent simply makes the sale at the advertised price immediately. (The agent’s deliberation time is very short so the buyer does not revise prices during it.) There is a small possibility of the sale failing or not disposing of the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with one or two new orders on the selected Exchange, with the following parameters.

Order 1:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match the best order on the Exchange. This may result in failing to sell the full quantity, in which case the remaining quantity will stay on the Exchange and may be matched with later orders from other Users.

Order 2:

  • Time duration: 3 days.
  • Quantity: Half the quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match the best order on the Exchange plus between 0 and 2% of that, with the exact percentage being selected randomly with a uniform distribution. This order may result in a higher priced sale for the agent if new orders come into the Exchange within the next three days.
16.11.2   Immediate Result Needed
16.11.2.1   Buying Alternative Currency

To buy alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the lowest selling price for the alternative currency that will match with enough orders to completely satisfy the required purchase quantity.
  • Market Makers: The Ask price i.e. price at which each Market Maker is currently willing to sell alternative currency. Obviously if a Market Maker is looking for an Exchange it does not consider the price it is offering itself.
  • The Controller’s price to Sell Freshly Minted
  • The Controller’s price to Sell From Holding

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent identifies those offering the lowest cost and selects one of these at random. (The cost reflects the price and also any applicable transaction fees.)

Having chosen a source to buy from, the agent makes the purchase. If the source is the Controller or a Market Maker then the agent simply makes the purchase at the advertised price immediately. (The agent’s deliberation time is very short so the seller does not revise prices during it.) There is a small possibility of the purchase failing or not providing the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with a new order on the selected Exchange, with the following parameters.

  • Time duration: 1 day.
  • Quantity: The quantity of alternative currency to be bought to achieve the intended holding.
  • Price: The price to match with enough orders to buy the full quantity required.
16.11.2.2   Selling Alternative Currency

To sell alternative currency, identify all the sources of prices available from all the following, if they exist:

  • Continuous Order Driven Exchanges: For each of these Exchanges, the price to use is the price that will sell the full quantity of alternative currency to current orders on the Exchange, potentially matching with more than one order.
  • Market Makers: The Bid price i.e. price at which each Market Maker is currently willing to buy alternative currency. Obviously if a Market Maker is looking for an exchange it does not consider the price it is offering itself.
  • The Controller’s price to Buy Back And Melt
  • The Controller’s price to Buy Back And Hold

If none of these exist then the agent can do nothing.

The agent then selects a number of sources to consider at random, with uniform probability over the range from 1 to the number of sources. This means that at least one source is bound to be chosen but some could be left out. The agent then selects that number of sources from those available, at random with equal probability for each source.

From these selected sources, the agent then identifies the set of sources offering the highest prices (considering any applicable transaction fees), and selects one source from that set at random.

Having chosen a source to sell to, the agent makes the sale. If the source is the Controller or a Market Maker then the agent simply makes the sale at the advertised price immediately. (The agent’s deliberation time is very short so the buyer does not revise prices during it.) There is a small possibility of the sale failing or not disposing of the full quantity of alternative currency and if this happens no additional action is taken.

If using a Continuous Order Driven Exchange then the agent will cancel any previously placed orders that have not been fulfilled (on all Exchanges) and replace them with a new order on the selected Exchange, with the following parameters.

  • Time duration: 3 days.
  • Quantity: The quantity of alternative currency to be sold to achieve the intended holding.
  • Price: The price to match with enough orders to sell the full quantity required.