20201111-量化交易系统产品账号个股N:N及风控策略设计
<h1><center>量化交易系统产品账号个股N:N及风控策略设计文档_v1.0</center></h1>
<h2>修订记录</h2>
<table>
<thead>
<tr>
<th style="text-align: center;">版本号</th>
<th style="text-align: center;">修订人</th>
<th style="text-align: left;"><div style="width: 85px;">修订日期</div></th>
<th style="text-align: left;"><div style="width: 380px;">修订内容</div></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">V1.0</td>
<td style="text-align: center;">Challenger</td>
<td style="text-align: left;">2020-11-11</td>
<td style="text-align: left;">init</td>
</tr>
<tr>
<td style="text-align: center;">V1.0</td>
<td style="text-align: center;">Challenger</td>
<td style="text-align: left;">2020-11-12</td>
<td style="text-align: left;">添加接口定义、类图、DB schema、时序图</td>
</tr>
</tbody>
</table>
<p>[TOC]</p>
<h2>1.引言</h2>
<h3>1.1 编写目的</h3>
<p> 为了平衡资金账户的风险,一个产品会同时配置给多个资金账户,即一个产品在交易时会通过多个资金账户下单。目前已经实现资金账号与产品1:N,需要对产品与资金账号做1:N支持。实际操作过程中自动交易采用1产品1账号1个股的配置,人工操作交易采用1产品N账号N个股的配置。自动交易执行1次预测模型需要执行N个产品交易策略执行,根据交易策略结果执行交易下单。
本文档给出量化交易系统产品账号个股N:N及风控策略设计说明,包括最终实现的功能需求、技术架构方案、业务时序图、数据库模型设计、相关页面设计。
产品研发过程以本文档为基础,技术代码依照本文档方案执行。如过程中涉及需求、架构、方案设计调整都需要更新到本文档中。</p>
<h3>1.2 范围</h3>
<p><strong>范围说明:</strong></p>
<ol>
<li>量化交易系统产品账号个股N:N;</li>
<li>风控策略(如:股指下跌、净现金价值不足、日间模型分低);</li>
<li>交易策略执行/交易下单处理/订单成交回报/数据存储各环节性能;</li>
</ol>
<h3>1.3 术语</h3>
<table>
<thead>
<tr>
<th style="text-align: center;">术语</th>
<th style="text-align: center;">术语定义</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">二方</td>
<td style="text-align: center;">本系统模块之外的所属本企业的内部系统模块,如:规则引擎、指标平台...</td>
</tr>
<tr>
<td style="text-align: center;">三方</td>
<td style="text-align: center;">除本企业内部所有系统之外的外部服务商,如:IB、FMP、英为财情...</td>
</tr>
<tr>
<td style="text-align: center;">量化交易平台</td>
<td style="text-align: center;">澈悟量化交易平台</td>
</tr>
<tr>
<td style="text-align: center;"></td>
<td style="text-align: center;"> </td>
</tr>
</tbody>
</table>
<h3>1.4 参考资料</h3>
<p>《重构:改善既有代码的设计》</p>
<h2>2.整体设计</h2>
<h3>2.1 整体架构图</h3>
<p><strong>业务逻辑架构图</strong>
<strong>1.自动交易业务逻辑架构图</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/e11f283dcc3c21414a1b71b7944cadfa?showdoc=.jpg" alt="" />
<strong>2.人工操作交易业务逻辑架构图</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/b7652dbf7a872d0baa2e8dc4e9ea82f3?showdoc=.jpg" alt="" /></p>
<p><strong>运维部署架构图</strong>
暂无</p>
<p><strong>技术架构图</strong>
暂无</p>
<h3>2.2 关键子功能模块</h3>
<p>参考《2.1 整体架构图》</p>
<h3>2.3 关键业务时序图</h3>
<p>参考《2.1 整体架构图》</p>
<h3>2.4 技术实现tips</h3>
<p>1.新建Branch【202011113_productAndRisk_v220】
2.多线程设计实现关键类设计及逻辑代码;</p>
<h2>3. 接口设计</h2>
<h3>3.1 三方接口</h3>
<p>暂无</p>
<h3>3.2 二方接口</h3>
<h3>3.2.1 查询产品指标结果接口【HTTP】</h3>
<p><a href="https://www.showdoc.com.cn/p/810a269812de2b5ea7f655075b450e6f">https://www.showdoc.com.cn/p/810a269812de2b5ea7f655075b450e6f</a></p>
<h3>3.2.2 产品交易订单【异步消息】</h3>
<p><a href="https://www.showdoc.com.cn/p/da5f4224a50b1624c1aa00ee941034f6">https://www.showdoc.com.cn/p/da5f4224a50b1624c1aa00ee941034f6</a></p>
<h3>3.2.3 订单成交回报【异步消息】</h3>
<p><a href="https://www.showdoc.com.cn/p/13444ba465b3db26c77ab24acafd07f2">https://www.showdoc.com.cn/p/13444ba465b3db26c77ab24acafd07f2</a></p>
<h3>3.2.4 人工操作交易下单接口【HTTP】</h3>
<p><a href="https://www.showdoc.com.cn/p/b649cb576a2860096e9074c563c8492b">https://www.showdoc.com.cn/p/b649cb576a2860096e9074c563c8492b</a></p>
<h2>4. 子模块设计</h2>
<h3>4.1 规则引擎-交易策略模块</h3>
<h4>4.1.1 模块需求说明</h4>
<p> 交易策略模块</p>
<h4>4.1.1 架构设计图</h4>
<p>暂无</p>
<h4>4.1.2 关键业务时序图</h4>
<p>暂无</p>
<h4>4.1.3 数据库结构设计</h4>
<p><strong>数据库结果及ER关系图</strong></p>
<hr />
<h3>4.2 量化交易平台-交易下单、订单成交回报模块</h3>
<h4>4.2.1 模块需求说明</h4>
<p> 多产品同时交易下单目前的方案采用单线程串行执行的方式,这样的执行时间慢,队列最后的产品下单和第一个产品存在时间差,影响交易结果。现需要满足多产品多账号同时完成下单指令执行,而且订单成交回报也需要按账号并发处理,保证交易性能。</p>
<h4>4.2.1 架构设计图</h4>
<p>暂无</p>
<h4>4.2.2 关键业务时序图</h4>
<p><strong>交易下单</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/98c2052be894cdc1f2eb06cd9f135b89?showdoc=.jpg" alt="" />
<br/>
<strong>订单成交回报</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/4fa09ada501f1faeb478320b148a878f?showdoc=.jpg" alt="" /></p>
<h4>4.2.3 程序设计</h4>
<p> 根据需求需要按产品多线程池并发执行,技术上采用按产品拆分独立的线程池,1个账号线程池的coreThread数量为1,保证1个账号下同时操作的线程只有1个。</p>
<h4>4.2.4 数据库结构设计</h4>
<p><strong>数据库结果及ER关系图</strong>
<img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/6b100fb0664200b702597df35e985a30?showdoc=.jpg" alt="" /></p>
<hr />
<h3>4.3 规则引擎-风控策略模块</h3>
<h4>4.3.1 模块需求说明</h4>
<p> 风控策略</p>
<h4>4.3.1 架构设计图</h4>
<p>暂无</p>
<h4>4.3.2 关键业务时序图</h4>
<p>暂无</p>
<h4>4.3.3 程序设计</h4>
<p> </p>
<h4>4.3.4 数据库结构设计</h4>
<p><strong>数据库结果及ER关系图</strong></p>
<h2>5. 性能</h2>
<h3>性能评估</h3>
<p>按8个账号并发执行,瞬时最大线程数为:16个线程,为减少线程上下文切换,按最大线程并发评估系统CPU资源建议4-8C。</p>
<h3>性能指标需求</h3>
<h4>延迟、qps、tps</h4>
<ol>
<li>每日收盘后获取收盘高开低收量数据延迟;<=1min</li>
<li>实时1分钟k数据获取清洗延迟;<=3s</li>
<li>
</li>
</ol>
<ul>
<li>交易延迟
<ul>
<li>模型执行时长
<ul>
<li>定义:日内模型开始运行,到日内模型结果输出,交易引擎依据模型结果决策,输出决策结果,所花费总时间。
<ul>
<li>日间模型:<3s</li>
<li>日内模型:<2s</li>
</ul></li>
</ul></li>
<li>交易决策时长
<ul>
<li>定义:日内模型开始运行,到日内模型结果输出,交易引擎依据模型结果决策,输出决策结果,所花费总时间。
<ul>
<li>模型结果交易决策:<1.5s</li>
<li>成交回报交易决策:<1s</li>
</ul></li>
</ul></li>
</ul></li>
<li>自动报单延迟
<ul>
<li>定义:从自动报单决策产生到交易接口返回接收成功,所花费的总时间。</li>
<li>指标:V2版本交易系统做到<3s,后续V3版本<1s
<ul>
<li>成交回报</li>
</ul></li>
<li>定义:从交易接口接收到成交回报回调,到成交回报处理完成(入库保存、生成新的事件),所花费的总时间。</li>
<li>指标:V2版本交易系统做到<1.5s,后续V3版本<1s
<ul>
<li>度量方法</li>
</ul></li>
<li>在涉及上述度量点的代码中输出带时间戳的日志,通过对日志流分析来获取度量指标。</li>
</ul></li>
</ul>
<h2>6. 安全</h2>