def common_index(self): all_indices = [data_item.index for data_item in self] all_indices_flattened = flatten_list(all_indices) common_unique_index = list(set(all_indices_flattened)) common_unique_index.sort() return common_unique_index
def common_columns(self): all_columns = [data_item.columns for data_item in self] all_columns_flattened = flatten_list(all_columns) common_unique_columns = list(set(all_columns_flattened)) common_unique_columns.sort() return common_unique_columns
def as_df(self): instrument_codes = [ instrument_object.instrument_code for instrument_object in self ] meta_data_keys = [ instrument_object.meta_data.as_dict().keys() for instrument_object in self ] meta_data_keys_flattened = flatten_list(meta_data_keys) meta_data_keys_unique = list(set(meta_data_keys_flattened)) meta_data_as_lists = dict( [ ( metadata_name, [ getattr(instrument_object.meta_data, metadata_name) for instrument_object in self ], ) for metadata_name in meta_data_keys_unique ] ) meta_data_as_dataframe = pd.DataFrame( meta_data_as_lists, index=instrument_codes ) return meta_data_as_dataframe
def _get_average_return_in_dict_for_column(returns_dict: dictOfReturnsForOptimisation, column: str) -> float: ## all daily data so can take an average series_of_returns = [returns_series[column].values for returns_series in returns_dict.values()] all_returns = flatten_list(series_of_returns) return np.nanmean(all_returns)
def _calculate_pseudo_fills(self) -> list: list_of_years_in_data = years_in_data(self.positions) fills_by_year = [ self._pseudo_fills_for_year(year) for year in list_of_years_in_data ] fills_as_single_list = flatten_list(fills_by_year) return fills_as_single_list
def assets_with_missing_data(self) -> list: missing_correlations = self.correlation.assets_with_missing_data() missing_means = self.correlation.assets_with_missing_data() missing_stdev = self.stdev.assets_with_missing_data() missing_assets = list( set(flatten_list([missing_stdev, missing_means, missing_correlations])) ) return missing_assets
def from_list_of_subportfolios(portfolioWeights, list_of_portfolio_weights): list_of_unique_asset_names = \ list(set(flatten_list([list(subportfolio.keys()) for subportfolio in list_of_portfolio_weights]))) portfolio_weights = portfolioWeights.allzeros( list_of_unique_asset_names) for subportfolio_weights in list_of_portfolio_weights: for asset_name in list(subportfolio_weights.keys()): portfolio_weights[asset_name] = portfolio_weights[ asset_name] + subportfolio_weights[asset_name] return portfolio_weights
def assets_in_cluster_order(corr_matrix: correlationEstimate, cluster_size: int = 2): clusters_as_names = cluster_correlation_matrix(corr_matrix, cluster_size=cluster_size) return flatten_list(clusters_as_names)