首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >股票拆分api谷歌或雅虎

股票拆分api谷歌或雅虎
EN

Stack Overflow用户
提问于 2011-05-25 13:21:03
回答 2查看 8.3K关注 0票数 7

我正在寻找一种方法来获得股票拆分信息。使用雅虎股票API,我可以获得关于任何符号的所有类型的信息,但我不认为我可以获得拆分比率,甚至不能获得是否拆分。有谁知道获取这些信息的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-25 19:39:49

这就是quantmod R包的工作方式。拆分信息在“仅分红”CSV中:

http://ichart.finance.yahoo.com/x?s=IBM&a=00&b=2&c=1962&d=04&e=25&f=2011&g=v&y=0&z=30000

票数 16
EN

Stack Overflow用户

发布于 2020-07-22 23:07:57

在pandas datareader包的帮助下,您可以在python3中轻松完成此操作。开始定义一个函数,该函数将以数据帧的形式返回拆分历史:

代码语言:javascript
复制
def split_history(stock, date_start, date_end, limit_denominator=1000):
    from decimal import Decimal
    from fractions import Fraction
    from pandas_datareader import data as web
    df = web.DataReader(stock, data_source='yahoo-actions', start=date_start, end=date_end)
    is_split = df['action']=='SPLIT'
    df = df[is_split]
    ratios = []
    for index, row in df.iterrows():
        # Taking the inverse of the row['value'] as it is Yahoo finance convention
        ratio = Fraction(1/Decimal(row['value'])).limit_denominator(limit_denominator)
        ratios.append("{num} for {denom}".\
                            format(num=ratio.numerator, denom=ratio.denominator))
    df['ratio'] = ratios
    return df

现在我们可以以微软('MSFT')的拆分为例:

代码语言:javascript
复制
stock = 'MSFT'
date_start = '1987-01-01'
date_end = '2020-07-22'
split_history(stock, date_start, date_end)
代码语言:javascript
复制
            action  value       ratio
2003-02-18  SPLIT   0.500000    2 for 1
1999-03-29  SPLIT   0.500000    2 for 1
1998-02-23  SPLIT   0.500000    2 for 1
1996-12-09  SPLIT   0.500000    2 for 1
1994-05-23  SPLIT   0.500000    2 for 1
1992-06-15  SPLIT   0.666667    3 for 2
1991-06-27  SPLIT   0.666667    3 for 2
1990-04-16  SPLIT   0.500000    2 for 1
1987-09-21  SPLIT   0.500000    2 for 1

它还可以正确地处理反向股票拆分:

代码语言:javascript
复制
stock = 'PHM.MC'
split_history(stock, date_start, date_end)
代码语言:javascript
复制
                action  value   ratio
 2020-07-22     SPLIT   12.0    1 for 12

ps:也许有更好的方法来输入日期。ps2:另外,limit_denominator的存在是为了避免错误的环境。你可以在很少的情况下扩展它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6119867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档