50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import pandas as pd
|
|
|
|
from yfinance.data import YfData
|
|
from yfinance.exceptions import YFNotImplementedError
|
|
|
|
|
|
class Analysis:
|
|
|
|
def __init__(self, data: YfData, symbol: str, proxy=None):
|
|
self._data = data
|
|
self._symbol = symbol
|
|
self.proxy = proxy
|
|
|
|
self._earnings_trend = None
|
|
self._analyst_trend_details = None
|
|
self._analyst_price_target = None
|
|
self._rev_est = None
|
|
self._eps_est = None
|
|
self._already_scraped = False
|
|
|
|
@property
|
|
def earnings_trend(self) -> pd.DataFrame:
|
|
if self._earnings_trend is None:
|
|
raise YFNotImplementedError('earnings_trend')
|
|
return self._earnings_trend
|
|
|
|
@property
|
|
def analyst_trend_details(self) -> pd.DataFrame:
|
|
if self._analyst_trend_details is None:
|
|
raise YFNotImplementedError('analyst_trend_details')
|
|
return self._analyst_trend_details
|
|
|
|
@property
|
|
def analyst_price_target(self) -> pd.DataFrame:
|
|
if self._analyst_price_target is None:
|
|
raise YFNotImplementedError('analyst_price_target')
|
|
return self._analyst_price_target
|
|
|
|
@property
|
|
def rev_est(self) -> pd.DataFrame:
|
|
if self._rev_est is None:
|
|
raise YFNotImplementedError('rev_est')
|
|
return self._rev_est
|
|
|
|
@property
|
|
def eps_est(self) -> pd.DataFrame:
|
|
if self._eps_est is None:
|
|
raise YFNotImplementedError('eps_est')
|
|
return self._eps_est
|