《06版系统成本等算法》由会员分享,可在线阅读,更多相关《06版系统成本等算法(12页珍藏版)》请在金锄头文库上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页 共1页06版系统算法维护手册 目录文档修改记录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表和相关字段
2、的说明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)
3、 字段名 字段含义STOCK_CODE 股票代码 ENTRUST_SELL_AMOUNT 委托卖出数量 REAL_BUY_AMOUNT 回报买入数量 REAL_SELL_AMOUNT 回报卖出数量 REAL_BUY_BALANCE 回报买入金额 REAL_SELL_BALANCE 回报卖出金额 成本和赢亏说明成本价的算法目前共有三种,分别为买入均价、持仓成本、保本价,有关成本价的一些知识说明如下:1、 成本价计算模式支持到个人,即每个客户都可以通过“资金帐户修改资产帐户修改”对成本价计算模式进行设置和调整(fundaccount.profit_flag)。如果客户的成本价类型(profit_f
4、lag)为空,则取系统的成本价类型,即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 成
5、交卖出数量、real_sell_balance 成交卖出金额。这四个字段对于计算当日买卖后的成本价和盈亏金额非常有用,通常在回报成交时对这四个字段进行相关处理。4、 每天股份记录同时还有一个成本价字段cost_price,是日终清算时自动根据买入均价计算得到的,对于成本类型为0的客户,成本价直接取自该字段。5、 系统后台本身不记录股份盈亏金额,查询的时候通过同一个算法(不论当前客户是哪种成本价计算模式)计算出股份盈亏金额income_balance。6、 当费用比率通过前台程序进行进行修改时,as上缓存的费用(支持设置在内存数据库的那些表)会自动进行同步,不需要重启AS。目前基准费用设置需要重
6、启AS。7、 3107开关设置的多冻结的值,会对计算当天买入卖出的费用计算和盈亏中的费用部分产生一定的但较小的影响。成本价算法类型0 买入均价成本价由日终来计算,白天实时成交买入和卖出不影响成本价,不考虑卖出费用;在200708的基线包前,cost_price包含了买入费用,以后不再包含买入费用。【公 式】后台成本价 日终后处理时对成本价字段进行自动设置。 前台显示成本价 = 后台股票表的成本价cost_pricestock.cost_price类型1 持仓成本成本价实时计算,考虑白天实时成交买入,但不考虑白天实时成交卖出;该成本价包含了买入费用,但不考虑卖出费用。【公 式】后台成本价 日终后
7、处理时对成本价相关字段进行自动设置。前台显示成本价 =(累计买入金额回报买入金额)/(累计买入数量+回报买入数量)=(sum_buy_balance + real_buy_balance) / (sum_buy_amount+ real_buy_amount) 类型2 保本价成本价实时计算,考虑白天实时成交买入和卖出,所以白天买入卖出均影响成本价,同时该成本价包含了买入卖出费用;且采用步进算法,计算时步长以1厘为单位。【公 式】后台成本价 日终后处理时对成本价相关字段进行自动设置。前台显示 1) 成本价需要分步进行步进计算,首先得到一个不包含卖出费用的成本价的起始值cost_price= (累
8、计买入金额回报买入金额累计卖出金额回报卖出金额)/ (累计买入数量回报买入数量累计卖出数量回报卖出数量) =(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 -
9、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) 41252,则为预算方式,费用比例取自后台设置的标准费用类别计算得到temp_fare。 41250,则为实算方式,费用比例取自后台设置的客户实际费用类别计算得到temp_fare
10、。 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即为保本价。盈亏算法无论选择何种成本价类型,盈亏算法一样,区别在于卖出费用计算部分(针对不同的4125设置),其中标准券888886和200000不计盈亏:盈亏金额 = 证券市值累计买
11、入金额回报买入金额累计卖出金额回报卖出金额卖出费用 =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,10
12、000股,成交价格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_
13、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