指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
定义一些关键字代表的意义
- STRUCT: 代表需要输入的格式化的信息
- IMPORT: 代表需要输入的外部信息, 这些信息通常是客观的
- SEARCH: 需要从某地比如数据库检索搜集信息
- SUM: 一种宏观的加和操作, 比如两个股票户A+B=AB,微观上实际还是有差异
- GROUP: 一种聚合操作,目的是把符合条件的对象聚合起来
- FUNCTION: 代表可复用的函数
- RAISE: 代表出现了致命错误需要人工处理
- PRINT: 代表需要被注意的提醒
- RETURN: 代表可以被函数外部接受的指令
STRUCT 产品信息产品ID: 取值范围为正整数产品分类: 取值范围为[增强, 对冲, 杠杆对冲, 多空, 选股]
END STRUCTSTRUCT 股票账户 产品ID: 账户名: 股票市值: 取值范围为正浮点数股票可用: 取值范围为正浮点数股票账户交易应留: 取值范围为正浮点数股票账户持仓IF: 取值范围为正整数股票账户持仓IC: 取值范围为正整数股票账户持仓IM: 取值范围为正整数
END STRUCTSTRUCT 期货账户产品ID: 账户名: 期货保证金: 取值范围为正浮点数期货保证金比例: 取值范围为[0.12,1)期货可用: 取值范围为正浮点数期货应留: 取值范围为正浮点数期货账户持仓IF: 取值范围为整数期货账户持仓IC: 取值范围为整数期货账户持仓IM: 取值范围为整数
END STRUCTSTRUCT 融券账户产品ID: 账户名: 货币基金市值: 取值范围为正浮点数可用资金: 取值范围为正浮点数融券负债: 取值范围为正浮点数融券账户持仓IF: 取值范围为负整数融券账户持仓IC: 取值范围为负整数融券账户持仓IM: 取值范围为负整数
END STRUCTSTRUCT 申赎信息申赎方向: 取值范围为[申购, 赎回]申赎金额: 取值范围为带符号浮点数申赎日期: 取值为日期资金到账日期: 取值为日期
END STRUCTIMPORT 当前日期 // 输入当前日期
IMPORT 期货含安全垫保证金占比 // 通常股指期货为0.12+0.1+0.12*0.1=0.232
IMPORT 沪深300指数价格与乘数 // 取值范围为正浮点数
IMPORT 中证500指数价格与乘数 // 取值范围为正浮点数
IMPORT 中证1000指数价格与乘数 // 取值范围为正浮点数SEARCH & SUM 股票 // 汇总该产品所有股票账户
SEARCH & SUM 期货 // 汇总该产品所有期货账户
SEARCH & SUM 融券 // 汇总该产品所有融券账户
SEARCH & GROUP 申赎 // 汇总每个产品产品当日涉及的所有申赎信息FUNCTION 检查指增产品是否存在暴露()未加仓资金 = 股票.股票可用 + 期货.期货保证金 + 期货.期货可用现对冲价值 = 期货.期货保证金 / 期货保证金比例暴露 = 未加仓资金 - 现对冲价值IF 暴露 > 指数价格 * 乘数 * 期货含安全垫保证金占比 * 0.5RAISE 有未处理的暴露, 请手动处理后再处理申赎
END FUNCTIONFUNCTION MAIN(产品, 申赎)IF 当前日期 == 申赎.申赎日期IF 产品.产品分类 == 增强IF 期货账户 == 无IF 申赎.申赎方向 == 赎回股票应减仓手数 = 向上取整(-申赎.申赎金额 / 指数价格 / 乘数)减仓后股票持仓手数 = 股票.股票账户持仓 - 股票应减仓手数IF 减仓后股票持仓手数 < 0RAISE 有超过持仓价值的赎回RETURN 股票应减仓手数ELSE检查指增产品是否存在暴露()申购后未加仓资金 = 股票.股票可用 + 期货.期货保证金 + 期货.期货可用 + 申赎.申赎金额期货现对冲价值 = 期货.期货保证金 / 期货保证金比例申购后暴露 = 预期未加仓资金 - 期货现对冲价值期货需加减仓手数 = 四舍五入(申购后暴露 / 指数价格 / 乘数)加减仓后期货持仓手数 = 期货.期货账户持仓 + 期货需加减仓手数期货户合计应保留资金 = 取绝对值(加减仓后期货持仓手数) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需调入资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用IF 期货户需调入资金 > 0IF 股票.股票可用 - 股票.股票账户交易应留 < 期货户需调入资金RAISE 股票需减仓{期货户需调入资金 - (股票.股票可用 - 股票.股票账户交易应留)}以补充期货户ELSERETURN 期货需加减仓手数, 期货户需调入资金ELSEPRINT 期货资金有富余RETURN 期货需加减仓手数ELIF 当前日期 == 申赎.资金到账日期 - 1IF 产品.产品分类 == 增强 AND 申赎.申赎方向 == 赎回 AND 期货账户 == 有检查指增产品是否存在暴露()多空应减仓手数 = 向上取整(-申赎.申赎金额 / 指数价格 / 乘数 / (1 + 期货含安全垫保证金占比))减仓后股票持仓手数 = 股票.股票账户持仓 - 多空应减仓手数IF 减仓后股票持仓手数 < 0RAISE 有超过持仓价值的赎回减仓后期货持仓手数 = 期货.期货账户持仓 + 多空应减仓手数期货户合计应保留资金 = 取绝对值(减仓后期货持仓手数) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需调入资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用IF 期货户需调入资金 > 0IF 股票.股票可用 - 股票.股票账户交易应留 < 期货户需调入资金RAISE 股票需减仓{期货户需调入资金 - (股票.股票可用 - 股票.股票账户交易应留)}以补充期货户ELSERETURN 多空应减仓手数, 期货户需调入资金ELSEPRINT 期货资金有富余RETURN 多空应减仓手数ELIF (产品.产品分类 == 对冲 OR 产品.产品分类 == 杠杆对冲) AND 申赎.申赎方向 == 赎回多空应减仓手数 = 向上取整(-申赎.申赎金额 / 指数价格 / 乘数 / (1 + 期货含安全垫保证金占比))减仓后股票持仓手数 = 股票.股票账户持仓 - 多空应减仓手数IF 减仓后股票持仓手数 < 0RAISE 有超过持仓价值的赎回减仓后期货持仓手数 = 期货.期货账户持仓 + 多空应减仓手数期货户合计应保留资金 = 取绝对值(减仓后期货持仓手数) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需调入资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用IF 期货户需调入资金 > 0IF 股票.股票可用 - 股票.股票账户交易应留 < 期货户需调入资金RAISE 股票需减仓{期货户需调入资金 - (股票.股票可用 - 股票.股票账户交易应留)}以补充期货户ELSERETURN 多空应减仓手数, 期货户需调入资金ELSEPRINT 期货资金有富余RETURN 多空应减仓手数ELIF 当前日期 == 申赎.资金到账日期IF 产品.产品分类 == 增强IF 期货账户 == 无IF 申赎.申赎方向 == 赎回从股票户划出的赎回资金 = -申赎.申赎金额IF 股票.股票可用 - 股票.股票账户交易应留 < -申赎.申赎金额RAISE 股票户资金不足以划出, 应划出{-申赎.申赎金额}, 最大可划出{股票.股票可用}, 但应留{股票.股票账户交易应留}ELSERETURN 从股票户划出的赎回资金ELSE划入股票户资金 = 申赎.申赎金额股票可加仓资金 = 划入股票户资金 + 股票.股票可用 - 股票.股票账户交易应留股票应加仓手数 = 向下取整(股票可加仓资金 / 指数价格 / 乘数)IF 股票应加仓手数 <= 0PRINT 资金紧张, 不建议加仓ELSERETURN 股票应加仓手数, 划入股票户资金ELSEIF 申赎.申赎方向 == 赎回期货户合计应保留资金 = 取绝对值(期货.期货账户持仓) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需调入资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用IF 股票.股票可用 - 股票.股票账户交易应留 - 期货户需调入资金 < -申赎.申赎金额RAISE 资金不足以划出ELSEIF 期货户需调入资金 < 0从期货户划出的赎回资金 = -期货户需调入资金从股票户划出的赎回资金 = -申赎.申赎金额 - 从期货户划出的赎回资金RETURN 从期货户划出的赎回资金, 从股票户划出的赎回资金ELSE从股票户划入期货户资金 = -期货户需调入资金从股票户划出的赎回资金 = -申赎.申赎金额RETURN 从股票户划入期货户资金, 从股票户划出的赎回资金ELSE划入股票户资金 = 申赎.申赎金额股票可加仓资金 = 划入股票户资金 + 股票.股票可用 - 股票.股票账户交易应留股票应加仓手数 = 向下取整(股票可加仓资金 / 指数价格 / 乘数)期货减仓后持仓 = 期货.期货账户持仓 - 股票应加仓手数IF 股票应加仓手数 <= 0PRINT 资金紧张, 不建议加仓ELSEIF 期货减仓后持仓 < 0RAISE 期货持仓有误期货减仓释放资金 = 股票应加仓手数 * 指数价格 * 乘数 * 期货含安全垫保证金占比IF 四舍五入(期货减仓释放资金 / 指数价格 / 乘数) >= 1PRINT 本次申购加仓资金释放的期货资金较多, 需将这部分资金对冲掉RETURN 股票应加仓手数, 划入股票户资金ELIF 产品.产品分类 == 对冲 OR 产品.产品分类 == 杠杆对冲IF 申赎.申赎方向 == 赎回期货户合计应保留资金 = 取绝对值(期货.期货账户持仓) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需调入资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用IF 股票.股票可用 - 股票.股票账户交易应留 - 期货户需调入资金 < -申赎.申赎金额RAISE 资金不足以划出ELSEIF 期货户需调入资金 < 0从期货户划出的赎回资金 = -期货户需调入资金从股票户划出的赎回资金 = -申赎.申赎金额 - 从期货户划出的赎回资金RETURN 从期货户划出的赎回资金, 从股票户划出的赎回资金ELSE从股票户划入期货户资金 = -期货户需调入资金从股票户划出的赎回资金 = -申赎.申赎金额RETURN 从股票户划入期货户资金, 从股票户划出的赎回资金ELSE期货户合计应保留资金 = 取绝对值(期货.期货账户持仓) * 指数价格 * 乘数 * 期货含安全垫保证金占比期货户需补充资金 = 期货户合计应保留资金 - 期货.期货保证金 - 期货.期货可用股票户需补充资金 = 股票.股票账户交易应留 - 股票.股票可用多空加仓可用资金 = 申赎.申赎金额 - 期货户需补充资金 - 股票户需补充资金多空加仓手数 = 向下取整(多空加仓可用资金 / 指数价格 / 乘数 / (1 + 期货含安全垫保证金占比))IF 多空加仓手数 <= 0PRINT 资金紧张, 不建议加仓期货户加仓需要资金 = 多空加仓手数 * 指数价格 * 乘数 * 期货含安全垫保证金占比划入期货户的申购资金 = 期货户需补充资金 + 期货户加仓需要资金IF 划入期货户的申购资金 <= 0划入股票户的申购资金 = 申赎.申赎金额从期货户划入股票户的资金 = -划入期货户的申购资金RETURN 多空加仓手数, 从期货户划入股票户的资金, 划入股票户的申购资金ELIF 划入期货户的申购资金 <= 申赎.申赎金额划入股票户的申购资金 = 申赎.申赎金额 - 划入期货户的申购资金RETURN 多空加仓手数, 划入期货户的申购资金, 划入股票户的申购资金ELSE从股票户划入期货户的资金 = 划入期货户的申购资金 - 申赎.申赎金额划入期货户的申购资金 = 申赎.申赎金额RETURN 多空加仓手数, 划入期货户的申购资金, 从股票户划入期货户的资金ELSEELSEPRINT 该产品当日无需处理该笔申赎
END FUNCTIONFOREACH 产品FOREACH 申赎MAIN(产品, 申赎)TODO 未处理"申赎.申赎日期==申赎.资金到账日期-1"的情况
TODO 考虑杠杆对冲产品多头保证金带杠杆
TODO 考虑对冲产品可能包含融券持仓
相关文章:

