bullishpy 0.29.0__tar.gz → 0.31.0__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.

Potentially problematic release.


This version of bullishpy might be problematic. Click here for more details.

Files changed (58) hide show
  1. {bullishpy-0.29.0 → bullishpy-0.31.0}/PKG-INFO +1 -1
  2. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/functions.py +3 -3
  3. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/predefined_filters.py +25 -19
  4. {bullishpy-0.29.0 → bullishpy-0.31.0}/pyproject.toml +1 -1
  5. {bullishpy-0.29.0 → bullishpy-0.31.0}/README.md +0 -0
  6. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/__init__.py +0 -0
  7. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/__init__.py +0 -0
  8. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/analysis.py +0 -0
  9. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/backtest.py +0 -0
  10. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/constants.py +0 -0
  11. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/filter.py +0 -0
  12. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/indicators.py +0 -0
  13. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/analysis/industry_views.py +0 -0
  14. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/app/__init__.py +0 -0
  15. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/app/app.py +0 -0
  16. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/cli.py +0 -0
  17. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/__init__.py +0 -0
  18. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/README +0 -0
  19. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/alembic.ini +0 -0
  20. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/env.py +0 -0
  21. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/script.py.mako +0 -0
  22. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/037dbd721317_.py +0 -0
  23. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/040b15fba458_.py +0 -0
  24. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/08ac1116e055_.py +0 -0
  25. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/11d35a452b40_.py +0 -0
  26. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/12889a2cbd7d_.py +0 -0
  27. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/17e51420e7ad_.py +0 -0
  28. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/49c83f9eb5ac_.py +0 -0
  29. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/4b0a2f40b7d3_.py +0 -0
  30. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/5b10ee7604c1_.py +0 -0
  31. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/6d252e23f543_.py +0 -0
  32. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/73564b60fe24_.py +0 -0
  33. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/79bc71ec6f9e_.py +0 -0
  34. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/b76079e9845f_.py +0 -0
  35. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/bf6b86dd5463_.py +0 -0
  36. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/d0e58e050845_.py +0 -0
  37. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/d663166c531d_.py +0 -0
  38. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/ec25c8fa449f_.py +0 -0
  39. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/ee5baabb35f8_.py +0 -0
  40. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/fc191121f522_.py +0 -0
  41. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/alembic/versions/ff0cc4ba40ec_.py +0 -0
  42. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/crud.py +0 -0
  43. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/schemas.py +0 -0
  44. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/scripts/create_revision.py +0 -0
  45. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/scripts/stamp.py +0 -0
  46. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/scripts/upgrade.py +0 -0
  47. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/database/settings.py +0 -0
  48. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/exceptions.py +0 -0
  49. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/figures/__init__.py +0 -0
  50. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/figures/figures.py +0 -0
  51. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/interface/__init__.py +0 -0
  52. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/interface/interface.py +0 -0
  53. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/jobs/__init__.py +0 -0
  54. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/jobs/app.py +0 -0
  55. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/jobs/models.py +0 -0
  56. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/jobs/tasks.py +0 -0
  57. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/utils/__init__.py +0 -0
  58. {bullishpy-0.29.0 → bullishpy-0.31.0}/bullish/utils/checks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bullishpy
3
- Version: 0.29.0
3
+ Version: 0.31.0
4
4
  Summary:
5
5
  Author: aan
6
6
  Author-email: andoludovic.andriamamonjy@gmail.com
@@ -282,9 +282,9 @@ def compute_price(data: pd.DataFrame) -> pd.DataFrame:
282
282
  results["20_DAY_HIGH"] = data.close.rolling(window=20).max()
283
283
  results["20_DAY_LOW"] = data.close.rolling(window=20).min()
284
284
  results["LAST_PRICE"] = data.close
285
- results["WEEKLY_GROWTH"] = data.close.resample("W").transform(perc) # type: ignore
286
- results["MONTHLY_GROWTH"] = data.close.resample("ME").transform(perc) # type: ignore
287
- results["YEARLY_GROWTH"] = data.close.resample("YE").transform(perc) # type: ignore
285
+ results["WEEKLY_GROWTH"] = data.close.resample("W").transform(perc).ffill() # type: ignore
286
+ results["MONTHLY_GROWTH"] = data.close.resample("ME").transform(perc).ffill() # type: ignore
287
+ results["YEARLY_GROWTH"] = data.close.resample("YE").transform(perc).ffill() # type: ignore
288
288
  return results
