AnomalyLab 0.2.4__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. {anomalylab-0.2.4 → anomalylab-0.2.6/AnomalyLab.egg-info}/PKG-INFO +1 -1
  2. {anomalylab-0.2.4/AnomalyLab.egg-info → anomalylab-0.2.6}/PKG-INFO +1 -1
  3. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/fm_regression.py +7 -6
  4. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/structure/panel_data.py +8 -3
  5. {anomalylab-0.2.4 → anomalylab-0.2.6}/setup.py +1 -1
  6. {anomalylab-0.2.4 → anomalylab-0.2.6}/.gitattributes +0 -0
  7. {anomalylab-0.2.4 → anomalylab-0.2.6}/.github/workflows/python-publish.yml +0 -0
  8. {anomalylab-0.2.4 → anomalylab-0.2.6}/.gitignore +0 -0
  9. {anomalylab-0.2.4 → anomalylab-0.2.6}/AnomalyLab.egg-info/SOURCES.txt +0 -0
  10. {anomalylab-0.2.4 → anomalylab-0.2.6}/AnomalyLab.egg-info/dependency_links.txt +0 -0
  11. {anomalylab-0.2.4 → anomalylab-0.2.6}/AnomalyLab.egg-info/requires.txt +0 -0
  12. {anomalylab-0.2.4 → anomalylab-0.2.6}/AnomalyLab.egg-info/top_level.txt +0 -0
  13. {anomalylab-0.2.4 → anomalylab-0.2.6}/LICENSE +0 -0
  14. {anomalylab-0.2.4 → anomalylab-0.2.6}/MANIFEST.in +0 -0
  15. {anomalylab-0.2.4 → anomalylab-0.2.6}/README.md +0 -0
  16. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/__init__.py +0 -0
  17. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/config.py +0 -0
  18. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/core/__init__.py +0 -0
  19. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/core/core.py +0 -0
  20. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/datasets/__init__.py +0 -0
  21. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/datasets/dataset.py +0 -0
  22. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/datasets/panel_data.csv +0 -0
  23. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/datasets/time_series_data.csv +0 -0
  24. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/datasets/transition_matrix.png +0 -0
  25. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/__init__.py +0 -0
  26. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/correlation.py +0 -0
  27. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/empirical.py +0 -0
  28. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/persistence.py +0 -0
  29. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/portfolio.py +0 -0
  30. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/empirical/summary.py +0 -0
  31. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/__init__.py +0 -0
  32. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/fillna.py +0 -0
  33. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/normalize.py +0 -0
  34. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/outliers.py +0 -0
  35. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/preprocessor.py +0 -0
  36. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/shift.py +0 -0
  37. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/preprocess/truncate.py +0 -0
  38. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/structure/__init__.py +0 -0
  39. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/structure/data.py +0 -0
  40. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/structure/time_series.py +0 -0
  41. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/utils/__init__.py +0 -0
  42. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/utils/imports.py +0 -0
  43. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/utils/utils.py +0 -0
  44. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/visualization/__init__.py +0 -0
  45. {anomalylab-0.2.4 → anomalylab-0.2.6}/anomalylab/visualization/format.py +0 -0
  46. {anomalylab-0.2.4 → anomalylab-0.2.6}/requirements.txt +0 -0
  47. {anomalylab-0.2.4 → anomalylab-0.2.6}/setup.cfg +0 -0
  48. {anomalylab-0.2.4 → anomalylab-0.2.6}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AnomalyLab
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: A Python package for empirical asset pricing analysis.
5
5
  Author: FinPhd
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: AnomalyLab
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: A Python package for empirical asset pricing analysis.
5
5
  Author: FinPhd
6
6
  Classifier: Programming Language :: Python :: 3
@@ -38,7 +38,8 @@ class FamaMacBethRegression(Empirical):
38
38
  OutlierHandler(panel_data=self.panel_data)
39
39
  .winsorize(
40
40
  columns=exog,
41
- process_all_characteristics=False,
41
+ method="winsorize",
42
+ group_columns=self.panel_data.time,
42
43
  )
43
44
  .panel_data
44
45
  )
@@ -317,10 +318,10 @@ if __name__ == "__main__":
317
318
  # exog="MktCap",
318
319
  exog_order=["MktCap"],
319
320
  regs=[
320
- "return",
321
- "MktCap",
322
- # ["return", "Illiq"],
323
- # ["return", "IdioVol"],
321
+ # "return",
322
+ # "MktCap",
323
+ ["return", "Illiq"],
324
+ ["return", "IdioVol"],
324
325
  # ["return", "MktCap", "Illiq", "IdioVol"],
325
326
  ],
326
327
  # models=[
@@ -332,7 +333,7 @@ if __name__ == "__main__":
332
333
  industry="industry",
333
334
  industry_weighed_method="value",
334
335
  weight="MktCap",
335
- # is_winsorize=True,
336
+ is_winsorize=True,
336
337
  is_normalize=True,
337
338
  # decimal=2,
338
339
  )
@@ -61,12 +61,15 @@ class PanelData(Data):
61
61
  self.df[self.time] = pd.to_datetime(self.df[self.time], format="ISO8601")
62
62
  self.df[self.time] = self.df[self.time].dt.to_period(freq=self.frequency)
63
63
  self.df = self.df.sort_values(by=[self.time, self.id])
64
+ basic_column = (
65
+ [self.id, self.time] if self.ret is None else [self.id, self.time, self.ret]
66
+ )
64
67
  # Identify remaining columns and set them as firm characteristics, excluding classifications
65
68
  self.firm_characteristics: set[str] = set(
66
69
  filter(
67
70
  lambda x: (
68
71
  x
69
- not in [self.id, self.time, self.ret]
72
+ not in basic_column
70
73
  + (
71
74
  self.classifications
72
75
  if isinstance(self.classifications, list)
@@ -111,9 +114,10 @@ class PanelData(Data):
111
114
  if isinstance(self.classifications, str):
112
115
  self.classifications = [self.classifications]
113
116
  # Check if the required columns are present in the DataFrame
114
- required_columns: set[str] = set(
115
- [self.id, self.time, self.ret] + (self.classifications or [])
117
+ basic_column = (
118
+ [self.id, self.time] if self.ret is None else [self.id, self.time, self.ret]
116
119
  )
120
+ required_columns: set[str] = set(basic_column + (self.classifications or []))
117
121
  missing_columns: set[str] = required_columns - set(self.df.columns)
118
122
  if missing_columns:
119
123
  raise ValueError(f"Missing columns in the DataFrame: {missing_columns}")
@@ -201,6 +205,7 @@ if __name__ == "__main__":
201
205
  name="Stocks",
202
206
  id="permno",
203
207
  time="date",
208
+ ret="return",
204
209
  classifications="industry",
205
210
  drop_all_chars_missing=True,
206
211
  )
@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
2
2
 
3
3
  setup(
4
4
  name="AnomalyLab",
5
- version="0.2.4",
5
+ version="0.2.6",
6
6
  author="FinPhd",
7
7
  # author_email="your.email@example.com",
8
8
  description="A Python package for empirical asset pricing analysis.",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes