Skip to content

mootdx / 新浪 复权因子 #4

@bolisci

Description

@bolisci

目前复权因子似乎是通过获取后复权数据和不复权数据,通过两者的比值计算出来的。mootdx实际上在mootdx/utils/adjust.py里提供了一个从新浪财经获取复权因子的方法。可以直接保存后复权因子到数据库里,避免把每日复权因子都写入数据库,导致数据臃肿。

`def fq_factor(method: str, symbol: str) -> pd.DataFrame:
zh_sina_a_stock_hfq_url = 'https://finance.sina.com.cn/realstock/company/{}/hfq.js'
zh_sina_a_stock_qfq_url = 'https://finance.sina.com.cn/realstock/company/{}/qfq.js'

client = httpx.Client(verify=False)

if method == 'hfq':
    res = client.get(zh_sina_a_stock_hfq_url.format(symbol))
    hfq_factor_df = pd.DataFrame(json.loads(res.text.split('=')[1].split('\n')[0])['data'])

    if hfq_factor_df.shape[0] == 0:
        raise ValueError('sina hfq factor not available')

    hfq_factor_df.columns = ['date', 'hfq_factor']
    hfq_factor_df.index = pd.to_datetime(hfq_factor_df.date)

    del hfq_factor_df['date']

    hfq_factor_df.reset_index(inplace=True)
    # hfq_factor_df = hfq_factor_df.set_index('date')

    return hfq_factor_df
else:
    res = client.get(zh_sina_a_stock_qfq_url.format(symbol))
    qfq_factor_df = pd.DataFrame(json.loads(res.text.split('=')[1].split('\n')[0])['data'])

    if qfq_factor_df.shape[0] == 0:
        raise ValueError('sina hfq factor not available')

    qfq_factor_df.columns = ['date', 'qfq_factor']
    qfq_factor_df.index = pd.to_datetime(qfq_factor_df.date)

    del qfq_factor_df['date']

    qfq_factor_df.reset_index(inplace=True)
    # qfq_factor_df = qfq_factor_df.set_index('date')

    return qfq_factor_df`

例子:https://finance.sina.com.cn/realstock/company/sh601398/qfq.js

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions