重读需求文档--为什么最开始我表现得特别菜?

eodRate

a. The current FX EOD rate page will have to include the new CFDs products so that Ops can import the CFD EOD rate into Falcon.
b. Ops should also be able to manually add the EOD rate for CFD products if required.

c. For Index CFD, since the EOD rate will be uploaded at the new Roll page, we would like system to populate those Index CFD EOD rate on the EOD rate page as well.

分析:这一个需求是一个很经典的需求,首先,将系统原有的功能做了一遍阐述,意在说明新的产品要通过怎样的方式与原有产品达到统一.(a和b,分别指的是eodRate的导入和手动录入)
在c里,提到了一个新需求,如果是roll过程中导入了eodRate,这里的eodRate要将系统的rate替换掉,这里看似很简单,但在实际了解了系统之前的逻辑之后还是要花一点功夫的,主要的原因在于很多接口所得到的rate并不是一个直接的数据库记录,而是通过与USD的置换得到的一个计算结果,所以会稍微麻烦一点.事实上,虽然说的比较简单,但实际上在开发过程中还是花了很长时间来平衡。

rollover processing

i. All Index CFD positions that are held pass each market’s trading close need to be rolled by closing the position and then re-establishing the position with new VD based on the EOD rate provided by our counterparty. This is like doing a “Today-Tom trade” with both leg bearing the same EOD price entered/uploaded into Falcon. (refer to Statement illustration for examples).
ii. The PL realized from the close out will be settled in the term currency into the account on T Date.

在这里简述了roll的开始和最终的状态,中间还有很多细节需要补充,但大致的基调已经确定,就是把今天的trade平掉,同时生成新的trade。

iii. For processing of the Index CFD roll, we will need a new Roll trade feature where

o System should automatically display the NOP distribution for both Broker & Client as well as the Value date of the “near & far” leg. When system is auto-deriving the value date of the far leg, please take reference to the “Roll Daily” setting of each Index CFD at Product setup. Please allow us to edit the near & far date in case we need to correct the dates…
这里在系统上最终体现出来的是一个标记”Ignore Currency Holiday“,但实际上这里在实现的优先级是比较低的,如上所说的,这个功能是correct 日期来做的。
o Allow us to upload an excel file which will contain the EOD rate and the financing rate for broker & the mark-up to apply to client’s positions. (refer to file format provided. Filename: CFD Costs Report Format for Upload to Falcon)
这个功能在开始看的时候是比较慌的,因为虽然对文件的操作是比较多,但以为自己去写一个上传下载还是比较麻烦的,当然,这个实际上还是很简单的。
o When processing is triggered, Falcon to automatically
• create the closing trade (has VD that is same as TD) & reopening trade (VD has a dependency on the “Roll Daily” setting of the product) for both house position & client positions at the same EOD rate.
• Compute the financing fee for both house position & client position taking into consideration the no. of calender days rolled which can be derived from the near & far date.
• Display the Prelim Financing Fee PL for each Index CFD product (similar to the FX Swap prelim PL)
roll的触发过程:生成roll trade,计算financing Fee,同时展示出一些数据来。
o After processing, System must generate an Index CFD position (client) file for upload to Integral to reflect the rolled position on the platform.
这个对应的trade的导出。这也说明了很多地方实际上都不用看的,因为可以在后面再补充到功能里面去,如果一开始就打算尽善尽美,头就有点大了,而且还不能抓住重点。
o We must be able to “reset” or “withdraw” the rollover so that we can correct any errors and process the roll again.
这里是触发roll的最后一步,roll和withdraw,知道有这个流程就可以了,实际也没谈到细节。

iv. For Index CFD products that is defined as

Roll Daily = Yes, this means the VD of the far leg disregard currency holiday and is always T+1, except for Friday’s roll which is T+3.
Roll Daily = No, this means the VD of the far leg take reference to currency holiday calendar and will be brought forward to next trading day due to no settlement on currency holiday.
在前面也有提到,这里是做了细节上的描述,也可以算是从文档上能读出来的第一个细节。当然,还是那句话,这里虽然提到的位置特别靠前,但实际上是一个拓展性功能,在后续做补充即可。

v. The CFD trading hours close at different times and we must process the roll after the trading close of the last CFD market. Generally we must process clients Index CFD position roll between 05:00hr – 06:00hr SGT (during Daylight Saving Time) and between 06:00hrs – 07:00 hr SGT (during Standard Time)

这里是在强调index roll执行的时间,从这里基本也获得了我最开始就想要的信息,哪些数据是可以获取到的,要不就要在执行前将报错返回给客户。

