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-1.0.0.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for algocomp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7146f8ad56d353abc1927e455024cb2699c2c3c16c5b625b6722c7c831998d55
MD5 68a4bfdaa081902eda31565ad7d4ba5b
BLAKE2b-256 1448926fe1c4250d96f77074423d769c84bd12d4803af18424591112d1f5ba30

See more details on using hashes here.

File details

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

File metadata

  • Download URL: algocomp-1.0.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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb5ffe2c02a976d0c5e8d223335cef12b40c16baa025a0f68999a6e1db40d8a4
MD5 52030f713192ce1beb4e2e3ac907478b
BLAKE2b-256 ec23ad418e81f8b569ecafa7c74c38a24a5241cc973044afc3f62c09ecbc1db8

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