当前位置: 首页 > news >正文

获取各类基本因子

股票基本信息

ts_code:股票代码,这是每只股票的唯一标识符。不同市场的股票代码格式不同,比如 A 股市场中,上交所股票代码以 60 开头,深交所中小板股票代码以 002 开头,创业板股票代码以 300 开头等。
trade_date:交易日期,格式一般为 YYYYMMDD,它明确了数据对应的具体交易时间。

行情数据

open:开盘价,即股票在每个交易日开始时的第一笔成交价格。
high:最高价,指股票在一个交易日内所达到的最高成交价格。
low:最低价,是股票在一个交易日内所达到的最低成交价格。
close:收盘价,也就是股票在每个交易日结束时的最后一笔成交价格。
pre_close:前收盘价,代表上一个交易日的收盘价,它是计算当日涨跌幅等指标的重要参考。
change:涨跌额,计算方式是当日收盘价减去前收盘价,反映了股票价格较上一交易日的绝对变动金额。
pct_chg:涨跌幅,用百分比表示,计算公式为 (当日收盘价 - 前收盘价) / 前收盘价 * 100%,体现了股票价格的相对变动幅度。
vol:成交量,指在一个交易日内股票的成交总手数,反映了市场的交易活跃程度。
amount:成交额,是指在一个交易日内股票的成交总金额,通过成交量与成交价格相乘得到,同样能反映市场的交易活跃程度和资金流动情况。

交易指标

turnover_rate:换手率,计算公式为 成交量 / 流通股本 * 100%,它反映了股票在一定时间内的转手买卖频率,是衡量股票流通性强弱的指标。
turnover_rate_f:自由流通股本换手率,计算方式为 成交量 / 自由流通股本 * 100%,自由流通股本是指剔除了控股股东、战略投资者等持有的长期锁定股份后的股本,该指标更能反映市场中实际可交易股份的换手情况。
volume_ratio:量比,是衡量相对成交量的指标,它是开市后平均每分钟的成交量与过去 5 个交易日平均每分钟成交量之比。量比大于 1 表示当日每分钟的平均成交量大于过去 5 日的平均值,交易相对活跃;反之则表示交易相对清淡。

估值指标

pe:市盈率(Price - Earnings Ratio),分为静态市盈率和动态市盈率。静态市盈率是用当前股价除以过去一年的每股收益;动态市盈率则考虑了公司未来的盈利增长情况,一般用当前股价除以预测的未来一年每股收益。市盈率反映了投资者为获取公司每一元盈利所愿意支付的价格,是评估股票估值的重要指标之一。
pe_ttm:滚动市盈率,即 Trailing Twelve Months 的缩写,它是用当前股价除以过去四个季度的每股收益之和。与静态市盈率相比,滚动市盈率能更及时地反映公司的盈利变化情况。
pb:市净率(Price - to - Book Ratio),计算公式为 股价 / 每股净资产,反映了市场对公司净资产的估值水平。一般来说,市净率较低的股票可能被低估,但也可能暗示公司存在经营问题。
ps:市销率(Price - to - Sales Ratio),用当前股价除以每股销售收入,它主要用于评估一些尚未盈利但有销售收入的公司的估值情况,反映了市场对公司销售收入的认可程度。
ps_ttm:滚动市销率,计算方式是用当前股价除以过去四个季度的每股销售收入之和,同样是为了更及时地反映公司销售收入的变化。

股息指标

dv_ratio:股息率,计算公式为 年度股息 / 当前股价 * 100%,它反映了股票的分红收益情况,是投资者选择股票时考虑的重要因素之一。
dv_ttm:滚动股息率,是过去 12 个月的股息率,通过计算过去四个季度的股息总和与当前股价的比率得到,能更动态地反映公司的股息分配情况。
股本与市值指标
total_share:总股本,指公司发行的全部股份数量,包括流通股和非流通股。
float_share:流通股本,即可以在证券市场上自由买卖的股份数量。
free_share:自由流通股本,是指剔除了控股股东、战略投资者等持有的长期锁定股份后的流通股本,更能反映市场上实际可交易的股份数量。
total_mv:总市值,计算方法是 总股本 * 股价,它反映了公司在市场上的整体价值。
circ_mv:流通市值,计算公式为 流通股本 * 股价,代表了公司可在市场上自由交易的股份的总价值。

# 导入 tushare 库,tushare 是一个免费、开源的 python 财经数据接口包,可用于获取各类金融数据
import tushare as ts
import pandas as pd
# 从 datetime 模块导入 datetime 和 timedelta 类
# datetime 类用于处理日期和时间,timedelta 类用于表示时间间隔
from datetime import datetime, timedelta

