qfinbox

qfinbox: A Python library for quantitative finance.

qfinbox provides tools for risk management, portfolio optimization, and financial modeling. It enables easy simulation of market scenarios and investment strategy optimization, enhancing financial analysis and decision-making.

Functions

calculate_annualized_return(returns[, frequency])

Calculate annualized return from a series of returns.

calculate_annualized_volatility(returns[, ...])

Calculate annualized volatility from a series of returns.

ensure_1d(data)

Ensure data is a 1D numpy array.

ensure_2d(data)

Ensure data is a 2D numpy array.

to_numpy(data)

Convert data to numpy array.

validate_positive(value[, name])

Validate that a value is positive.

validate_returns(returns)

Validate return data.

validate_weights(weights)

Validate portfolio weights.

Exceptions

CalculationError

Raised when mathematical calculations fail.

DataError

Raised when there are issues with data processing.

QFinBoxError

Base exception for qfinbox.

ValidationError

Raised when input validation fails.

exception qfinbox.CalculationError[source]

Raised when mathematical calculations fail.

exception qfinbox.DataError[source]

Raised when there are issues with data processing.

exception qfinbox.QFinBoxError[source]

Base exception for qfinbox.

exception qfinbox.ValidationError[source]

Raised when input validation fails.

qfinbox.calculate_annualized_return(returns: ndarray, frequency: int = 252) float[source]

Calculate annualized return from a series of returns.

Parameters:
  • returns (np.ndarray) – Array of returns.

  • frequency (int, default 252) – Number of periods per year (252 for daily, 12 for monthly).

Returns:

Annualized return.

Return type:

float

qfinbox.calculate_annualized_volatility(returns: ndarray, frequency: int = 252) float[source]

Calculate annualized volatility from a series of returns.

Parameters:
  • returns (np.ndarray) – Array of returns.

  • frequency (int, default 252) – Number of periods per year (252 for daily, 12 for monthly).

Returns:

Annualized volatility.

Return type:

float

qfinbox.ensure_1d(data: ndarray | Series | list) ndarray[source]

Ensure data is a 1D numpy array.

Parameters:

data (array-like) – Data to convert.

Returns:

1D numpy array.

Return type:

np.ndarray

Raises:

ValueError – If data cannot be converted to 1D array.

qfinbox.ensure_2d(data: ndarray | DataFrame | list) ndarray[source]

Ensure data is a 2D numpy array.

Parameters:

data (array-like) – Data to convert.

Returns:

2D numpy array.

Return type:

np.ndarray

qfinbox.to_numpy(data: ndarray | Series | DataFrame | list) ndarray[source]

Convert data to numpy array.

Parameters:

data (array-like) – Data to convert.

Returns:

Data as numpy array.

Return type:

np.ndarray

qfinbox.validate_positive(value: float, name: str = 'value') float[source]

Validate that a value is positive.

Parameters:
  • value (float) – Value to validate.

  • name (str, default "value") – Name of the parameter for error messages.

Returns:

The validated value.

Return type:

float

Raises:

ValidationError – If value is not positive.

qfinbox.validate_returns(returns: ndarray | Series | DataFrame) ndarray[source]

Validate return data.

Parameters:

returns (array-like) – Return data to validate.

Returns:

Validated returns as numpy array.

Return type:

np.ndarray

Raises:

ValidationError – If returns are invalid.

qfinbox.validate_weights(weights: ndarray | Series | list) ndarray[source]

Validate portfolio weights.

Parameters:

weights (array-like) – Portfolio weights to validate.

Returns:

Validated weights as numpy array.

Return type:

np.ndarray

Raises:

ValidationError – If weights are invalid.