vi. After the Index CFD are rolled, an Index CFD position file needs to be generated by Falcon & this file needs to be uploaded to Integral BEFORE 06:00hr or 07:00hr SGT before the earliest market opens (depending on DST or ST) to reflect the rolled Index CFDs positions on the trading platform. This is time sensitive because Integral platform will clear out the Index CFD positions at 05:00hr SGT (during Daylight Saving Time) or 06:00hr SGT (during Standard Time).

这个基本就没有任何有用的信息了,单纯是让我们对客户的工作更加了解。

vii. The Index CFD positions can be uploaded to Integral using the same file format as the upload for Spot FX rollover positions. However for Index CFD file, only need to include the re-opening leg. The closing leg can be omitted from the output file because Integral will not display this trade due to its value date.

在后来的开发中我又一次地问了这里已经详述的问题,当然这里并没有完全描述清楚,但我一点都不知道就很离谱。

ix. Hence we foresee the sequence will be like this:
o After last Index CFD trading close, Ops trigger the Index CFD roll processing.
o After roll processing completed, upload clients’ rolled Index CFD position to Integral before first Index CFD trading open.
o Whenever ready, Ops then trigger EOD settlement run to process all trades and post the Index CFD financing fee etc
o After EOD run completed, credit file is uploaded to Integral to update credit balance
o On T+1, perform Spot FX/PM & Commodity CFD rollover processing
o Spot FX/PM & Commodity CFD Rollover position file is uploaded to integral to reflect updated positions.
这个是在阐述一个很简单的流程,并没有详述到rate导入等细节。

c. CFD Financing Rate & Fee

i. There will be a CFD financing fee for holding the Index CFD positions overnight and this is a cash credit/debit in the transaction currency on T date from/into customers’/broker trading account.
这次流程的关键,生成fee,这里的fee生成逻辑描述得非常详尽,
ii. The formula for computing CFD overnight financing fee is
open position quantity X financing rate X no. of calendar days rolled
核心公式
iii. Different financing rate will be needed to roll long positions & short positions.
roll的过程对应的就是financing rate和long position 的混合计算,并最终结合结果。
iv. The financing rate for house position is provided by our counterparty. The financing rate for client’s positions is our counterparty rate + markup.
同上,但显然最终的的方案还要多一个Percentage和FixAmount
v. The financing rates uploaded/entered into Falcon will be in absolute dollar terms e.g. 0.36GBP or -US$0.30. A negative rate indicates an expense to customer (a debit from cash balance) and positive rate indicates an income to customer (a credit to cash balance).
这里是在说pl页面上数据展示的角度–当然,这里比较麻烦,这里只是很简单的阐述。
vi. Similar to FX swap points, we will also markup on the CFD financing rate provided by our counterparty, and different category of customers will have different mark-ups.
这里是在说financing rate的混合计算策略,但很遗憾,这种零散式的描述不仅非常碎片化,让人难以串联到一起,而且不完备。。。虽然部分是在开发中补足的,但这里依然不够。
以上都是碎片化的rate的阐述。
作为一份需求文档,这里无疑是客户的零散需求,在和真实需求之间还差了一个产品(+技术)的拆分,这由产品总监来做,最后的效果显然很不错,该包含的基本都有,部分细节就是在开发和测试的逐步调试中完成。
很多功能都是依赖对系统的理解才能实现,因为细节提供的并不多,更多的细节实际上是在上一份文档(rollover的最初开发–鉴于公司内部的文档并不实时更新,估计也有很多缺漏)里面,当然作为一名已经有几个月该系统开发经验的,很多东西我在实现的时候,虽然会比较慢,但还是可以试着去理解的,我并没有去做,还是我个人能力和心态有问题。

vii. We need 2 new transaction / journal types “CFD Financing Expense” and “CFD Financing Income” for the cash debit/credit of the CFD Financing fee for Broker Account and Client Acct.
这个在实现的时候并不麻烦,毕竟在journal里有很多既定的类型,这里也只是在做重复的事情。
金融的世界有太多这样重复的东西,当然利率不一样,结果也不一样。
viii. Falcon also needs to auto-generate the related journal entries to
o post these financing fee to customer’s trading account & our counterparty trading account in Falcon.
o reflect as a cash entry on the “Cash Adjustment” section of Client’s statement, House statement & Broker’s statement using this description: “Overnight Financing for CFD”;
o reflect as a new line item “CFD Financing” on the Financial Summary Section.
o post the corresponding accounting ledger entries according to ledger mapping rules.
这里是对journal的详细描述,journal的功能有两个,一个是作为最后的出账数据,一个是在statement显示出来,作为用户决策的辅助文件。

比较难的需求理解基本在这里已经展示出来了,还有一个难点就在于流程控制上,实现过程所花费的时间是比较长的,我个人也比较愧疚,自己太菜写了这么久,对金融的理解也太浅,做了很多无用功。还好我会抱大腿。。。天天像个菜逼一样问来问去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值