289
289
 
290
290
 
@@ -108,10 +108,34 @@ class NamedFilterQuery(FilterQuery):
108
108
  | {"name": f"{self.name} ({suffix})", "country": countries}
109
109
  )
110
110
 
111
+ def update_rsi(self, suffix: str, rsi_parameter_name: str) -> "NamedFilterQuery":
112
+ return NamedFilterQuery.model_validate(
113
+ self.model_dump()
114
+ | {"name": f"{self.name} ({suffix})", rsi_parameter_name: DATE_THRESHOLD}
115
+ )
116
+
111
117
  def variants(self) -> List["NamedFilterQuery"]:
112
118
  return [
113
119
  self.country_variant("Europe", list(get_args(Europe))),
114
120
  self.country_variant("Us", list(get_args(Us))),
121
+ self.country_variant("Europe", list(get_args(Europe))).update_rsi(
122
+ "RSI 30", "rsi_bullish_crossover_30"
123
+ ),
124
+ self.country_variant("Europe", list(get_args(Europe))).update_rsi(
125
+ "RSI 40", "rsi_bullish_crossover_40"
126
+ ),
127
+ self.country_variant("Europe", list(get_args(Europe))).update_rsi(
128
+ "RSI Neutral", "rsi_neutral"
129
+ ),
130
+ self.country_variant("Us", list(get_args(Us))).update_rsi(
131
+ "RSI 30", "rsi_bullish_crossover_30"
132
+ ),
133
+ self.country_variant("Us", list(get_args(Us))).update_rsi(
134
+ "RSI 40", "rsi_bullish_crossover_40"
135
+ ),
136
+ self.country_variant("Us", list(get_args(Us))).update_rsi(
137
+ "RSI Neutral", "rsi_neutral"
138
+ ),
115
139
  ]
116
140
 
117
141
 
@@ -151,26 +175,10 @@ NEXT_EARNINGS_DATE = NamedFilterQuery(
151
175
  order_by_desc="market_capitalization",
152
176
  next_earnings_date=[
153
177
  datetime.date.today(),
154
- datetime.date.today() + timedelta(days=10),
178
+ datetime.date.today() + timedelta(days=20),
155
179
  ],
156
180
  ).variants()
157
181
 
158
- RSI_CROSSOVER_40 = NamedFilterQuery(
159
- name="RSI cross-over 40",
160
- rsi_bullish_crossover_40=DATE_THRESHOLD,
161
- market_capitalization=[5e8, 1e13],
162
- order_by_desc="market_capitalization",
163
- country=["Germany", "United states", "France", "United kingdom", "Canada", "Japan"],
164
- ).variants()
165
-
166
- RSI_CROSSOVER_30 = NamedFilterQuery(
167
- name="RSI cross-over 30",
168
- price_per_earning_ratio=[10, 500],
169
- rsi_bullish_crossover_30=DATE_THRESHOLD,
170
- market_capitalization=[5e8, 1e13],
171
- order_by_desc="market_capitalization",
172
- ).variants()
173
-
174
182
 
175
183
  def predefined_filters() -> list[NamedFilterQuery]:
176
184
  return [
@@ -178,8 +186,6 @@ def predefined_filters() -> list[NamedFilterQuery]:
178
186
  *TOP_PERFORMERS,
179
187
  *LARGE_CAPS,
180
188
  *NEXT_EARNINGS_DATE,
181
- *RSI_CROSSOVER_40,
182
- *RSI_CROSSOVER_30,
183
189
  ]
184
190
 
185
191
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bullishpy"
3
- version = "0.29.0"
3
+ version = "0.31.0"
4
4
  description = ""
5
5
  authors = ["aan <andoludovic.andriamamonjy@gmail.com>"]
6
6
  readme = "README.md"
File without changes
File without changes