指增和中性产品的申赎加减仓及资金调拨自动化伪代码思路
定义一些关键字代表的意义 STRUCT: 代表需要输入的格式化的信息IMPORT: 代表需要输入的外部信息, 这些信息通常是客观的SEARCH: 需要从某地比如数据库检索搜集信息SUM: 一种宏观的加和操作, 比如两个股票户ABAB,微观上实际还是有差异GROUP: …...

【论文分享】居住开放空间如何影响老年人的情感:使用可穿戴传感器的现场实验
本研究首次通过跟踪实时、高分辨率的环境暴露和情绪反应来研究和比较不同质量住宅社区中的居住开放空间(ROS)与老年人情绪之间关联;并采用混合方法,包括可穿戴传感器和问卷调查,收集了中国广州老年居民的客观和主观住宅…...

入门 | Prometheus+Grafana 普罗米修斯
#1024程序员节|征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 (1)、数据来源 数据来源,也就是需要监控的数据…...
制作Ubuntu根文件系统
制作Ubuntu根文件系统: gunzip ubuntu-base-22.04.5-base-arm64.tar.gz mkdir ubuntu tar xvpf ubuntu-base-22.04.5-base-arm64.tar -C ubuntu 挂载目录、复制dns、执行chroot cd /userdisk/ubuntu cp /etc/resolv.conf ./etc/resolv.conf mount --bind /dev ./d…...

