在阅读文章前,请读者朋友认真阅读免责声明:

免责声明:本人所发表的所有文章、资源、知识等内容(包括免费、付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验、知识等内容,受个人水平所限这些知识、经验、代码等不一定是最佳实践,也可能存在遗漏、错误,请广大读者自行甄别(甄别方式:自我学习、百度搜索、请教高手等等)。本人所提供的一切文章、资源、知识等内容仅供读者参考,如需使用本人提供的文章、资源、知识等内容进行生产活动、项目开发、编写代码、生产环境部署等,请读者慎重考虑,本人对由此可能造成的生产事故、经济损失等不承担任何责任。

上一节介绍了银行相关表,本节将介绍证券相关表。

思考一下,证券相关表需要存储哪些信息呢?主要有股票投资的总体信息以及持仓明细信息,因此证券相关的表应该设计如下表:

1、 股票投资总体信息表

本表主要存储:日期、券商代码、资金账号、总投入金额、总持股数量、账户盈亏、可用资金、可取资金、冻结资金、总成本、总股票市值、总资产等信息。

本表数据需要进行日切,每天收市后,会对该表中的相应字段的值进行汇总计算,在交易日中,本表的数据也会实时进行计算,因为总投入金额、总持股数量、总股票市值等,会随着用户的操作,以及用户持有股票的实时价格进行变动,最终当交易日收市时,会根据当日收盘价固定下来。本表中的各字段值的计算方法应该遵循一定的公式来计算。

例如:账户盈亏 = 总资产-总投入

总股票市值 = 所有持有股票市值之和 (动态变化的)

本表中的数据应该每一个交易日一条数据,每个交易日收市之后程序需要执行日切操作,来计算当日收盘后的数据。历史数据可以用于数据分析等,例如盈亏分析等。

2、股票持仓汇总表

记录用户的持仓情况,用户当前持有了哪些股票,平均成本、市值、盈亏等信息。主要包括如下字段:

日期、资金账号、券商代码、股东账号、股票编码、股票名称、持有数量、可用数量、冻结数量、平均持有天数、总市值、总成本、现价、平均成本、持仓盈亏

从本表可以知道用户持有股票的总体情况,持有哪几只股票,每只股票的市值、成本、盈亏情况,以及可用数量、冻结数量等信息,这些信息也是实时变化的,在交易日会根据股票现价的变动实时计算,该表信息经过汇总计算后会更新投资总体情况表中的相关字段。

3、股票持仓详细记录

本表记录的用户在交易日当天买卖股票的详细情况,买入了哪几只股票,买入的数量、时间、成本等信息。该表的信息也是动态的。本表的数据也需要进行日切操作,每天都有一份数据去记录当日持有股票的情况。

主要包括以下字段:日期、开始持仓日期、股票持仓总表的主键、股票买入信息表主键、支持有天数、股票代码、股票数量、买入价格、成本价格、持有成本、股票现价、市值、持仓盈亏

4、 股票买入信息表

本表主要记录了买入股票的详细信息,本表为静态表。主要包括以下字段:

交割明细表主键、交易时间、交易流水号、资金号、股东账号、股票代码、交易类型、成交编号、成交数量、已被分摊比例、剩余可分摊股数、成交均价、成交金额、发生金额、佣金、交易规费、印花税、过户费、交易费用合计等

5、 股票卖出信息表

本表记录股票卖出的详细记录,数据可以来自证券软件导出的交割单,也可来自程序回测时自动触发的卖单,也可来自通过swing程序手工输入的卖单。

本表主要包括以下字段:

交割明细表主键、交易时间、资金账号、股东账号、流水号、股票编码、交易类型、成交数量、成交均价、成交金额、发生金额、佣金、交易规费、印花税、过户费、卖的总费用、实际应阔、盈亏分摊标志、总持有成本、买卖费用总计、每股卖出价格

6、股票买卖关联表

该表会将卖单和买单建立关联,用来核算单笔卖单的盈亏,一笔卖单可能对应多笔买单。买单和卖单的关联可以采用不同的算法来计算该笔卖单的盈亏,比如可以选择最小成本优先的算法,即该卖单优先选择低成本价的买单进行对应。不同的算法对应着不同的盈亏,程序的设计应该支持选择不同的算法。

主要包含字段如下:

卖单主键、买单主键、买入日期、买入数量、买入分摊比例、买入分摊数量、持有天数、资金时间价值、买入价格、买入实际价格、买入分摊成交金额、买入分摊金额、买入时分摊佣金、买入时分摊印花税、买入时分摊过户费、买入时分摊费用合计、卖出股票数量、成交均价、卖分摊的比例、卖出时该买单分摊的各项费用、该买单的总费用、持有成本、成本价、实际盈亏

7、 交割单明细表

          记录交割详细信息的表,该数据可以来自证券系统中导出的交割单信息,也可以由程序回测时生成。

主要包括以下字段:交易发生时间、流水号、资金账号信息、股东信息、流水号、股东编码、成交类型、成交编号、成交均价、成交金额、发生金额、佣金、交易规费、印花税、过户费、费用合计、股票余额、资金余额等信息。

系统进行回测时,系统会先初始化相关表信息,然后按顺序读取交割单明细表信息,模拟进行买卖股票。这种方式适用于从证券软件中导出交割明细,然后在导入交割单明细表,开启回测。

也可以在系统初始化后,由程序开始回测,这时系统会加载定制的策略,按照策略从指定的日期开始进行回测操作,比如回测一年,最后将回测结果和沪深300等基准数据进行比对,看是否能够跑赢市场。

交割单明细表一般会设计成两张表,一张表相对独立,仅仅用于保存自己的实盘数据,也就是从证券软件中导入的交割单数据。

另一张交割单明细表会和上边提到的股票相关表构成一个完整的体系。回测时的数据就在这一套表内完成。而相对独立的交割单这个表主要是提供一个回溯机制,能够将您的实盘交易数据导入到我们的系统中。为后续通过程序进行实盘操作提供一个起点。

8、资金流水表

本表主要记录资金的流水记录,支持的业务包括:银行转证券、证券转银行、利息归本、红利入账。

主要字段包括:交割单明细主键、发生时间、资金账号、券商代码、发生金额、交易类型等。

从银行入金到证券账户时,该表会增加一条记录,同时也会更新股票总体信息表的相关字段,设计到一些逻辑的计算等。当进行证券转银行操作时,股票总体信息表的资金将会减少,本表也会增加一条明细记录。

9、红利表

               本表记录了股票发放红利的信息,当股票发放红利时,会在该表中记录一条明细,同时也会更新股票总体信息表的相关字段。

主要字段包括:交割单明细主键、发生时间、资金账号、券商代码、发生金额、交易类型等

10、委托交易表、交易所交易信息表

              回测时,程序发出的买入、卖出交易指令,首先会发到该表,同时也发到交易所交易信息表,这样就模拟了一次下单,然后由交易所模拟程序根据逻辑决定交易所交易信息表中的某条交易数据是否应该成交,或者根据回测程序发出的撤单指令由交易所模拟程序来撤销改单。这样就通过程序模拟了一次完整的交易。交易所交易信息表中的数据有以下几种状态:待处理、已成交、已撤单。交易所模拟程序会将结果返回给回测程序。

回测程序下单->订单数据保存至委托交易表->将订单数据发送至模拟交易服务器(交易所端)->交易所模拟程序回传结果给回测程序。

委托交易表、交易所交易信息表一般应包含以下字段:委托时间、委托撤销时间、券商代码、资金账号、股东账号、股票编码、股票数量、交易方向、委托数量、委托状态、成交时间、成交数量、成交金额、成交均价等

以上为证券相关表的设计了,根据以上的设计,可以完整的模拟整套的股票交易行为,比如:充值银行卡、银行卡转证券、证券转银行卡、买入股票、卖出股票,对当前账户的总体情况查询,买入卖出明细查询、盈亏分析等。后续的回测程序也是对这些表的操作。再根据情况编写交易策略,已插件等方式嵌入到回测程序中,就可以进行回测了,根据回测结果的分析,可以检验交易策略是否成功,通过添加策略、回测,根据回测结果进行参数调整,这样我们就得到了一个完整的回测平台。

证券相关表设计完成后,下一步可以考虑交易数据存储相关的表设计了,比如:日行情数据表、股票信息表、股票分类信息表、财务数据等等,考虑到数据量巨大,我们应该要精心设计,我会逐步发布这些内容的,敬请期待。

关于证券相关表的更详细的内容,我近期整理后会发布为付费文章,如果有感兴趣的读者可以给我留言,我会尽快发布。

免责声明:本人所发表的所有文章、资源、知识等内容(包括免费、付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验、知识等内容,受个人水平所限这些知识、经验、代码等不一定是最佳实践,也可能存在遗漏、错误,请广大读者自行甄别(甄别方式:自我学习、百度搜索、请教高手等等)。本人所提供的一切文章、资源、知识等内容仅供读者参考,如需使用本人提供的文章、资源、知识等内容进行生产活动、项目开发、编写代码、生产环境部署等,请读者慎重考虑,本人对由此可能造成的生产事故、经济损失等不承担任何责任。

1、股票交易及量化投资回测分析系统的数据库设计-3相关推荐

  1. 1、股票交易及量化投资回测分析系统的数据库设计-5

    在阅读文章前,请读者朋友认真阅读免责声明: 免责声明:本人所发表的所有文章.资源.知识等内容(包括免费.付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验.知识等内容,受个人水平所限这些知识.经验 ...

  2. 1、股票交易及量化投资回测分析系统的数据库设计-4

    在阅读文章前,请读者朋友认真阅读免责声明: 免责声明:本人所发表的所有文章.资源.知识等内容(包括免费.付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验.知识等内容,受个人水平所限这些知识.经验 ...

  3. 使用java开发一个股票交易及量化投资回测分析系统

    经过近两年的研究和学习,我使用java开发(也使用了部分python,数据源:聚宽)出了一个股票交易及量化投资回测分析系统,将于近期陆续推出系列文章,向大家介绍一下整个开发过程,当整个系列文章都完成后 ...

  4. 量化投资回测教学之掌握矢量化回测

    量化投资回测教学之掌握矢量化回测 1. 什么是回测? 回测用于模拟交易策略的过去表现. 回测的核心概念是通过回溯时间来模拟给定的交易策略,并像过去一样执行交易.产生的利润通常通过一些指标(例如最大回撤 ...

  5. 用Python编程借助现有量化平台编写股票交易策略和回测分析

    一.简介 接下来笔者会给大家介绍股票交易中的常见几种交易策略实现思路和源码编写过程,如果大家听说过量化交易这个词语的话,对其中的交易策略或许了解过,大概意思就是在股票.加密货币或者金融衍生物在价格的波 ...

  6. 如何借助现有股票量化交易平台编写策略和回测分析

    每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商.股票分析软件都会带有机器人自动交易策略功能,大部分都需要 ...

  7. Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】

    使用Matplotlib生成专业的数据可视化仪表盘(下篇) 投资结果的可视化(下篇) 图表的布局规划及格式设定 图表布局 格式设定 表头和回测结果摘要信息 表1:绘制收益率曲线图 1,绘制投资收益率以 ...

  8. python外汇交易回测系统_StarQuant - 综合量化交易回测系统/平台

    Welcome to StarQuant StarQuant(中文名:易数交易系统)是一个轻量的.面向个人( 普通)用户的综合量化交易回测系统,目前主要用于期货期权程序化交易(CTP接口,在实盘测试中 ...

  9. python 量化策略回测_在python中创建和回测对交易策略

    python 量化策略回测 Pairs trading is one of the many mean-reversion strategies. It is considered non-direc ...

最新文章

  1. PageHelper 使用 ThreadLocal 的线程复用问题
  2. 计算机行业就业前景局限性,市场缺口很大的3个大学专业,一毕业就很吃香,就业前景很光明!...
  3. hashmap,hashTable concurrentHashMap 是否为线程安全,区别,如何实现的
  4. javasript --- 一个日期规范(x秒前,x分前...)
  5. 好的营销,往往叫广深高速
  6. 测试平台的发展与未来趋势
  7. python制作个人相册_这样精美的照片墙,其实python也能做
  8. 域名微信拦截html代码,微信域名拦截查询网页源码——一个非常实用的微信域名检测工具实现...
  9. java 下载excel到本地_java已知下载链接将Excel文件利用httpclient下载到本地
  10. java开源bi_poli-java开源BI软件
  11. 由粒子加速器产生的反中子形成的白洞
  12. 用excel制作双层饼图_原创教程:用Excel做动态双层饼图
  13. ios 切换多任务后台界面应用闪屏
  14. FreeBSD-12.2 安装GNOME3桌面视频教程
  15. nn.Sigmoid torch
  16. AndroidStudio初体验
  17. windows 2000 系统的不同版本
  18. 【iOS开发】相册选择图片识别条形码
  19. typedef 的用法
  20. 女码农献丑-企业智能机器人客服(图灵机器人)

热门文章

  1. 揭秘!刷百度权重的那些事,新手站长必看...
  2. 13/14周练习解析
  3. JS实用技巧之断点调试详解
  4. C. DS二叉平衡树构建(教材版)
  5. 如何将word人名制成表格
  6. 非极大值抑制与IOU
  7. 前端解决弹幕可以不挡人物
  8. 视频数据:彩色数据采集(Color Data)
  9. Prettier系列之配置
  10. 通俗易懂简单自学javascript基础