# 设置 tushare 的 token,需要在 tushare 官网注册获取
# token 是使用 tushare 接口的身份凭证,只有设置了有效的 token 才能正常调用接口获取数据
ts.set_token('your_token')
# 创建 tushare 的 pro 接口对象,后续通过该对象调用各种数据接口
pro = ts.pro_api()

# 起始日期,指定从该日期开始获取 A 股数据
start_date = '20060101'
# 获取当前日期,并将其格式化为 'YYYYMMDD' 的字符串形式
# 这样可以动态地以当前日期作为数据获取的截止日期
end_date = datetime.today().strftime('%Y%m%d')

# 将起始日期字符串转换为 datetime 对象
# 方便后续进行日期的比较和计算
start = datetime.strptime(start_date, '%Y%m%d')
# 将结束日期字符串转换为 datetime 对象
end = datetime.strptime(end_date, '%Y%m%d')

# 循环遍历从起始日期到结束日期的每一天
# 初始化当前日期为起始日期
current_date = start
# 只要当前日期小于等于结束日期,就继续循环
while current_date <= end:
    # 将当前日期格式化为 'YYYYMMDD' 的字符串形式
    date_str = current_date.strftime('%Y%m%d')
    try:
        # 使用 pro.daily_basic 接口获取数据
        df_daily_basic = pro.daily_basic(trade_date=date_str)

        # 使用 pro.daily 接口获取数据
        df_daily = pro.daily(trade_date=date_str)
        if 'close' in df_daily.columns:
            df_daily = df_daily.drop(columns='close')
        if 'trade_date' in df_daily.columns:
            df_daily = df_daily.drop(columns='trade_date')
        # 合并数据,根据股票代码(ts_code)进行左连接合并
        merged_df = pd.merge(df_daily, df_daily_basic, on='ts_code', how='left')
        # 删除多余的列,保留合并前df_daily中的close和trade_date列,删除df_daily_basic中的同名列

        # 检查获取到的数据 DataFrame 是否为空
        if not merged_df.empty:
            # 若不为空,将数据保存为 CSV 文件,文件名以日期命名
            file_path =  f'D:/quantkt/data/stock/basic_and_daily_data/{date_str}_stock_data.csv'
            print(file_path)
            # 使用 pandas 的 to_csv 方法将数据保存为 CSV 文件,index=False 表示不保存索引列
            merged_df.to_csv(file_path, index=False)
            # 打印保存成功的提示信息
            print(f"{date_str} 的数据已成功保存到 {file_path}")
        else:
            # 若获取到的数据为空,打印提示信息,可能该日是非交易日
            print(f"未获取到 {date_str} 的股票数据,可能该日非交易日。")
    except Exception as e:
        # 若在请求数据或保存文件过程中出现异常,打印错误信息
        print(f"请求 {date_str} 数据或保存文件时出现错误: {e}")
    # 日期加一天,以便处理下一天的数据
    current_date += timedelta(days=1)

详情数据可来本人自建量化平台quantkt.com来获取

http://www.dtcms.com/a/107473.html

相关文章:

  • day21和day22学习Pandas库
  • Ray Flow Insight:让分布式系统调试不再“黑盒“
  • 【模型部署】onnx模型-LOOP 节点实例
  • 2.3.3 使用@Profile注解进行多环境配置
  • 高通将进军英国芯片 IP 业务 Alphawave
  • Qt线程等待条件QWaitCondition
  • 深入理解DRAM刷新机制:异步刷新为何无需扣除刷新时间?
  • 风电行业预测性维护解决方案:给风机装上 “智能医生”,实现故障 “秒级预警”
  • HTMX构建无重载闪烁的交互式页面
  • Vue开发系列——npm镜像问题
  • Frida Hook Native:jobjectArray 参数解析
  • SQL Server 增删改查详解
  • 使用pytesseract和Cookie登录古诗文网~(python爬虫)
  • 从Hugging Face下载Qwen/Qwen2-Audio-7B-Instruct模型到本地运行,使用python实现一个音频转文字的助手
  • 树莓派超全系列教程文档--(21)用户配置
  • 芋道源码——Spring Cloud Bus RocketMQ 入门
  • 《全栈+双客户端Turnkey方案》架构设计图
  • 软件版本号递增应该遵循的规范
  • 分层防御:对称与非对称加密如何守护数字世界
  • 0402-对象和类(访问器 更改器 日期类)
  • 北方算网获邀在中关村论坛发言 解析人工智能+产业落地核心路径
  • 【数据库原理及安全实验】实验一 数据库安装与创建
  • openEuler24.03 LTS下安装HBase集群
  • YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)
  • Ubuntu 22.04 安装和运行 EDK2 超详细教程
  • 门控循环单元(GRU)基础学习与实例:电影评论情感分类
  • 微信小程序开发-01.介绍
  • Java 基础-29-final关键字-详解
  • 当网页受到DDOS网络攻击有哪些应对方法?
  • 【mysql 的安装及使用】