繁体   English   中英

在 Python 中使用 yfinance 废雅虎金融“类似于”数据

[英]Scrap yahoo finance "Similar to" data in Python with yfinance

我正在使用yfinance package 进行一个 Python 项目,我遇到了需要“类似于”数据的问题(下面的 ss)

与主要股票相似的股票

我试过的

我搜索了文档并评估了从 yf.Ticker(X) 和 yf.download(X) 收到的数据,其中 X 是股票代码,例如“MAIN”,但我一无所获。

返回数据:

在此处输入图像描述

我想要这样的东西:

ticker = yf.Ticker('MAIN')
similars = ticker.get_similar()
print(similars)

['PFLT','GAIN','ARCC','HRZN','HTGC']

知道如何实现这一目标吗? 如果这个 package 甚至有可能。我应该自己开始 web scarping 这个吗?

数据是必不可少的,但我没有义务使用雅虎财经。 如果您知道从另一个网站抓取此信息的 package,我将不胜感激。

好的,所以我做了一个解决方法。

我从以下网址下载股票数据: https://www.nasdaq.com/market-activity/stocks/screener

负责人csv:

Symbol, Name, Last Sale, Net Change, % Change, Market Cap, Country, IPO Year, Volume, Sector, Industry

或者,我可以使用 yfinance 获取此信息,但我仍然需要每只 NASADQ、纽约证券交易所(可能还有其他)上市股票的列表。

import pandas as pd

def similar_stocks(ticker): 
    # Static data
    nasdaq_data = pd.read_csv("nasdaq_screener.csv")
    ticker_row = nasdaq_data.loc[nasdaq_data['Symbol'] == ticker]  # ticker_row: {DataFrame } Symbol, Name ... Industry

    # Filter by sector
    ticker_sector = ticker_row['Sector'].values[0]  # Finance
    filter_condition = nasdaq_data['Sector'] == ticker_sector
    filtered_data = nasdaq_data[filter_condition]  # By Finance

    market_cap = ticker_row['Market Cap'].values[0]
    treshold = 0.15 * market_cap  # 15% of the company value
    min_limit = str(market_cap - treshold)
    max_limit = str(market_cap + treshold)

    # Filter by market cap
    filtered_data = filtered_data[filtered_data['Symbol'] != ticker]
    filtered_data = filtered_data.query(min_limit + ' < `Market Cap` < ' + max_limit)

    return filtered_data.Symbol.tolist()  # ['ABCB', 'APAM', ... 'UTF', 'WSFS']

我按行业和可比市值过滤了原始数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM