HQChart使用教程30-K线图如何对接第3方数据4-流通股本数据

协议名称-流通股本数据

对应代码的类名和函数名:KLineChartContainer::RequestFlowCapitalData
用来计算换手率流通市值等很股本市值有关的数据,目前取的历史所有的流通A股的股本(注: 不是一天一条记录(这样太浪费了),而是变动才生成1条记录的。一般在4大报,分红送股等股本变动的时候有一条记录)

协议日志截图

在这里插入图片描述

Request 字段说明

Request是需要请求的数据, field是需要请求的数据

symbol

股票代码

field

需要返回的数据

  1. 股票代码
  2. 日期
  3. 流通A股股本

orderfield

返回数据排序, 根据日期排序

返回json数据结构

数据截图

在这里插入图片描述

stock

存放所有请求的股票数据,1个股票一条数据, 这里我们就请求了一个股票 所以数组就是1.

count

数据个数(看截图只有20几条数据, 比每天返回一条数据节约了很多流量)

symbol

股票代码

stockday

所有的流通A股股本数据

date

流通股本变动日期

capital.a

流通股本

注:流通股本下载完以后是由前端拟合到K线对应的日期上。所以如何股本变动日期不在K线日期内,会丢数据,这种请求出现在比如周6发了一个季报公布了股本,这是时候需要把股本变动日期需要改成周五的日期,这样才能对上K线的日期,K线上节假日,周末都是没有的。

由于文章里面不能上传附件,样本数据请去群里文件中下载,
文件名: KLineChartContainer-RequestFlowCapitalData 样本数据.txt

数字货币下载流通股

默认数字货币不下载流通股, 如果要下载流通股可以通过setoption强制下载流通股。

 var option= 
 {
      Type:'历史K线图',   //创建图形类型
      ........
      EnableFlowCapital:
      {
          BIT:true,  //强制下载数字货币流通股
      },
 }

忽略流通股本

如果不需要流通股本,直接截获这个事件,然后返回空数据

this.NetworkFilter=function(data, callback)
{
    console.log('[NetworkFilter] data', data);
    switch(data.Name)
    {
        .......
        case 'KLineChartContainer::RequestFlowCapitalData':             //流通股本
            this.RequestFlowCapitalData(data,callback);
            break;
    }
}

//流通股本
this.RequestFlowCapitalData=function(data,callback)
 {
     data.PreventDefault=true;
     var hqChartData={code:0, stock:[]}; //如果没有数据就填空
     callback(hqChartData);
 }

样本数据

https://github.com/jones2000/HQChart/blob/master/教程/数据样例/流通股本.json

HQChart代码地址

地址:github.com/jones2000/HQChart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是用A股2010-2020年的月度数据进行fama5因子模型的实证的Python代码: 首先需要导入需要的库: ```python import pandas as pd import numpy as np import statsmodels.api as sm from statsmodels import regression import matplotlib.pyplot as plt ``` 然后需要获取A股的数据,这里以获取上证50成分股的数据为例: ```python import akshare as ak # 获取上证50成分股代码 stock_zh_a_spot_df = ak.stock_zh_a_spot() sz50_codes = stock_zh_a_spot_df[stock_zh_a_spot_df['名称'].str.contains('上证50')]['代码'].tolist() # 获取上证50成分股的月度行情数据 start_date = '2010-01' end_date = '2020-12' sz50_df = pd.DataFrame() for code in sz50_codes: data = ak.stock_zh_a_monthly(symbol=code, start_date=start_date, end_date=end_date) data['code'] = code sz50_df = pd.concat([sz50_df, data], axis=0) sz50_df = sz50_df.reset_index(drop=True) ``` 接下来需要计算每只股票的收益率和市场收益率: ```python # 计算每只股票的收益率 sz50_df['return'] = sz50_df.groupby('code')['收盘价'].apply(lambda x: x.pct_change()) # 获取沪深300指数的月度行情数据 hs300_df = ak.stock_zh_index_daily(symbol='沪深300指数', start_date=start_date, end_date=end_date) hs300_df['return'] = hs300_df['close'].pct_change() # 合并每只股票的收益率和市场收益率 sz50_df = pd.merge(sz50_df, hs300_df[['date', 'return']], on='date') ``` 然后需要计算每只股票的市值、市值因子、动量因子、市场因子和价值因子: ```python # 计算每只股票的市值 sz50_df['market_cap'] = sz50_df['收盘价'] * sz50_df['总股本'] # 计算每只股票的市值因子 sz50_df['market_cap_factor'] = pd.qcut(sz50_df['market_cap'], 10, labels=False) + 1 # 计算每只股票的动量因子 sz50_df['momentum_factor'] = sz50_df.groupby('code')['return'].rolling(12).sum().groupby('code').shift(1) # 计算每只股票的市场因子 sz50_df['market_factor'] = sz50_df['return'] - sz50_df['return'].mean() # 计算每只股票的价值因子 sz50_df['book_to_market'] = sz50_df['每股净资产'] / sz50_df['收盘价'] sz50_df['value_factor'] = pd.qcut(sz50_df['book_to_market'], 10, labels=False, duplicates='drop') + 1 ``` 最后,使用多元线性回归模型计算每只股票的alpha、beta、市值因子系数、动量因子系数、市场因子系数和价值因子系数: ```python # 使用多元线性回归模型计算每只股票的alpha、beta、市值因子系数、动量因子系数、市场因子系数和价值因子系数 results = [] for code in sz50_codes: data = sz50_df[sz50_df['code'] == code][['return', 'market_cap_factor', 'momentum_factor', 'market_factor', 'value_factor']] data = data.dropna() if len(data) >= 120: X = sm.add_constant(data[['market_cap_factor', 'momentum_factor', 'market_factor', 'value_factor']]) y = data['return'] model = regression.linear_model.OLS(y, X).fit() results.append((code, model.params[0], model.params[1], model.params[2], model.params[3], model.params[4], model.params[5])) # 输出每只股票的alpha、beta、市值因子系数、动量因子系数、市场因子系数和价值因子系数 results_df = pd.DataFrame(results, columns=['code', 'alpha', 'beta', 'market_cap_factor', 'momentum_factor', 'market_factor', 'value_factor']) results_df.to_csv('fama5_factors_monthly.csv', index=False) ``` 以上就是用A股2010-2020年的月度数据进行fama5因子模型的实证的Python代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值