基于资金数据的量化因子构建,附代码实现

随着股票市场的不断变化,投资者需要时刻关注市场走势和各种因素对于股票价格的影响。其中,资金面数据是影响股票市场波动性的重要因素之一。本文将介绍三个常用的资金面因子:个人投资者-A股新增开户数、境外投资者-北向资金和杠杆资金-融资融券。我们将详细阐述这些因子对于股票投资的影响,并提供获取这些因子数据的代码示例,以便读者进行实践应用。通过了解和分析这些因子数据,投资者可以更好地把握市场走势和投资机会,从而实现降低风险、提高收益的目标。因子来源于参考文献[1],感兴趣的读者可以深入阅读。
下面先概述一下这3个因子对投资的影响:

  1. 个人投资者-A股新增开户数:该因子反映了散户投资者对于股票市场的信心和热情。
  2. 境外投资者-北向资金:该因子反映了外资在A股市场的投资情况。外资对市场的投资情况通常是市场上一个重要的风向标,因此该因子对股票投资的影响较大。
  3. 杠杆资金-融资融券:该因子反映了投资者使用杠杆进行投资的情况。

因子1:个人投资者-A股新增开户数

A股账户新增开户数是指在一定时间段内新开立的股票交易账户的数量。如果该指标达到近6个月来的最高值,市场可能会发生反转,并且这种反转趋势往往能持续约1个月左右的时间。
具体地说,当A股账户新增开户数达到近6个月来的最高水平时,通常表明投资者对于股市的信心和热情正在上升,市场上的资金也有可能会相应增加。这种情况下,股市往往会呈现出一定程度的上涨趋势。
然而,当市场上的资金投入过多、情绪过于乐观时,市场也存在着一定的风险。如果突发事件或市场情绪变化导致投资者抛售股票,市场很可能会迅速出现调整或下跌趋势。因此,当A股账户新增开户数达到近6个月来的最高值时,投资者应保持警惕,密切关注市场动态,以免出现资金损失。
图片
代码获得因子数据:

import requests
import datetime
import pandas as pd
import json

def get_new_investors():
    """ 获取A股账户新增开户数(月度数据) """
    url = 'https://legulegu.com/stockdata/new-investors/getnew-investors'
    response = requests.get(url)

    new_investors = pd.DataFrame(json.loads(response.text))[["date","newInvestorCount"]]
    new_investors["date"] = new_investors["date"].apply(lambda x:datetime.datetime.fromtimestamp(x/1000.0).strftime('%Y-%m-%d'))
    new_investors = new_investors.set_index("date")
    new_investors.index = new_investors.index.astype(str)
    
    return new_investors

因子2:境外投资者-北向资金

北向资金是指境外投资者通过港股通、深港通或沪股通等渠道买入A股的资金流向。北向资金是中国股市中的一个重要投资来源,也是反映外部投资者对中国经济发展前景和股票市场投资价值的重要指标之一。据数据显示,北向资金净流入情况往往会对A股市场产生积极或消极的影响。因此,很多投资者和分析师都会关注北向资金的流入情况,并根据这些数据制定自己的投资策略。
根据北向资金净流入情况可以判断市场的走势。当北向资金净流入大于120日均线加1倍标准差时,为看多信号,表明外资看好中国市场;当北向资金净流入小于120日均线减1倍标准差时,为看空信号,表明外资对中国市场持谨慎态度;如果北向资金净流入未出现信号,则保持之前的看多或看空状态。
图片
代码获得因子数据:

import akshare as ak
import pandas as pd

def get_north_flow():
    """ 获得北向资金净流入数据(日频)"""
    stock_hsgt_north_net_flow_in_em_df = ak.stock_hsgt_north_net_flow_in_em(symbol="北上")
    stock_hsgt_north_net_flow_in_em_df = stock_hsgt_north_net_flow_in_em_df.set_index("date")
    stock_hsgt_north_net_flow_in_em_df.index = stock_hsgt_north_net_flow_in_em_df.index.astype(str)
    ma = stock_hsgt_north_net_flow_in_em_df.value.rolling(window=120).mean()
    std = stock_hsgt_north_net_flow_in_em_df.value.rolling(window=120).std()
    ma_high = (ma+std).to_frame(name='ma_high')
    ma_low = (ma-std).to_frame(name='ma_low')
    ma = ma.to_frame(name='ma')
    result_df = pd.concat([stock_hsgt_north_net_flow_in_em_df, ma, ma_high, ma_low], axis=1)

    return result_df

因子3:杠杆资金-融资融券

杠杆资金是指投资者通过借贷等方式进行股票等资产的投资,以期望获得更高的收益率的一种投资策略。相较于自有资金,杠杆资金可以放大投资者的资本规模,从而能够承担更大的风险和获得更高的回报,但同时也会增加投资风险。融资融券余额是指投资者在证券公司通过融资融券交易获得的资金或证券的余额。其中,融资是指投资者向券商借入资金买入股票,融券是指投资者向证券公司借入股票卖出,获得资金后再购回股票归还证券公司。
当融资融券余额处于上升趋势时,代表市场持续资金流入,通常为看多信号;当融资融券余额处于下降趋势时,代表市场持续资金流出,通常为看空信号。该信号发出后平均持续时间为一个月左右。
图片

import akshare as ak
import pandas as pd

def get_rzrqye():
    """ 获得融资融券余额数据(日频)"""
    macro_china_market_margin_sz_df = ak.macro_china_market_margin_sz()
    macro_china_market_margin_sh_df = ak.macro_china_market_margin_sh()
    macro_china_market_margin_sz_df.index = macro_china_market_margin_sz_df.index.astype(str)
    sz_df = macro_china_market_margin_sz_df[["融资融券余额"]].rename(columns={"融资融券余额":"sz_ye"})

    macro_china_market_margin_sh_df.index = macro_china_market_margin_sh_df.set_index("日期").index.astype(str)
    sh_df = macro_china_market_margin_sh_df[["融资融券余额"]].rename(columns={"融资融券余额":"sh_ye"})
    merged_df = pd.concat([sz_df, sh_df], axis=1).sort_index()
    merged_df = merged_df.fillna(method='ffill')
    rzrqye = pd.DataFrame(merged_df.sum(axis=1), columns=['rzrqye'])
    rzrqye.index.name = "date"
    
    return rzrqye

参考文献:
[1].  国盛证券专题研究择时雷达六面图

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/110960
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 5分钟前
下一篇 2分钟前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注