bullishpy 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

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.
@@ -153,7 +153,9 @@ def _abs(data: pd.Series) -> pd.Series: # type: ignore
153
153
 
154
154
 
155
155
  class TechnicalAnalysis(BaseModel):
156
- rsi_last_value: Optional[float] = None
156
+ rsi_last_value: Optional[float] = Field(
157
+ None, alias="RSI Last value", description="RSI last value", ge=0, le=100
158
+ )
157
159
  macd_12_26_9_buy_date: Optional[date] = None
158
160
  ma_50_200_buy_date: Optional[date] = None
159
161
  slope_7: Optional[float] = None
@@ -332,26 +334,28 @@ class TechnicalAnalysis(BaseModel):
332
334
 
333
335
 
334
336
  class BaseFundamentalAnalysis(BaseModel):
335
- positive_free_cash_flow: Optional[float] = None
336
- growing_operating_cash_flow: Optional[float] = None
337
- operating_cash_flow_is_higher_than_net_income: Optional[float] = None
337
+ positive_debt_to_equity: Optional[bool] = None
338
+ positive_return_on_assets: Optional[bool] = None
339
+ positive_return_on_equity: Optional[bool] = None
340
+ positive_diluted_eps: Optional[bool] = None
341
+ positive_basic_eps: Optional[bool] = None
342
+ growing_basic_eps: Optional[bool] = None
343
+ growing_diluted_eps: Optional[bool] = None
344
+ positive_net_income: Optional[bool] = None
345
+ positive_operating_income: Optional[bool] = None
346
+ growing_net_income: Optional[bool] = None
347
+ growing_operating_income: Optional[bool] = None
348
+ positive_free_cash_flow: Optional[bool] = None
349
+ growing_operating_cash_flow: Optional[bool] = None
350
+ operating_cash_flow_is_higher_than_net_income: Optional[bool] = None
351
+
338
352
  mean_capex_ratio: Optional[float] = None
339
353
  max_capex_ratio: Optional[float] = None
340
354
  min_capex_ratio: Optional[float] = None
341
355
  mean_dividend_payout_ratio: Optional[float] = None
342
356
  max_dividend_payout_ratio: Optional[float] = None
343
357
  min_dividend_payout_ratio: Optional[float] = None
344
- positive_net_income: Optional[float] = None
345
- positive_operating_income: Optional[float] = None
346
- growing_net_income: Optional[float] = None
347
- growing_operating_income: Optional[float] = None
348
- positive_diluted_eps: Optional[float] = None
349
- positive_basic_eps: Optional[float] = None
350
- growing_basic_eps: Optional[float] = None
351
- growing_diluted_eps: Optional[float] = None
352
- positive_debt_to_equity: Optional[float] = None
353
- positive_return_on_assets: Optional[float] = None
354
- positive_return_on_equity: Optional[float] = None
358
+
355
359
  earning_per_share: Optional[float] = None
356
360
 
357
361
  def is_empty(self) -> bool:
@@ -481,13 +485,12 @@ class BaseFundamentalAnalysis(BaseModel):
481
485
  return cls()
482
486
 
483
487
 
484
- class YearlyFundamentalAnalysis(BaseFundamentalAnalysis):
485
- ...
488
+ class YearlyFundamentalAnalysis(BaseFundamentalAnalysis): ...
486
489
 
487
490
 
488
491
  fields_with_prefix = {
489
- f"{QUARTERLY}_{name}": (Optional[float], Field(default=None))
490
- for name in BaseFundamentalAnalysis.model_fields
492
+ f"{QUARTERLY}_{name}": (field_info.annotation, Field(default=None))
493
+ for name, field_info in BaseFundamentalAnalysis.model_fields.items()
491
494
  }
492
495
 
493
496
  # Create the new model