Source code for kaxanuk.attribution_analysis.entities.strategy_weights

import dataclasses
import pandas as pd
# from pandas import DataFrame
# from kaxanuk.attribution_analysis.exceptions import ReturnsTimeSeriesError

[docs] @dataclasses.dataclass(slots=True, init=True) # frozen=True, class DailyWeights: file_route: str file_extension: str = '.csv' data: pd.DataFrame = None # daily_weights: DataFrame def __init__( self, file_route: str, file_extension: str ): self.file_route = file_route self.file_extension = file_extension if self.file_extension == '.csv': data = self.read_csv() self.data = data # def __post_init__(self): # if not isinstance(self.daily_weights, DataFrame): # raise ReturnsTimeSeriesError("PortfolioDailyWeights must be a pandas DataFrame")
[docs] def read_csv(self) -> pd.DataFrame: """ Reads the CSV file and returns a DataFrame. Returns ------- DataFrame The data read from the CSV file. """ data = pd.read_csv( self.file_route, index_col = 0, ).T try: data.index = pd.to_datetime(data.index) except (ValueError, TypeError): data.index = pd.to_datetime(data.index, format='%d/%m/%Y') return data