企业微信

理解交割单数据的实质

交割单是投资者在证券交易完成后,由证券公司或结算机构出具的资金与证券划转记录凭证。它记录了每笔交易发生的具体时间、证券代码、买卖方向、成交价格、成交数量、发生金额以及资金余额等详细信息。在量化分析与交易复盘场景中,交割单数据的作用不可或缺,它提供了最真实的交易执行反馈。

交割单数据与行情数据的区别

交割单数据是私有化、账户相关的交易结果数据,而常见的行情数据是公开的市场交易快照。交割单直接关联到投资者的资金账户和股东账户,包含手续费、印花税等成本信息,是计算真实盈亏、分析交易策略滑点与执行效率的唯一依据。

获取交割单数据的核心挑战

公开的免费数据接口通常不提供个人或特定账户的交割单历史。这类数据具有隐私性和专属性,通常需要通过券商提供的交易软件后台导出,或经由券商官方授权的程序化交易接口获取。

如何获取股票交割单数据

主流API获取途径与参数解析

券商官方交易接口

部分券商为程序化交易客户提供官方接口,允许查询历史交割单。

典型参数构成:

  • 身份认证参数:这是最关键的环节,通常包括客户号、资金账号、证书序列号或API Key等。这些参数用于验证查询权限。

  • 查询范围参数

    • start_date / end_date:查询的起始日期和结束日期。

    • 证券代码 (symbol):用于筛选特定股票的交割记录,留空可能查询账户所有证券的交割。

    • 业务类别 (business_type):区分是普通股票交易、新股申购、债券回购等不同业务产生的交割。

    • 查询模式:可能区分当日交割单与历史交割单查询。

  • 分页与排序参数

    • page_num / page_size:当交割记录很多时,用于分页查询。

    • sort_field / sort_order:按成交时间或发生金额等进行排序。


# 伪代码示例:基于某券商API查询交割单的假设结构

# 注意:实际参数名和调用方式需严格参照对应券商API文档

class BrokerAPI:

    def __init__(self, account, password, api_key):

        self.auth_token = self._login(account, password, api_key)

    def query_history_settlement(self, **params):

        # 必需参数示例

        required_params = {

            'auth_token': self.auth_token,

            'query_mode': 'history',  # 查询历史交割

            'start_date': params.get('start_date', ''),  # 格式:YYYYMMDD

            'end_date': params.get('end_date', ''),

            'stock_code': params.get('stock_code', ''),  # 如 '000001'

            'page_index': params.get('page', 1),

            'page_size': params.get('size', 100)

        }

        # 发送请求并返回交割单列表

        response = send_request('/trade/query_settlement', required_params)

        return self._parse_settlement_data(response)

# 使用示例

api = BrokerAPI('your_account', 'your_password', 'your_key')

settlements = api.query_history_settlement(start_date='20231001', end_date='20231031', stock_code='600519')

for record in settlements:

    print(f"时间:{record['time']}, 代码:{record['code']}, 操作:{record['action']}, 数量:{record['volume']}, 价格:{record['price']}")

券商交易软件数据导出

对于非程序化需求,手动操作更为常见。

  1. 登录券商提供的电脑客户端或网页交易系统

  2. 寻找“查询”、“交割单”、“历史成交”或“对账单”等功能菜单。

  3. 在查询界面,用户需要手动设置与API类似的筛选条件:

    • 时间区间:选择需要导出的具体日期范围。

    • 市场/证券:选择A股、科创板等,或直接输入股票代码。

    • 导出格式:选择Excel、CSV等格式以便后续分析。

这种方式获取的数据本质上是前端界面调用了后台查询接口,参数逻辑与程序化接口一致。

第三方金融数据服务商

少数专业金融数据商可能提供基于市场公开信息整合的“龙虎榜”相关数据,这间接反映了部分机构席位(非个人账户)的大额交割行为,但并非个人账户的真实交割单。

其API参数可能包括:

  • trade_date:交易日。

  • stock_code:股票代码。

  • seat_code:交易所席位代码。

  • direction:买卖方向。

关键参数深度剖析

查询日期 (start_date, end_date)

交割单数据按交割清算日期存储。A股实行T+1交收制度,当日(T日)买入的股票,交割记录发生在下一个交易日(T+1日)。查询时需注意这一日期偏移。

证券代码 (symbol)

参数需使用带市场前缀的完整代码,如SH.600000SZ.000001,具体格式取决于API设计。精确匹配此参数可过滤出特定股票的所有相关交割记录。

业务类型 (business_type)

这是一个常被忽视但至关重要的过滤器。除了普通的买入(BUY)和卖出(SELL),可能还包括:

  • 红股入账 (BONUS_SHARE)

  • 股息入账 (DIVIDEND)

  • 配股缴款 (ALLOTMENT)

  • 手续费扣收 (FEE)

明确业务类型才能准确核算资金流水。

交易市场与股东账户

查询时系统内部会根据股票代码自动关联对应的上海A股股东账户或深圳A股股东账户。部分高级API可能允许直接指定market(如SHSZ)或position_account(股东账号)作为查询参数。

数据处理与应用要点

获取原始数据后,需进行结构化处理:

  1. 字段映射:将API返回的原始字段(如ZQDM, CJSL, CJJG)转换为标准名称(code, volume, price)。

  2. 成本计算:交割单中的“发生金额”已包含税费,是计算持仓成本的真实数据。

  3. 数据合并:将同一策略或同一时间段的多账户交割单合并分析,以评估整体表现。

  4. 性能归因:将交割单数据与同一时间段的行情数据(如分钟K线)对齐,可精确分析订单的成交滑点、冲击成本以及策略信号的实际执行效果。

合规与风险提示

个人交割单数据属于高度敏感信息。使用任何API获取数据时,必须确保:

  • 途径合法合规,仅使用自己账户所在券商提供的官方工具或授权接口。

  • 妥善保管身份认证参数,防止泄露。

  • 数据仅限于个人分析或受法律保护的策略研究使用。

获取到精准的交割单数据,意味着掌握了策略在实际交易中资金流动的完整图谱,这是从理论策略走向实战盈利过程中,不可或缺的诊断工具。