# coding: utf-8

"""
    Hydrogen Proton API

    Financial engineering module of Hydrogen Atom  # noqa: E501

    OpenAPI spec version: 1.9.1
    Contact: info@hydrogenplatform.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from proton_api.configuration import Configuration


class PerformanceCalculatorRequest(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'annualized_return_period': 'str',
        'risk_free_alpha': 'float',
        'allocation_id': 'str',
        'mean_percentile_monte_carlo': 'float',
        'model_id': 'str',
        'mar_downside_deviation': 'float',
        'risk_free_sharpe': 'float',
        'benchmark_id': 'str',
        'risk_free_sortino': 'float',
        'household_id': 'str',
        'min_percentile_monte_carlo': 'float',
        'moving_average_n_day': 'int',
        'active_premium_period': 'str',
        'stat_name': 'str',
        'end_date': 'date',
        'start_date': 'date',
        'n_day_returns': 'int',
        'var_conf_interval': 'float',
        'period_type': 'str',
        'risk_free_treynor': 'float',
        'n_rolling_max_drawdown': 'int',
        'portfolio_id': 'str',
        'num_sim_monte_carlo': 'int',
        'goal_id': 'str',
        'account_id': 'str',
        'security_id': 'str',
        'n_path_monte_carlo': 'int',
        'client_id': 'str',
        'n_rolling_volatility': 'int',
        'hist_factor': 'float',
        'max_percentile_monte_carlo': 'float'
    }

    attribute_map = {
        'annualized_return_period': 'annualized_return_period',
        'risk_free_alpha': 'risk_free_alpha',
        'allocation_id': 'allocation_id',
        'mean_percentile_monte_carlo': 'mean_percentile_monte_carlo',
        'model_id': 'model_id',
        'mar_downside_deviation': 'mar_downside_deviation',
        'risk_free_sharpe': 'risk_free_sharpe',
        'benchmark_id': 'benchmark_id',
        'risk_free_sortino': 'risk_free_sortino',
        'household_id': 'household_id',
        'min_percentile_monte_carlo': 'min_percentile_monte_carlo',
        'moving_average_n_day': 'moving_average_n_day',
        'active_premium_period': 'active_premium_period',
        'stat_name': 'stat_name',
        'end_date': 'end_date',
        'start_date': 'start_date',
        'n_day_returns': 'n_day_returns',
        'var_conf_interval': 'var_conf_interval',
        'period_type': 'period_type',
        'risk_free_treynor': 'risk_free_treynor',
        'n_rolling_max_drawdown': 'n_rolling_max_drawdown',
        'portfolio_id': 'portfolio_id',
        'num_sim_monte_carlo': 'num_sim_monte_carlo',
        'goal_id': 'goal_id',
        'account_id': 'account_id',
        'security_id': 'security_id',
        'n_path_monte_carlo': 'n_path_monte_carlo',
        'client_id': 'client_id',
        'n_rolling_volatility': 'n_rolling_volatility',
        'hist_factor': 'hist_factor',
        'max_percentile_monte_carlo': 'max_percentile_monte_carlo'
    }

    def __init__(self, annualized_return_period='D', risk_free_alpha=0.0, allocation_id=None, mean_percentile_monte_carlo=50.0, model_id=None, mar_downside_deviation=0.0, risk_free_sharpe=0.0, benchmark_id=None, risk_free_sortino=0.0, household_id=None, min_percentile_monte_carlo=20.0, moving_average_n_day=7, active_premium_period='D', stat_name=None, end_date=None, start_date=None, n_day_returns=7, var_conf_interval=95.0, period_type='D', risk_free_treynor=0.0, n_rolling_max_drawdown=7, portfolio_id=None, num_sim_monte_carlo=1000, goal_id=None, account_id=None, security_id=None, n_path_monte_carlo=100, client_id=None, n_rolling_volatility=7, hist_factor=5.0, max_percentile_monte_carlo=80.0, _configuration=None):  # noqa: E501
        """PerformanceCalculatorRequest - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._annualized_return_period = None
        self._risk_free_alpha = None
        self._allocation_id = None
        self._mean_percentile_monte_carlo = None
        self._model_id = None
        self._mar_downside_deviation = None
        self._risk_free_sharpe = None
        self._benchmark_id = None
        self._risk_free_sortino = None
        self._household_id = None
        self._min_percentile_monte_carlo = None
        self._moving_average_n_day = None
        self._active_premium_period = None
        self._stat_name = None
        self._end_date = None
        self._start_date = None
        self._n_day_returns = None
        self._var_conf_interval = None
        self._period_type = None
        self._risk_free_treynor = None
        self._n_rolling_max_drawdown = None
        self._portfolio_id = None
        self._num_sim_monte_carlo = None
        self._goal_id = None
        self._account_id = None
        self._security_id = None
        self._n_path_monte_carlo = None
        self._client_id = None
        self._n_rolling_volatility = None
        self._hist_factor = None
        self._max_percentile_monte_carlo = None
        self.discriminator = None

        if annualized_return_period is not None:
            self.annualized_return_period = annualized_return_period
        if risk_free_alpha is not None:
            self.risk_free_alpha = risk_free_alpha
        if allocation_id is not None:
            self.allocation_id = allocation_id
        if mean_percentile_monte_carlo is not None:
            self.mean_percentile_monte_carlo = mean_percentile_monte_carlo
        if model_id is not None:
            self.model_id = model_id
        if mar_downside_deviation is not None:
            self.mar_downside_deviation = mar_downside_deviation
        if risk_free_sharpe is not None:
            self.risk_free_sharpe = risk_free_sharpe
        if benchmark_id is not None:
            self.benchmark_id = benchmark_id
        if risk_free_sortino is not None:
            self.risk_free_sortino = risk_free_sortino
        if household_id is not None:
            self.household_id = household_id
        if min_percentile_monte_carlo is not None:
            self.min_percentile_monte_carlo = min_percentile_monte_carlo
        if moving_average_n_day is not None:
            self.moving_average_n_day = moving_average_n_day
        if active_premium_period is not None:
            self.active_premium_period = active_premium_period
        self.stat_name = stat_name
        if end_date is not None:
            self.end_date = end_date
        if start_date is not None:
            self.start_date = start_date
        if n_day_returns is not None:
            self.n_day_returns = n_day_returns
        if var_conf_interval is not None:
            self.var_conf_interval = var_conf_interval
        if period_type is not None:
            self.period_type = period_type
        if risk_free_treynor is not None:
            self.risk_free_treynor = risk_free_treynor
        if n_rolling_max_drawdown is not None:
            self.n_rolling_max_drawdown = n_rolling_max_drawdown
        if portfolio_id is not None:
            self.portfolio_id = portfolio_id
        if num_sim_monte_carlo is not None:
            self.num_sim_monte_carlo = num_sim_monte_carlo
        if goal_id is not None:
            self.goal_id = goal_id
        if account_id is not None:
            self.account_id = account_id
        if security_id is not None:
            self.security_id = security_id
        if n_path_monte_carlo is not None:
            self.n_path_monte_carlo = n_path_monte_carlo
        if client_id is not None:
            self.client_id = client_id
        if n_rolling_volatility is not None:
            self.n_rolling_volatility = n_rolling_volatility
        if hist_factor is not None:
            self.hist_factor = hist_factor
        if max_percentile_monte_carlo is not None:
            self.max_percentile_monte_carlo = max_percentile_monte_carlo

    @property
    def annualized_return_period(self):
        """Gets the annualized_return_period of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The annualized_return_period of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._annualized_return_period

    @annualized_return_period.setter
    def annualized_return_period(self, annualized_return_period):
        """Sets the annualized_return_period of this PerformanceCalculatorRequest.


        :param annualized_return_period: The annualized_return_period of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """
        allowed_values = ["Y", "Q", "M", "D"]  # noqa: E501
        if (self._configuration.client_side_validation and
                annualized_return_period not in allowed_values):
            raise ValueError(
                "Invalid value for `annualized_return_period` ({0}), must be one of {1}"  # noqa: E501
                .format(annualized_return_period, allowed_values)
            )

        self._annualized_return_period = annualized_return_period

    @property
    def risk_free_alpha(self):
        """Gets the risk_free_alpha of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The risk_free_alpha of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._risk_free_alpha

    @risk_free_alpha.setter
    def risk_free_alpha(self, risk_free_alpha):
        """Sets the risk_free_alpha of this PerformanceCalculatorRequest.


        :param risk_free_alpha: The risk_free_alpha of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._risk_free_alpha = risk_free_alpha

    @property
    def allocation_id(self):
        """Gets the allocation_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The allocation_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._allocation_id

    @allocation_id.setter
    def allocation_id(self, allocation_id):
        """Sets the allocation_id of this PerformanceCalculatorRequest.


        :param allocation_id: The allocation_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._allocation_id = allocation_id

    @property
    def mean_percentile_monte_carlo(self):
        """Gets the mean_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The mean_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._mean_percentile_monte_carlo

    @mean_percentile_monte_carlo.setter
    def mean_percentile_monte_carlo(self, mean_percentile_monte_carlo):
        """Sets the mean_percentile_monte_carlo of this PerformanceCalculatorRequest.


        :param mean_percentile_monte_carlo: The mean_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                mean_percentile_monte_carlo is not None and mean_percentile_monte_carlo < 0):  # noqa: E501
            raise ValueError("Invalid value for `mean_percentile_monte_carlo`, must be a value greater than or equal to `0`")  # noqa: E501

        self._mean_percentile_monte_carlo = mean_percentile_monte_carlo

    @property
    def model_id(self):
        """Gets the model_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The model_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._model_id

    @model_id.setter
    def model_id(self, model_id):
        """Sets the model_id of this PerformanceCalculatorRequest.


        :param model_id: The model_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._model_id = model_id

    @property
    def mar_downside_deviation(self):
        """Gets the mar_downside_deviation of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The mar_downside_deviation of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._mar_downside_deviation

    @mar_downside_deviation.setter
    def mar_downside_deviation(self, mar_downside_deviation):
        """Sets the mar_downside_deviation of this PerformanceCalculatorRequest.


        :param mar_downside_deviation: The mar_downside_deviation of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._mar_downside_deviation = mar_downside_deviation

    @property
    def risk_free_sharpe(self):
        """Gets the risk_free_sharpe of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The risk_free_sharpe of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._risk_free_sharpe

    @risk_free_sharpe.setter
    def risk_free_sharpe(self, risk_free_sharpe):
        """Sets the risk_free_sharpe of this PerformanceCalculatorRequest.


        :param risk_free_sharpe: The risk_free_sharpe of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._risk_free_sharpe = risk_free_sharpe

    @property
    def benchmark_id(self):
        """Gets the benchmark_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The benchmark_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._benchmark_id

    @benchmark_id.setter
    def benchmark_id(self, benchmark_id):
        """Sets the benchmark_id of this PerformanceCalculatorRequest.


        :param benchmark_id: The benchmark_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._benchmark_id = benchmark_id

    @property
    def risk_free_sortino(self):
        """Gets the risk_free_sortino of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The risk_free_sortino of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._risk_free_sortino

    @risk_free_sortino.setter
    def risk_free_sortino(self, risk_free_sortino):
        """Sets the risk_free_sortino of this PerformanceCalculatorRequest.


        :param risk_free_sortino: The risk_free_sortino of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._risk_free_sortino = risk_free_sortino

    @property
    def household_id(self):
        """Gets the household_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The household_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._household_id

    @household_id.setter
    def household_id(self, household_id):
        """Sets the household_id of this PerformanceCalculatorRequest.


        :param household_id: The household_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._household_id = household_id

    @property
    def min_percentile_monte_carlo(self):
        """Gets the min_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The min_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._min_percentile_monte_carlo

    @min_percentile_monte_carlo.setter
    def min_percentile_monte_carlo(self, min_percentile_monte_carlo):
        """Sets the min_percentile_monte_carlo of this PerformanceCalculatorRequest.


        :param min_percentile_monte_carlo: The min_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                min_percentile_monte_carlo is not None and min_percentile_monte_carlo < 0):  # noqa: E501
            raise ValueError("Invalid value for `min_percentile_monte_carlo`, must be a value greater than or equal to `0`")  # noqa: E501

        self._min_percentile_monte_carlo = min_percentile_monte_carlo

    @property
    def moving_average_n_day(self):
        """Gets the moving_average_n_day of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The moving_average_n_day of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._moving_average_n_day

    @moving_average_n_day.setter
    def moving_average_n_day(self, moving_average_n_day):
        """Sets the moving_average_n_day of this PerformanceCalculatorRequest.


        :param moving_average_n_day: The moving_average_n_day of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                moving_average_n_day is not None and moving_average_n_day < 1):  # noqa: E501
            raise ValueError("Invalid value for `moving_average_n_day`, must be a value greater than or equal to `1`")  # noqa: E501

        self._moving_average_n_day = moving_average_n_day

    @property
    def active_premium_period(self):
        """Gets the active_premium_period of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The active_premium_period of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._active_premium_period

    @active_premium_period.setter
    def active_premium_period(self, active_premium_period):
        """Sets the active_premium_period of this PerformanceCalculatorRequest.


        :param active_premium_period: The active_premium_period of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """
        allowed_values = ["Y", "Q", "M", "D"]  # noqa: E501
        if (self._configuration.client_side_validation and
                active_premium_period not in allowed_values):
            raise ValueError(
                "Invalid value for `active_premium_period` ({0}), must be one of {1}"  # noqa: E501
                .format(active_premium_period, allowed_values)
            )

        self._active_premium_period = active_premium_period

    @property
    def stat_name(self):
        """Gets the stat_name of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The stat_name of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._stat_name

    @stat_name.setter
    def stat_name(self, stat_name):
        """Sets the stat_name of this PerformanceCalculatorRequest.


        :param stat_name: The stat_name of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """
        if self._configuration.client_side_validation and stat_name is None:
            raise ValueError("Invalid value for `stat_name`, must not be `None`")  # noqa: E501

        self._stat_name = stat_name

    @property
    def end_date(self):
        """Gets the end_date of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The end_date of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: date
        """
        return self._end_date

    @end_date.setter
    def end_date(self, end_date):
        """Sets the end_date of this PerformanceCalculatorRequest.


        :param end_date: The end_date of this PerformanceCalculatorRequest.  # noqa: E501
        :type: date
        """

        self._end_date = end_date

    @property
    def start_date(self):
        """Gets the start_date of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The start_date of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: date
        """
        return self._start_date

    @start_date.setter
    def start_date(self, start_date):
        """Sets the start_date of this PerformanceCalculatorRequest.


        :param start_date: The start_date of this PerformanceCalculatorRequest.  # noqa: E501
        :type: date
        """

        self._start_date = start_date

    @property
    def n_day_returns(self):
        """Gets the n_day_returns of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The n_day_returns of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._n_day_returns

    @n_day_returns.setter
    def n_day_returns(self, n_day_returns):
        """Sets the n_day_returns of this PerformanceCalculatorRequest.


        :param n_day_returns: The n_day_returns of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                n_day_returns is not None and n_day_returns < 1):  # noqa: E501
            raise ValueError("Invalid value for `n_day_returns`, must be a value greater than or equal to `1`")  # noqa: E501

        self._n_day_returns = n_day_returns

    @property
    def var_conf_interval(self):
        """Gets the var_conf_interval of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The var_conf_interval of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._var_conf_interval

    @var_conf_interval.setter
    def var_conf_interval(self, var_conf_interval):
        """Sets the var_conf_interval of this PerformanceCalculatorRequest.


        :param var_conf_interval: The var_conf_interval of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._var_conf_interval = var_conf_interval

    @property
    def period_type(self):
        """Gets the period_type of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The period_type of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._period_type

    @period_type.setter
    def period_type(self, period_type):
        """Sets the period_type of this PerformanceCalculatorRequest.


        :param period_type: The period_type of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """
        allowed_values = ["Y", "Q", "M", "D"]  # noqa: E501
        if (self._configuration.client_side_validation and
                period_type not in allowed_values):
            raise ValueError(
                "Invalid value for `period_type` ({0}), must be one of {1}"  # noqa: E501
                .format(period_type, allowed_values)
            )

        self._period_type = period_type

    @property
    def risk_free_treynor(self):
        """Gets the risk_free_treynor of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The risk_free_treynor of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._risk_free_treynor

    @risk_free_treynor.setter
    def risk_free_treynor(self, risk_free_treynor):
        """Sets the risk_free_treynor of this PerformanceCalculatorRequest.


        :param risk_free_treynor: The risk_free_treynor of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._risk_free_treynor = risk_free_treynor

    @property
    def n_rolling_max_drawdown(self):
        """Gets the n_rolling_max_drawdown of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The n_rolling_max_drawdown of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._n_rolling_max_drawdown

    @n_rolling_max_drawdown.setter
    def n_rolling_max_drawdown(self, n_rolling_max_drawdown):
        """Sets the n_rolling_max_drawdown of this PerformanceCalculatorRequest.


        :param n_rolling_max_drawdown: The n_rolling_max_drawdown of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                n_rolling_max_drawdown is not None and n_rolling_max_drawdown < 1):  # noqa: E501
            raise ValueError("Invalid value for `n_rolling_max_drawdown`, must be a value greater than or equal to `1`")  # noqa: E501

        self._n_rolling_max_drawdown = n_rolling_max_drawdown

    @property
    def portfolio_id(self):
        """Gets the portfolio_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The portfolio_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._portfolio_id

    @portfolio_id.setter
    def portfolio_id(self, portfolio_id):
        """Sets the portfolio_id of this PerformanceCalculatorRequest.


        :param portfolio_id: The portfolio_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._portfolio_id = portfolio_id

    @property
    def num_sim_monte_carlo(self):
        """Gets the num_sim_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The num_sim_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._num_sim_monte_carlo

    @num_sim_monte_carlo.setter
    def num_sim_monte_carlo(self, num_sim_monte_carlo):
        """Sets the num_sim_monte_carlo of this PerformanceCalculatorRequest.


        :param num_sim_monte_carlo: The num_sim_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                num_sim_monte_carlo is not None and num_sim_monte_carlo < 1):  # noqa: E501
            raise ValueError("Invalid value for `num_sim_monte_carlo`, must be a value greater than or equal to `1`")  # noqa: E501

        self._num_sim_monte_carlo = num_sim_monte_carlo

    @property
    def goal_id(self):
        """Gets the goal_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The goal_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._goal_id

    @goal_id.setter
    def goal_id(self, goal_id):
        """Sets the goal_id of this PerformanceCalculatorRequest.


        :param goal_id: The goal_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._goal_id = goal_id

    @property
    def account_id(self):
        """Gets the account_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The account_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._account_id

    @account_id.setter
    def account_id(self, account_id):
        """Sets the account_id of this PerformanceCalculatorRequest.


        :param account_id: The account_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._account_id = account_id

    @property
    def security_id(self):
        """Gets the security_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The security_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._security_id

    @security_id.setter
    def security_id(self, security_id):
        """Sets the security_id of this PerformanceCalculatorRequest.


        :param security_id: The security_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._security_id = security_id

    @property
    def n_path_monte_carlo(self):
        """Gets the n_path_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The n_path_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._n_path_monte_carlo

    @n_path_monte_carlo.setter
    def n_path_monte_carlo(self, n_path_monte_carlo):
        """Sets the n_path_monte_carlo of this PerformanceCalculatorRequest.


        :param n_path_monte_carlo: The n_path_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                n_path_monte_carlo is not None and n_path_monte_carlo < 1):  # noqa: E501
            raise ValueError("Invalid value for `n_path_monte_carlo`, must be a value greater than or equal to `1`")  # noqa: E501

        self._n_path_monte_carlo = n_path_monte_carlo

    @property
    def client_id(self):
        """Gets the client_id of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The client_id of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: str
        """
        return self._client_id

    @client_id.setter
    def client_id(self, client_id):
        """Sets the client_id of this PerformanceCalculatorRequest.


        :param client_id: The client_id of this PerformanceCalculatorRequest.  # noqa: E501
        :type: str
        """

        self._client_id = client_id

    @property
    def n_rolling_volatility(self):
        """Gets the n_rolling_volatility of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The n_rolling_volatility of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: int
        """
        return self._n_rolling_volatility

    @n_rolling_volatility.setter
    def n_rolling_volatility(self, n_rolling_volatility):
        """Sets the n_rolling_volatility of this PerformanceCalculatorRequest.


        :param n_rolling_volatility: The n_rolling_volatility of this PerformanceCalculatorRequest.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                n_rolling_volatility is not None and n_rolling_volatility < 1):  # noqa: E501
            raise ValueError("Invalid value for `n_rolling_volatility`, must be a value greater than or equal to `1`")  # noqa: E501

        self._n_rolling_volatility = n_rolling_volatility

    @property
    def hist_factor(self):
        """Gets the hist_factor of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The hist_factor of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._hist_factor

    @hist_factor.setter
    def hist_factor(self, hist_factor):
        """Sets the hist_factor of this PerformanceCalculatorRequest.


        :param hist_factor: The hist_factor of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """

        self._hist_factor = hist_factor

    @property
    def max_percentile_monte_carlo(self):
        """Gets the max_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501


        :return: The max_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :rtype: float
        """
        return self._max_percentile_monte_carlo

    @max_percentile_monte_carlo.setter
    def max_percentile_monte_carlo(self, max_percentile_monte_carlo):
        """Sets the max_percentile_monte_carlo of this PerformanceCalculatorRequest.


        :param max_percentile_monte_carlo: The max_percentile_monte_carlo of this PerformanceCalculatorRequest.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                max_percentile_monte_carlo is not None and max_percentile_monte_carlo < 0):  # noqa: E501
            raise ValueError("Invalid value for `max_percentile_monte_carlo`, must be a value greater than or equal to `0`")  # noqa: E501

        self._max_percentile_monte_carlo = max_percentile_monte_carlo

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(PerformanceCalculatorRequest, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, PerformanceCalculatorRequest):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, PerformanceCalculatorRequest):
            return True

        return self.to_dict() != other.to_dict()
