1. 获取并返回公司的基本信息,如名称、行业、国家等。
def get_company_info(self):
info = self.info
result = {
"Company Name": info['shortName'],
"Industry": info['industry'],
"Sector": info['sector'],
"Country": info['country'],
"Website": info['website']
}
return result
2. 获取并比较股票与标准普尔500指数(S&P 500)的表现,生成图表并保存为PNG文件。
股票与标准普尔500指数(S&P 500)的表现可以通过比较两者在一定时间段内的价格变化来体现。这种比较可以帮助投资者了解目标公司的股票在市场上的相对表现。以下是详细解释:
股票与标准普尔500指数(S&P 500)的表现
-
股票表现:
- 表现通常指股票在特定时间段内的价格变化。
- 可以通过股票的收盘价来衡量。
- 例如,计算一只股票在过去一年的价格变化率,可以显示这只股票的价格是如何变化的。
-
标准普尔500指数(S&P 500)的表现:
- S&P 500是美国市场上最具代表性的股票指数之一,由500家大型上市公司组成。
- 该指数反映了这些公司的整体市场表现,是衡量美国股票市场整体健康状况的一个重要指标。
- 类似于个股表现,可以通过该指数在同一时间段内的价格变化来衡量其表现。
可以体现什么
-
相对表现:
- 通过比较目标公司股票与S&P 500指数的表现,投资者可以看到这只股票是跑赢了大盘(指数)还是跑输了大盘。
- 如果目标股票的表现优于S&P 500指数,意味着该股票在市场上表现较好,可能具有较高的投资价值。
- 反之,如果表现不如S&P 500指数,可能表明该股票面临一些问题或风险。
-
市场趋势:
- 比较两者的表现可以帮助投资者了解整体市场趋势。
- 例如,如果S&P 500指数在上升,而目标股票在下降,这可能暗示该公司面临一些特定的挑战。
-
风险评估:
- 通过比较两者的波动性,投资者可以评估目标股票的风险水平。
- 如果目标股票的波动性明显高于S&P 500指数,可能表明该股票具有更高的风险。
-
投资决策:
- 投资者可以根据比较结果做出更明智的投资决策。
- 例如,如果目标股票表现优异,投资者可能会考虑增加持有量。
- 如果表现不佳,则可能需要重新评估其投资组合。
实例图表
通过图表,可以更直观地看到股票与S&P 500指数的相对表现。例如:
- 股票表现曲线:展示股票在过去一年的价格变化率。
- S&P 500表现曲线:展示S&P 500指数在同一时间段内的价格变化率。
- 比较图表:同时绘制这两条曲线,可以清楚地看到股票与S&P 500指数的相对表现。
这样的图表可以帮助投资者快速了解股票的市场表现,做出更有依据的投资决策。
方法 get_stock_performance
,它从雅虎财经(Yahoo Finance)获取目标公司股票和标准普尔500指数(S&P 500)的历史数据,并生成一个图表来比较它们在过去一年中的表现。最后,将生成的图表保存为PNG文件并返回其存储路径。
方法定义
内嵌函数:fetch_stock_data
fetch_stock_data
函数接受股票代码(ticker
)和时间周期(默认1年,即"1y"
)作为参数,使用雅虎财经的API获取该股票的历史数据,并返回其收盘价。
获取目标公司股票和S&P 500指数的数据
分别获取目标公司股票(self.ticker_symbol
)和S&P 500指数("^GSPC"
)在过去一年的收盘价数据。
计算变化率
company_change = (target_close - target_close.iloc[0]) / target_close.iloc[0] * 100 sp500_change = (sp500_close - sp500_close.iloc[0]) / sp500_close.iloc[0] * 100
这两行代码计算目标公司股票和S&P 500指数的百分比变化率,基于它们的初始收盘价。
计算额外的日期点
计算了开始日期、四个月后的日期、八个月后的日期和结束日期,以便在图表中标记这些时间点。
3.计算并绘制指定股票的市盈率(PE)和每股收益(EPS)。图表保存为PNG文件。
股票的市盈率(Price to Earnings Ratio, PE)和每股收益(Earnings Per Share, EPS)是两个重要的财务指标,用于评估公司股票的投资价值和盈利能力。以下是详细解释:
每股收益(Earnings Per Share, EPS)
定义:
- EPS是指公司在一定期间(通常是一年)的净利润除以公司流通在外的普通股股数。
- 公式:EPS=净利润流通在外的普通股股数,EPS = 净利润\流通在外的普通股股数
用途:
- EPS是衡量公司盈利能力的重要指标。它表示公司每一股普通股在该期间内所能分配到的净利润。
- 较高的EPS通常意味着公司盈利能力强,股票的投资价值可能较高。
市盈率(Price to Earnings Ratio, PE)
定义:
- PE是指股票的市场价格与每股收益(EPS)之间的比率。
- 公式:PE=股票价格每股收益PE = 股票价格\每股收益
用途:
- PE是衡量公司股票估值的重要指标。它表示投资者愿意为每一美元的收益支付多少美元的价格。
- 一般来说,较高的PE可能表明投资者对公司的未来增长抱有较高的期望,但也可能意味着股票被高估。较低的PE可能表明股票被低估,但也可能反映出市场对公司未来表现的担忧。
PE和EPS的意义和应用
-
投资决策:
- EPS帮助投资者评估公司当前的盈利能力。
- PE帮助投资者判断股票的估值水平,了解市场对公司未来盈利的预期。
-
比较不同公司:
- 投资者可以使用PE来比较不同公司的估值水平,选择性价比高的投资标的。
- EPS则可用于比较相同行业内不同公司的盈利能力。
-
分析股票走势:
- 分析公司EPS的历史数据和增长趋势,了解公司盈利的稳定性和成长性。
- 结合PE的变化,判断市场对公司估值的变化。
综合应用
- 成长型投资:投资者通常关注PE较高但EPS增长迅速的公司。这类公司可能处于快速扩展期,未来盈利预期较高。
- 价值型投资:投资者通常关注PE较低但EPS稳定或略有增长的公司。这类公司可能被市场低估,具有较高的安全边际。
从类的方法 get_income_stmt
中获取损益表数据,并提取出 "稀释每股收益"(Diluted EPS)这一行的数据。"稀释每股收益"(Diluted EPS)是公司财务报表中的一个重要指标,用于衡量在考虑所有潜在稀释因素后的每股收益。它提供了一个更保守和全面的每股收益计算方式,尤其在公司存在可能会增加已发行股票数量的金融工具时,如期权、可转换债券和认股权证等。
获取股票历史数据
historical_data = self.stock.history(period="5y")
获取股票过去五年的历史数据,包含每日的收盘价。
日期处理
dates = pd.to_datetime(eps.index[::-1], utc=True)
将EPS的日期索引转换为UTC时区的日期对象,并逆序排列(从最旧到最新)。
查找最接近的交易日数据
遍历每一个EPS日期,查找对应的最接近的交易日股价:
- 如果指定日期不是交易日,使用
asof
方法找到最近的交易日股价。 - 否则,直接获取该日期的收盘价。
- 将结果存储在
results
字典中,键为日期,值为收盘价。
计算市盈率(PE)
- 计算每个日期的市盈率:将股价除以每股收益。
- 更新
dates
和eps
为逆序排列,确保与results
中的日期和股价顺序一致。
4. 获取并返回股票最近的分析师推荐。
-
recommendations = self.stock.recommendations
- 从股票对象中获取分析师推荐数据,存储在
recommendations
变量中。
- 从股票对象中获取分析师推荐数据,存储在
-
row_0 = recommendations.iloc[0, 1:]
- 获取推荐数据的第一行,排除 'period' 列。
-
max_votes = row_0.max()
- 找到推荐数据中投票最多的值。
-
majority_voting_result = row_0[row_0 == max_votes].index.tolist()
- 找到与最大投票值相等的索引,并将这些索引转换为列表。
-
return majority_voting_result[0], max_votes
- 返回包含最多推荐选项和其数量的元组。
返回值
该函数返回一个元组,其中包含:
- 分析师推荐的最多选项(字符串形式)。
- 该选项的推荐数量(整数形式)。