Random price generation
Project description
pricegen
This utility helps simulate statistically randomized series of prices, based on the models below:
- Geometric Brownian motion
- Mean reversion (optional)
Generating a next price
from pricegen import random_price
current_price = 100
next_price = random_price(current_price, sigma=0.20)
Generating a series of prices
from pricegen import random_price, generate_prices
initial_price = 100
# Daily prices over a year (252 trading days)
price = initial_price
for _ in range(252):
price = random_price(price, sigma=0.20, time=1.0/252)
print(price)
# Or equivalently:
for price in generate_prices(252, initial_price, sigma=0.20, time=1.0/252):
print(price)
Volatility and time interval
# These two calls are roughly equivalent
# Case 1:
random_price(price, sigma=0.20, time=1.0/252)
# Annual volatility: 20%
# Time interval: (1.0 / 252) year
# Case 2:
random_price(price, sigma=0.20/math.sqrt(252)) # time == 1.0 by default
# Daily volatility: 20% / sqrt(252)
# Time interval: 1.0 day
# Note:
# "time" represents the time interval relative to 1.0.
# "sigma" is interpreted as volatility for time == 1.0.
# Internally, there is no assumption about the unit of time (year/month/day).
Mean reversion
from pricegen import random_price
initial_price = 100
# Daily prices over a year (252 trading days)
price = initial_price
for _ in range(252):
price = random_price(price, sigma=0.20, time=1.0/252, mean=initial_price)
print(price)
# Mean reversion helps prevent the price from becoming too high or too low
# by attracting the price to a targe while maintaining a specific volatility.
Using a custom Random class
from pricegen import PriceGenerator
generator = PriceGenerator(random=custom_random)
# custom_random needs to have .gauss() method
generator.random_price(100, 0.20)
Ad-hoc random noise
from pricegen import random_price
random_price(100, 0.20, noise=custom_gauss(0.0, 1.0))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pricegen-0.0.1.tar.gz
(2.9 kB
view details)
Built Distribution
File details
Details for the file pricegen-0.0.1.tar.gz
.
File metadata
- Download URL: pricegen-0.0.1.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd563761dde31cf68e45f1da65f40ab8899adbf93608b6d415da4738e5abeb9e |
|
MD5 | eaced2f8a237e3500720de3d34dd4977 |
|
BLAKE2b-256 | ea51ffce608b3cad3b7bb1a37382efdb6d9d1722b0225c0803458299263f65fc |
File details
Details for the file pricegen-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: pricegen-0.0.1-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b542f97f5707a8d97e5837167e1b818265c3cb599ebb1496cdd1bf56a7d3c206 |
|
MD5 | ba91341cf6be368297cc5f8177476889 |
|
BLAKE2b-256 | ed604adad698e8359eb140bd6a4bbbce64e48b1e13e7a583b83e0752734835a4 |