16个最佳测试管理工具(2024)
1、前言 测试管理解决方案能够帮助你捕捉测试需求、设计测试用例、生成测试执行报告、管理资源等。软件质量的疏忽可能导致公司遭受巨大的经济损失、声誉损害或面临诉讼风险。一个优秀的测试管理工具是防止缺陷和故障进入生产环节的关键。 2、PractiTest 功能特点&#x…...

基于知识图谱的猕猴桃种植技术问答系统
猕猴桃怎么种植更高效、病虫害怎么防治、最适宜的气候条件有哪些?作为一名科技研发迷,这些问题是不是听起来很有挑战性?咱们今天就来聊聊一个特别的研发项目——基于知识图谱的猕猴桃种植技术问答系统。这不仅仅是一个农业项目,它…...

Swift雨燕蜂窝无线通信系统介绍
本文博客链接:jdh99-CSDN博客,作者:jdh,转载请注明. 1. 概述 物联网小无线通信技术众多,其中大多是小范围小规模的无线通信技术,而行业难点是如何做到广覆盖、大容量、低功耗。 针对以上难点,宏讯物联研发了Swift雨燕蜂窝无线通信技术&…...

【ZZULI】数据库第二次实验
【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…...

Javaee---多线程(一)
文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…...

Java后端面试内容总结
先讲项目背景,再讲技术栈模块划分, 讲业务的时候可以先讲一般再特殊 为什么用这个,好处是什么,应用场景 Debug发现问题/日志发现问题. QPS TPS 项目单元测试,代码的变更覆盖率达到80%,项目的复用性高…...

