Skip to main content

A package for algorithmic competition simulations.

Project description

Algocomp

Algocomp is a Python package for simulating competition between pricing algorithms across market structures.

Install

$ pip install algocomp

Duopoly Simulation

All duopoly simulations take the following inputs regardless of functional form.

Mandatory Arguments

  • costs: List of marginal costs for each firm
  • qualities List of product qualities for each firm ($a_i$)
  • algorithm Algorithm to use ('pso' or 'q-learning')
  • seed Random seed
  • plot Boolean flag to plot results
  • shock Boolean flag for HILP shock

Optional Arguments - PSO

  • num_particles Number of particles per firm (Default: 5)
  • num_iterations Number of iterations (Default: 1000)
  • w0 Initial inertia weight (Default: 0.025)
  • self_confidence Own particle confidence (Default: 1.75)
  • social_confidence Own firm confidence (Default: 1.75)
  • v_min Minimum particle velocity (Default: -0.3)
  • v_max Maximum particle velocity (Default: 0.3)
  • memory_size Size of particle memory in iterations (Default: 5)
  • hilp_iteration Iteration when the HILP shock occurs (Default: 500)
  • shock_size Price increase (Default: 0.5)

Optional Arguments - Q Learning

  • max_steps Number of iterations (Default: 1000000)
  • grid_lower_bound Lower bound on price space (Default: Nash - 0.5)
  • grid_upper_bound Upper bound on price space (Default: Nash + 0.5)
  • num_possible_actions Number of discrete prices (Default: 15)
  • learning_rate (Default: 0.15)
  • discount_factor (Default: 0.95)
  • beta Exploration rate (Default: 0.00001)

logit_duopoly

Duopoly implementation of logit shares $s_i = \frac{e^{\frac{a_i-p_i}{\mu}}}{e^{\frac{a_0}{\mu}}+\sum_{j=1}^{2}e^{\frac{a_j-p_j}{\mu}}}$

logit_duopoly(costs, qualities, outside_quality, mu, algorithm, seed, plot, shock, ...)
  • outside_quality Quality of the outside good ($a_0$)
  • mu Horizontal differentiation parameter

hotelling_duopoly

Duopoly implementation of hotelling demand from utility $U_{ij} = a_i - p_i - \theta | x_j - k_i |$

hotelling_duopoly(costs, qualities, theta, algorithm, seed, plot, shock, ...)
  • theta Horizontal differentiation parameter

linear_duopoly

Duopoly implementation of a linear inverse demand function $p_i = a_i - bq_i - dq_j$

linear_duopoly(costs, qualities, b, d, algorithm, seed, plot, shock, ...)
  • b Own quantity effect
  • d Cross quantity effect

Multi-firm Simulation

Implementation of the PSO algorithm for logit demand with $N$ firms $s_i = \frac{e^{\frac{a_i-p_i}{\mu}}}{e^{\frac{a_0}{\mu}}+\sum_{j=1}^{N}e^{\frac{a_j-p_j}{\mu}}}$

logit_pso(costs, qualities, outside_quality, mu, num_firms, shock, seed, plot, ...)

The arguments are as in logit_duopoly(), with the addition of num_firms

Examples

logit_duopoly

logit_duopoly([1,1], [2,2], 0, 0.25, 'q', 456, True, True, grid_lower_bound = 1.45, grid_upper_bound = 1.95)
Output:
Firm 1 Q-learning: 1.7357, Nash: 1.4729
Firm 2 Q-learning: 1.7714, Nash: 1.4729

alt text

hotelling_duopoly

hotelling_duopoly([1,1], [2,2], 1, 'pso', 1, False, False)
Output:
Firm 1 PSO: 2.0000, Nash: 2.0000
Firm 2 PSO: 2.0000, Nash: 2.0000

linear_duopoly

linear_duopoly([1,2], [1.5,3], 1, 0.85, 'pso', 1, False, True)
Output:
Firm 1 PSO: 0.9355, Nash: 0.9355
Firm 2 PSO: 2.2601, Nash: 2.2601

logit_pso

logit_pso([1,1,1,1], [2,2,2,2], 0, 0.01, 4, True, 1, True)
Output:
Firm 1 PSO: 1.2133, Nash: 1.0133
Firm 2 PSO: 1.2133, Nash: 1.0133
Firm 3 PSO: 1.2133, Nash: 1.0133
Firm 4 PSO: 1.2133, Nash: 1.0133

alt text

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

algocomp-0.1.0.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

algocomp-0.1.0-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file algocomp-0.1.0.tar.gz.

File metadata

  • Download URL: algocomp-0.1.0.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for algocomp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0edce89cd1e138d61299dcb5177c73b038d818fa73304ab5b6dd9701a3403e06
MD5 d87a0c4d6f03bb6ea5bbeb0c8a61f185
BLAKE2b-256 e17ea39582969f9a5669e101fddfbfa3e0b841f7131956896b6f9fd820752c32

See more details on using hashes here.

File details

Details for the file algocomp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: algocomp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.5

File hashes

Hashes for algocomp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 178000e00286bc56303da992ff6cc56a75618e79d15c246b9cd786e9b96ba223
MD5 61d5f77c0156e76246b0ddcfd05796e0
BLAKE2b-256 f5750b7c085b995b30ba732be902539a1765addf75b1e38b0ce472f0b59c2b1f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page