已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
06系统算法手册20070726【修订稿】06版系统算法维护手册20070729赵兴扬版本:V1.00S.2007019恒生电子证券事业部二七年七月本文所述内容(包括文字和图片),恒生电子股份有限公司(以下简称“恒生”或“恒生公司”)拥有完全独立的唯一版权。未经恒生公司书面同意或授权,任何单位和个人都不得将其复制、影印或引用。文档修改记录版本号日期说明编写者审核者V1.020070729文档创建赵兴扬 目录文档修改记录21前言32成本价和盈亏额算法3算法相关表的主要字段说明3成本和赢亏说明4成本价算法5类型0 买入均价5类型1 持仓成本5类型2 保本价5盈亏算法6成本赢亏的举例7日终业务对成本的影响93资金算法10表和相关字段的说明10具体算法计算11期初余额(begin_balance)11当前余额(current_balance)11可用资金(enable_balance)11可取金额(fetch_balance)11可取现金(fetch_cash)124资产和市值算法12表和相关字段的说明12市值计算13资产计算131 前言本文档用于介绍06版柜台交易系统的一些主要算法的说明和举例,提供工程、维护人员、证券公司信息技术人员实际应用中作为参考。2 成本价和盈亏额算法算法相关表的主要字段说明1)股票表算法相关字段说明(stock) 字段名 字段含义STOCK_CODE 股票代码CURRENT_AMOUNT 当前数量 SUM_BUY_AMOUNT 累计买入数量 SUM_BUY_BALANCE 累计买入金额 SUM_SELL_AMOUNT 累计卖出数量 SUM_SELL_BALANCE 累计卖出金额 COST_PRICE 成本价2)股票变动表算法相关字段说明(stockreal) 字段名 字段含义STOCK_CODE 股票代码 ENTRUST_SELL_AMOUNT 委托卖出数量 REAL_BUY_AMOUNT 回报买入数量 REAL_SELL_AMOUNT 回报卖出数量 REAL_BUY_BALANCE 回报买入金额 REAL_SELL_BALANCE 回报卖出金额 成本和赢亏说明成本价的算法目前共有三种,分别为买入均价、持仓成本、保本价,有关成本价的一些知识说明如下:1、 成本价计算模式支持到个人,即每个客户都可以通过“资金帐户修改资产帐户修改”对成本价计算模式进行设置和调整(fit_flag)。如果客户的成本价类型(profit_flag)为空,则取系统的成本价类型,即1002开关设置的值。2、 后台每条股份记录(stock)都具有四个字段:sum_buy_amount 累计买入数量、sum_buy_balance 累计买入金额、sum_sell_amount 累计卖出数量、sum_sell_balance 累计卖出金额。这四个字段对于计算累计买卖后的成本价和盈亏金额非常有用,通常在日终清算时对这四个字段进行相关处理。3、 当日发生交易,产生股份变动记录(stockreal),也具有四个字段:real_buy_amount 成交买入数量、real_buy_balance 成交买入金额、real_sell_amount 成交卖出数量、real_sell_balance 成交卖出金额。这四个字段对于计算当日买卖后的成本价和盈亏金额非常有用,通常在回报成交时对这四个字段进行相关处理。4、 每天股份记录同时还有一个成本价字段cost_price,是日终清算时自动根据买入均价计算得到的,对于成本类型为0的客户,成本价直接取自该字段。5、 系统后台本身不记录股份盈亏金额,查询的时候通过同一个算法(不论当前客户是哪种成本价计算模式)计算出股份盈亏金额income_balance。6、 当费用比率通过前台程序进行进行修改时,as上缓存的费用(支持设置在内存数据库的那些表)会自动进行同步,不需要重启AS。目前基准费用设置需要重启AS。7、 3107开关设置的多冻结的值,会对计算当天买入卖出的费用计算和盈亏中的费用部分产生一定的但较小的影响。成本价算法类型0 买入均价成本价由日终来计算,白天实时成交买入和卖出不影响成本价,不考虑卖出费用;在200708的基线包前,cost_price包含了买入费用,以后不再包含买入费用。【公 式】后台成本价 日终后处理时对成本价字段进行自动设置。 前台显示成本价 = 后台股票表的成本价cost_pricestock.cost_price类型1 持仓成本成本价实时计算,考虑白天实时成交买入,但不考虑白天实时成交卖出;该成本价包含了买入费用,但不考虑卖出费用。【公 式】后台成本价 日终后处理时对成本价相关字段进行自动设置。前台显示成本价 =(累计买入金额回报买入金额)/(累计买入数量+回报买入数量)=(sum_buy_balance + real_buy_balance) / (sum_buy_amount+ real_buy_amount) 类型2 保本价成本价实时计算,考虑白天实时成交买入和卖出,所以白天买入卖出均影响成本价,同时该成本价包含了买入卖出费用;且采用步进算法,计算时步长以1厘为单位。【公 式】后台成本价 日终后处理时对成本价相关字段进行自动设置。前台显示 1) 成本价需要分步进行步进计算,首先得到一个不包含卖出费用的成本价的起始值cost_price= (累计买入金额回报买入金额累计卖出金额回报卖出金额)/ (累计买入数量回报买入数量累计卖出数量回报卖出数量) =(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)/ (sum_buy_amount+real_buy_amount-sum_sell_amount- real_sell_amount); 2)计算卖出费用temp_fare,需根据4125配置不同进行计算 41251,则为估算方式,费用比例取4126设置 temp_fare = (current_amount + real_buy_amount - real_sell_amount) * last_price * 0.00000001 * 4126的配置值cost_price=(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)/(1-0.00000001*4126的配置值)/(current_amount+real_buy_amount- real_sell_amount) 412520,则为预算方式,费用比例取自后台设置的标准费用类别计算得到temp_fare。(跟柜台不一致) 412502,则为实算方式,费用比例取自后台设置的客户实际费用类别计算得到temp_fare。 3)按步长单位进行计算 如果temp_mis=(current_amount + real_buy_amount - real_sell_amount) * cost_price-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)- temp_fare = 0.0000000000001,计算结束,此时cost_price即为保本价。问题:06交易版关于成本价为保本价的具体计算如何?解答说明:如果4125开关是1估算费率则会去取4126开关设置的费率,具体算法如下:cost_price=(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)/(1-0.00000001*4126的配置值)/(current_amount+real_buy_amount- real_sell_amount)如果4125是0预算,2精算费用时会涉及到逼近算法,正确的算法:第一步,计算cost_price= (累计买入金额回报买入金额累计卖出金额回报卖出金额)/ (累计买入数量回报买入数量累计卖出数量回报卖出数量)=(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)/ (sum_buy_amount+real_buy_amount-sum_sell_amount- real_sell_amount)第二步,temp_fare(current_amount + real_buy_amount - real_sell_amount) * cost_price(第一步就算出来的)* 费率41250,则为预算方式,费用比例取自后台设置的标准费用类别计算得到temp_fare。41252,则为精算方式,费用比例取自后台设置的客户实际费用类别计算得到temp_fare。temp_mis=(current_amount + real_buy_amount - real_sell_amount) *cost_price(第一步就算出来的)- (sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)- temp_faretemp_amount =(current_amount + real_buy_amount - real_sell_amount) (配了1131开关)temp_amount =current_amount (没配了1131开关)1131开关:周边查询委托的时候,股票的当前余额是否体现当日的买卖数量。逼近算法:如果差价(temp_mis/temp_amount)大于一厘那么系统就会将cost_price值加上差价,然后再逼近,直到差价(temp_mis/temp_amount)小于一厘时将会在成本价cost_price加上1厘,保证客户用此价格卖出不亏。盈亏算法无论选择何种成本价类型,盈亏算法一样,区别在于卖出费用计算部分(针对不同的4125设置),其中标准券888886和200000不计盈亏:盈亏金额 = 证券市值累计买入金额回报买入金额累计卖出金额回报卖出金额卖出费用 =market_value-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance) temp_fare其中temp_fare的计算按price表的最新价(last_price)计算且依赖于开关4125:开关4125为2, 卖出费用进行预算,则按标准费用类别(bfare0)计算后台计算得到temp_fare 开关41250,或1 则为实算方式,费用比例取自后台设置的客户实际费用类别计算得到temp_fare。成本赢亏的举例1) 某个客户某天买入000008,10000股,成交价格10元,假设客户对应费用类别的费用比例为0.004,预算费用比例4126设置为0.005,标准费用比例为0.006(此费用不是9999的费用),目前行情最新价已为11元,则白天成交后,后台stock和stockreal表中和成本盈亏相关的字段情况。白天成交后的stock和stockreal表中和成本盈亏相关的字段情况如下:Stock: Current_amountSum_buy_balanceSum_buy_amountSum_sell_amountSum_sell_balanceCost_price000000Stockreal: Real_buy_balancereal_buy_amountreal_sell_amountreal_sell_balance1004001000000则选择不同成本类型时的成本价如下:0成交均价:成本价cost_price 01持仓成本:成本价(sum_buy_balance + real_buy_balance) / (sum_buy_amount+ real_buy_amount)100400/10000=10.0402保本价:4125=1则成本价(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)/(1-0.005)/(current_amount+real_buy_amount- real_sell_amount)100400/(1-0.005)/10000=10.090 4125=2 ,成本价在初始的10.040基础上,按步长进行步进计算,直到temp_mis=(current_amount + real_buy_amount - real_sell_amount) * cost_price-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)- temp_fare 10000成本价1004001100000.006 0为止,得到成本价10.101盈亏:market_value-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance) temp_fare41252, 盈亏100001110040010000110.006 8940 41250或1, 盈亏1000011100400 10000110.0049160日终清算后的stock和stockreal表中和成本盈亏相关的字段情况如下:Stock:Current_amountSum_buy_balanceSum_buy_amountSum_sell_amountSum_sell_balanceCost_price10000100400100000010Stockreal: Real_buy_balancereal_buy_amountreal_sell_amountreal_sell_balance00000成交均价:成本价cost_price 101持仓均价:成本价10.0402保本价:4125=1 则成本价10.090 4125=2则成本价10.101盈亏:41252, 盈亏8940 41250或1, 盈亏91602) 假如第二天客户以12元的价格卖出了5000股000008,假设客户对应费用类别的费用比例为0.004,预算费用比例4126设置为0.005,标准费用比例为0.006(此费用不是9999的费用),目前行情最新价已为12元,则白天成交后,后台stock和stockreal表中和成本盈亏相关的字段情况如下:Stock: Current_amountSum_buy_balanceSum_buy_amountSum_sell_amountSum_sell_balanceCost_price10000100400100000010Stockreal: Real_buy_balancereal_buy_amountreal_sell_amountreal_sell_balance00500059760则选择不同成本类型时的成本价如下:0成交均价:成本价cost_price 101持仓均价:成本价10.0402保本价:4125=1则成本价(100400-59760)/(1-0.005)/5000=8.1694125=2 ,成本价在初始的8.128基础上,按步长进行步进计算,直到temp_mis=(current_amount + real_buy_amount - real_sell_amount) * cost_price-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)- temp_fare 0为止,得到成本价8.178盈亏:market_value-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance) temp_fare41252, 盈亏5000*12(100400-59760)5000120.00619000 41250或1, 盈亏5000*12(100400-59760)5000120.00419120日终清算后的stock和stockreal表中和成本盈亏相关的字段情况如下:Stock:Current_amountSum_buy_balanceSum_buy_amountSum_sell_amountSum_sell_balanceCost_price50001004001000050005976010 Stockreal: Real_buy_balancereal_buy_amountreal_sell_amountreal_sell_balance00000成交均价:成本价cost_price 101持仓均价:成本价10.0402保本价:4125=1则成本价(100400-59760)/(1-0.005)/5000=8.1694125=2 ,成本价在初始的8.128基础上,按步长进行步进计算,直到temp_mis=(current_amount + real_buy_amount - real_sell_amount) * cost_price-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance)- temp_fare 0为止,得到成本价8.178盈亏:market_value-(sum_buy_balance+real_buy_balance-sum_sell_balance-real_sell_balance) temp_fare41252, 盈亏5000*12(100400-59760)5000120.00619000 41250或1, 盈亏5000*12(100400-59760)5000120.00419120日终业务对成本的影响日终系统根据不同的业务计算sum_buy_amount,sum_sell_amount,sum_buy_balance,sum_sell_balance,cost_price值,并更新stock表。a、 证券买卖等:business_type in (0, U, F, D)的业务,如果occur_balance 0.0,则sum_sell_balance增加occur_balance,否则,sum_buy_balance增加abs(occur_balance);如果occur_amount 0,则sum_buy_amount增加occur_amount,否则sum_sell_amount增加abs(occur_amount)。b、 申购中签 、配售确认等:business_type in (1, E, O)业务,sum_buy_balance增加abs(occur_balance),sum_buy_amount增加abs(occur_amount)。c、 红股入帐:business_type = 3业务,sum_buy_amount增加abs(occur_amount)。d、 新股入帐和配股入帐: business_type in (2, 4)业务,其中对lof上市stock_type=K除外,其他sum_buy_balance增加occur_amountbusiness_price,sum_buy_amount增加occur_amount。e、股息入帐: business_type = 6业务,sum_sell_balance增加abs(occur_balance)。f、 证券托管、转托和余额入帐:business_type in (7, 8, B)业务,以price的收盘价asset_price作为成交价business_price计算成本,如果occur_amount 0,则sum_buy_balance增加business_priceoccur_amount,则sum_buy_amount增加occur_amoun;否则sum_sell_balance增加business_priceabs(occur_amount),sum_sell_amount增加abs(occur_amount)。g、 指定交易: business_type = A且75111(不是上海新接口),则置sum_buy_balance = 0, sum_sell_balance = 0,sum_buy_amount = 0,sum_sell_amount = 0,cost_price = 0, 如为上海新接口,则成本字段不作变化。h、 开基申赎: business_flag = 4073业务,sum_buy_balance增加abs(occur_balance),sum_buy_amount增加abs(occur_amount);business_flag = 4074业务,sum_sell_balance增加abs(business_balance),sum_sell_amount增加abs(occur_amount)。i、 置买入均价:根据上面的结算结果,对于sum_buy_balance的增加量0,如果证券后余额post_amount为0的,置cost_price = 0.0,否则,cost_price【(post_amount - _occur_amount)cost_pricesum_buy_balance的增加量】/【post_amount】3 资金算法表和相关字段的说明资金表相关字段说明(fund) 字段名 字段含义fund_account 资金帐号 begin_balance 期初余额 current_balance 当前余额cash_balance 现金余额 check_balance 支票余额 frozen_balance 冻结资金 unfrozen_balance 解冻资金 uncome_buy_balance 未回买入金额 uncome_sell_balance 未回卖出金额 uncome_correct_balance 未回买卖净额correct_balance 资产修正金额 foregift_balance 禁取资金 mortgage_balance 禁取资产bail_balance 交易产生的可用资金 具体算法计算在系统中,将用到几种不同含义的资金余额:期初余额、当前余额、可取金额、可用金额等。期初余额(begin_balance)指当天初始化后的最初余额,往往等同与前一天的最终余额。当前余额(current_balance)当前余额 = 期初余额 + 存入金额 - 取出金额 + 蓝补金额 - 红冲金额可用资金(enable_balance)可用金额 = 当前金额 - 冻结金额 + 解冻金额 + 交易解冻和冻结的差Enable_balancefund.current_balancefund.frozen_balancefund.unfrozen_balancefund.bail_balance其中fund.bail_balance是交易产生的解冻和冻结之差,通过以下实时计算得到fund.bail_balancsum(business_unfrozen_balancebusiness_frozen_balance)可取金额(fetch_balance)1)可取金额 = 当前金额 冻结金额 + sum(交易解冻-交易冻结) max(临时资金,0)禁取资金 未回卖出金额注1:sum(交易解冻-交易冻结bail_balance = sum(business_unfrozen_balance - business_frozen_balance)为交易解冻和交易冻结的差,现在实时体现在FUND表bail_balance字段上,注2:临时资金未回差额(uncome_correct_balance) + sum(交易解冻-交易冻结),即临时资金uncome_correct_balance + bail_balance,其中未回差额uncome_correct_balance在fund表里每日初始化会根据undeliver算得一个uncome_correct_balance字段。2)如果2019设置为当天存入不允许取出,则可取资金可取资金当日存入不许取的发生额其中当日存入不允许取的发生额为fundjour中现金类业务标志包含2001,2003,2041的累计发生额和支票类业务标志为2405的累计发生额。3)如果客户有禁取资产且(总资产禁取资产)0,a. 当可取资金总资产禁取资产时,则可取资金总资产禁取资产,b. 当可取资金总资产禁取资产时可取资金0。可取现金(fetch_cash)1)如果2018设置允许支票自动套现:则可取现金fetch_cash = 可取资金fetch_balance。2)如果2018设置不允许支票自动套现:如当前余额current_balance支票金额check
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 11长度和时间的测量-2021-2022学年八年级物理上册举一反三(原卷版)(人教版)
- 第2课++西方国家古代和近代政治制度的演变+课件高二历史统编版2019选择性必修1+国家制度与社会治理
- 3.1 水循环 课件 高一上学期地理人教版(2019)必修第一册
- 江苏省扬州市高三考前调研测试政治试题
- 文科数学一轮复习高考帮全国版试题第4章第4讲正余弦定理及解三角形(习思用数学文)
- 江苏省盐城市五校联考2024-2025学年高二上学期10月月考试题英语
- 九年级安全教育教案
- 一年级上册生命生态安全教案
- 小学二年级下册-生命、生活与安全-教案
- 专利技术转让个人居间协议
- 提升员工营销能力的企业教育培训
- 大学生社团对大学生的影响的社会调查报告
- 麻醉科临床诊疗指南2020版
- 马自达3昂克赛拉说明书
- 事业单位考试公文写作相关试题
- 全国教育科学规划课题申报书:67.《港澳台大中小学生国情教育高质量发展研究》
- 搪瓷钢板安装技术
- 某卫生院安全生产事故隐患排查治理制度
- 二手车合同模板电子版(通用)
- 洛阳市社会医疗保险特殊疾病门诊申请单
- (完整文本版)货物验收单
评论
0/150
提交评论