• Financial


    芝加哥商品交易所--债券盈亏公式

    背景

    原本债券的盈亏计算,都是统一交给下游的量化系统统一处理。

    但由于业务量增加,量化引擎计算力出现了瓶颈,经常导致交易员下单后看到持仓的盈亏数据出现延迟。

    因此,为了提升性能,我们把债券交易 和 债券期货交易 的盈亏计算剥离出来。不再走量化系统,而是通过自己获取交易数据、市场数据、静态数据来计算。

    计算公式

    关于计算公式,我们参考的是,芝加哥商品交易所给出的期货交易盈亏计算方法:

    CME Group version = (livePrice - tradePrice) * "size of contract" * "number of contracts"
    =(当前市场价 - 交易价格)* 合约规模 * 合约数目

    那么落实到我们的项目中,需要结合野村内部的概念,对交易的盈亏计算做新老区分:

    对于当天新交易:和交易所给出的公式并无差别

    对于之前的老交易:当前市场价 减去的 不再是 交易价格,而是量化部门给出的一个经过市场shock后的一个价格。合约数目也不再是成交时的数目,而是当前持仓。

    Bond Trade

    BondFuture Trade

    •  

    DCF--现金流折现估值法

    项目背景:

    交易部门发现某些债券的估值有问题,该估值原本应该由上游系统提供。但他们的计算方式非常复杂,无法快速做一个修复。

    一个应急的折中方案,就是在我们的引擎里计算出这个债券估值,然后喂给更下游组件。

    交易团队指明需要DCF法对这些债券做一个估值,因此我有机会了解下现金流折现估值法。

    DCF解释:

    DCF全程叫做Discounted Cash Flow-现金流折现估值法,本质就是把企业未来特定期间内的预期现金流还原为现值。

    对于折现率我是这么理解的:由于通货膨胀的存在,现金购买力在下降,未来的100块的购买力肯定不如现在的100块。假设现在牛肉肉价格是100块一斤,一年后卖105块;那么以牛肉为标的,1年后的105块折算到现在就是100块,一年期的贴现率为(105-100)/100 =5%

    落实到我们的项目,折现率我们使用数据部门提供的无风险利率;现金流通过 债券面值*票面利率来计算,再根据股息频率,一年期的现金流,要除以(1+无风险利率);两年期的现金流就要除以(1+无风险利率)的二次方,以此类推。。。

    假设企业的未来1~n年的现金流为D1、D2、D3……Dn,假设折现率为恒定的r,那么未来n年的现金流折现到现在的公式如下:

    适用公司类型:

    DCF模型只适合那些处于稳定期的企业,赚钱能力已经定型,企业自由现金流可以预期,公司未来基本定型(甚至是销售合同或销售价格都有合同约束,那么就越适宜用现金流折现)。比如污水处理厂、签有PPA协议的电厂、高速公路等。

    关键假设:

    第一,假设公司未来是稳定增长的。

    第二,假设公司未来现金流可预测。

    第三,假设公司未来存续期可期。

    第四,假设社会无风险利率维持固定水平。

    相对估值法(市盈率)

    DCF属于绝对估值法。还有一类方法叫相对估值法,最常用的方法是市盈率估值方法,它的侧重点不在于自身到底值多少,而在于和同类型公司相比自己处于什么位置。

    影响因素有:行业因素,企业发展阶段

    关于市盈率的计算:

    静态市盈率:是股票价格除以每股盈利的比率。比如说,上市公司目前股价为20元,每股收益为0.38元,静态市盈率:20元÷0.38元=52  表示在每股盈利不变的情况下,经过多少年投资可以通过股息全部收回。

    动态市盈率:是以静态市盈率为基数,乘以动态系数。该系数为1÷(1+i)n,其中i为企业每股收益的增长性比率,n为企业可持续发展的存续期。比如说,上市公司目前股价为20元,每股收益为0.38元;去年同期每股收益为0.28元,成长性i为35%,该企业未来保持该增长速度的时间n可持续5年,则动态系数为1÷(1+35%)5=22%。相应地,动态市盈率为11.6倍[即:52(静态市盈率:20元÷0.38元=52)×22%]。两者相比,差别之大。

    EfficiencyRatio--效率比值策略

    策略背景

    1.“EfficiencyRatio效率比值” 概念是美国交易员 Perry J. Kaufman 佩里·考夫曼 在1995年提出的,是一种趋势强度的衡量。它的计算公式是:

    • ER = N期间内价格总变化 / N期间内个别价格变化的绝对值
    • 取值范围为-1.0到1.0; -1.0代表最强烈的下跌趋势,1.0代表最强烈的上涨趋势, 0.0代表无方向性的波动

    参数池解释

    2. 在我们的项目中,使用ER策略对期货进行回测交易,参数因子池包含了5个参数,分别是:

    • K线的长度M:也就是说选取M分钟(该策略是日内策略)的K线(就是下图的每个红色/绿色的K线:K线也分1分钟K线,5分钟K线,天K线,周K线,年K线,等) 
    • 回望周期N:就是指计算ER时使用了几根上一步的K线
    • 追踪止损的比例L:止盈止损的比例,触发时会平掉持有的头寸
    • 多仓ER阈值:当ER值到达多大的正值,开多仓
    • 空仓ER阈值:当ER值到达多大的负值,开空仓

    项目中,我们遍历60个交易日,选出最好的一组参数,给接下来的20个交易日使用。以此类推,动态获取最优参数。

    我的主要贡献

    3. 我的主要贡献:

    • 代码的补充实现:以及bug fix - 策略收益一直从15年的某一刻(回测期2014.01-2016-12)开始持续异常下跌,原因是代码在特定条件下的开多开空逻辑颠倒
    • 策略的完善:原本的参数池只有4个因子,开多仓和开空仓的阈值始终保持一致。之后,我就改为分开设置,多仓空仓的信号阈值不同。
      • 原本的夏普率:1.42,年化收益率:18%,最大回撤:14.8%
      • 修改后夏普率:1.29,年化收益率:21%,最大回撤:13.4%
      • 结论:夏普率下降0.2个点,年化收益率上升2个点,最大回撤下降2个点

    注意:该策略是日内策略,会在每个交易日的最后一条K时,强制平仓

    评价策略效果的其他参数

    https://www.cnblogs.com/frankcui/p/14337155.html

  • 相关阅读:
    Android开发之EditText属性详解
    android开发如何在页面之间传参
    jquery中attr和prop的区别
    Laravel 5.2--改变数据库字段值,编辑时候,默认选中
    Laravel 5.2--git冲突error: Your local changes to the following files would be overwritten by merge:
    Laravel 5.2--如何让表单提交错误,不清空?
    Apache 和 Tomcat联系和区别
    mac 上如何安装非app store上的下载的软件-------打开未知来源
    &#65279导致页面顶部空白一行解决方法
    面向对象设计的三个基本特征
  • 原文地址:https://www.cnblogs.com/frankcui/p/15221440.html
Copyright © 2020-2023  润新知