Module pyfx.pricingscience.elasticity
Functions and utilities for elasticity.
Functions
def elasticity(prices: Union[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[Union[bool, int, float, complex, str, bytes]]], quantities: Union[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]], numpy._typing._nested_sequence._NestedSequence[numpy._typing._array_like._SupportsArray[numpy.dtype[Any]]], bool, int, float, complex, str, bytes, numpy._typing._nested_sequence._NestedSequence[Union[bool, int, float, complex, str, bytes]]], elasticity_func: Callable[..., numpy.ndarray[Any, numpy.dtype[numpy.float64]]] = <function logistic_curve>, log_price: bool = True, log_quantity: bool = True, curve_fit_parameters: Optional[dict[str, typing.Any]] = None, starting_point: Optional[list[typing.Any]] = None) ‑> tuple[numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]], pandas.core.frame.DataFrame]
-
Fit the elasticity function parameters for the given data.
By default the elasticity function used is the logistic curve (S-curve).
This function uses
scipy.optimize.curve_fit
. If the elasticity function used is supported, some default curve_fit parameters and starting point will be used. Those can be overrided using the corresponding optional arguments of the function.Args
prices
- the prices data
quantities
- the corresponding quantities levels
elasticity_func
- the elasticity function to used (default:
logistic_curve()
) log_price
- should the prices be converted to log-base (default: True)
log_quantity
- should the demands be converted to log-base (default: True)
curve_fit_parameters
- optional parameters for the curve fitting (default: None)
starting_point
- optional starting for the curve fitting (default: None)
Returns
A tuple containing: - an array with the fitted function parameter value - a DataFrame with the price, quantity, and computed quantity
def logistic_curve(x: numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]], max_value: float, x0: float, k: float, b: float) ‑> numpy.ndarray[typing.Any, numpy.dtype[numpy.float64]]
-
Implementation of the logistic curve function (or S-curve).
Args
x
- the x value(s)
max_value
:also called L
- the supremum of the value of the functions
x0
- the x value of the function's midpoint
k
- the logistic growth rate
b
- a constant shift value
Returns
The computed y value(s)