コード例 #1
0
    def adjusted_returns(self):
        index_prices = PriceTable.head(self.lookback).loc[:, [self.index]]
        index_returns = daily_returns(index_prices)

        adj_returns = (1 + self.daily_returns[self.stock]) / (
            1 + index_returns[self.index] * self.beta) - 1
        adj_returns.name = self.adjusted_returns_df_column_name
        return adj_returns.to_frame()
コード例 #2
0
 def base_price(self):
     if self.base == self.stock:
         return self.price_table.tail(1)[self.stock].iloc[0]
     elif type(self.base) is str:
         return PriceTable.head(self.lookback).tail(1)[self.base].iloc[0]
     elif type(self.base) == float or type(self.base == int):
         return self.base
     else:
         raise ValueError
コード例 #3
0
    def __init__(self, stock: 'str', lookback: 'int', base=None):
        self.stock = stock
        self.lookback = lookback
        if base is None:
            self.base = self.stock
        else:
            self.base = base

        self.price_table = PriceTable.head(self.lookback)[[self.stock]]
        self.daily_returns = daily_returns(self.price_table).head(
            self.lookback)
コード例 #4
0
    def __init__(self, stock: 'str', index: 'str', lookback: 'int',
                 scrub_params: 'obj'):
        """The Beta object takes as parameters the stock, index, lookback, and scrubparams object"""
        self.stock = stock
        self.index = index
        self.lookback = lookback
        self.scrub_params = scrub_params

        self.price_table = PriceTable.head(
            self.lookback)[[self.stock, self.index]]
        self.daily_returns = daily_returns(self.price_table)
        self.num_data_points = self.daily_returns.shape[0]
コード例 #5
0
    def __init__(
            self,
            stock: 'str',
            index: 'str',
            lookback: 'int' = 252,
            scrub_params: 'obj' = None,

            # Optional Parameters as an alternative to entering scrub_params
            stock_ceiling_params=DEFAULT_STOCK_CEILING_PARAMS,
            index_floor_params=DEFAULT_INDEX_FLOOR_PARAMS,
            best_fit_param=BEST_FIT_PERCENTILE):
        """The Beta object takes as parameters the stock, index, lookback, and scrub_params object.
           The user can enter scrub_params OR a set of stock_ceiling_params, index_floor_params, and best_fit_param
           , which map to scrub_params."""
        """Calculate the adjusted beta_value measurement for the stock and index over a lookback...
           based on the three core adjustments:
            - Stock Ceiling: Scrub data points where the stock moved more than the specified threshold.
            - Index Floor: Scrub data points where the index moved less than the specified threshold.
            - Best Fit Param: Keep only the n-percentile best fit points in the OLS regression
        """

        self.stock = stock
        self.index = index
        self.lookback = lookback

        if scrub_params is None:
            self.scrub_params = get_scrub_params(
                stock,
                index,
                lookback=252,
                stock_ceiling_params=DEFAULT_STOCK_CEILING_PARAMS,
                index_floor_params=DEFAULT_INDEX_FLOOR_PARAMS,
                best_fit_param=BEST_FIT_PERCENTILE)

        else:
            self.scrub_params = scrub_params

        self.price_table = PriceTable.head(
            self.lookback)[[self.stock, self.index]]
        self.daily_returns = daily_returns(self.price_table)
        self.num_data_points = self.daily_returns.shape[0]