DC-1渗透测试
DC1 五个flag的拿取(截图是五个flag里面的内容) 注意事项:kali的用户名:root 密码:kali 注意:DC1 只要开机服务就起来了 思路:信息收集—> 寻找漏洞—> 利用漏洞(sql注入,文件上传漏洞…...
深度剖析:电商 API 接口如何成就卓越用户体验
在电商领域的激烈竞争中,提供卓越的用户体验已成为企业脱颖而出的关键。而电商 API 接口在其中扮演着举足轻重的角色,它如同电商平台的神经系统,连接着各个关键环节,为用户带来无缝、高效且个性化的购物之旅。 一、极速响应&#…...
C++调试经验:Ubuntu下CMake链接常见库的方式(持续更新)
目录 1. CMake链接OpenCV库 2. CMake链接VTK库 3. CMake链接Qt库 4. CMake链接PCL库 5. CMake链接Gstreamer 6. CMake链接json-cpp库 7. CMake链接yaml-cpp库 8. CMake链接breakpad库 9. CMake链接Eigen3库 1. CMake链接OpenCV库 find_package (OpenCV 4 REQUIRED)…...

【HarmonyOS】应用实现APP国际化多语言切换
【HarmonyOS】应用实现APP国际化多语言切换 前言 在鸿蒙中应用国际化处理,与Android和IOS基本一致,都是通过JSON配置不同的语言文本内容。在UI展示时,使用JSON配置的字段key进行调用,系统选择对应语言文本内容。 跟随系统多语言…...
使用pandas进行数据分析
文章目录 1.pandas的特点2.Series2.1新建Seriws2.2使用标签来选择数据2.3 通过指定位置选择数据2.4 使用布尔值选择数据2.5 其他操作2.5.1 修改数据2.5.2 统计操作2.5.3 缺失数据处理 3.DataFrame3.1 新建 DataFrame3.2 选择数据3.2.1 使用标签选择数据3.2.2 使用 iloc 选择数据…...

用于无监督域适应的提示分布对齐
论文探讨了视觉语言模型(VLMs)及其在无监督域适应(UDA)中的应用,并引入了一种名为提示分布对齐(Prompt-based Distribution Alignment,PDA)的方法,该方法采用双分支训练策…...

Rust整合Elasticsearch
Elasticsearch是什么 Lucene:Java实现的搜索引擎类库 易扩展高性能仅限Java开发不支持水平扩展 Elasticsearch:基于Lucene开发的分布式搜索和分析引擎 支持分布式、水平扩展提高RestfulAPI,可被任何语言调用 Elastic Stack是什么 ELK&a…...

Linux 文件权限管理:chown、chgrp 和 chmod 的使用及权限掩码规则
目录 文件权限的基本概念 chown:更改文件的拥有者 使用方法 示例 选项 chgrp:更改文件的所属组 使用方法 示例 chmod:更改文件的权限 使用方法 权限表示 选项 权限掩码(umask)规则 如何查看和设置 umask…...
简单记录ios打包流程
1、点击这里获取UDID 2、xcode登录开发者账户、确定唯一id(Bundle ID) 3、去这里注册appid 4、在这里这里创建app 5、之后xcode中打包...

右键以vscode打开目录的时候出现找不到应用程序
出现这个问题的主要原因,大概率可能是因为你移动了vscode的安装路径导致的。 解决办法 打开注册表:通过cmd 打开regedit 然后搜索:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell 这个两个参数可以自己比对一下,主要需要检…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...