交易员Excel小课堂:如何在债券剩余期限后自动显示“休1”/“休2
《交易员Excel小课堂:如何在债券剩余期限后自动显示“休1”/“休2”?》,傻大方资讯编辑整理。我们不生产头条,我们只是社会头条新闻的搬运工!健康摘要: 2018-03-11 都市现场 都市现场 消息来源:都市现场(jxtvdsxc)综合广西新闻 最近,桂林市资源县的一对夫妇在食用了捕捉来的“癞蛤蟆”后中毒,两人立即前往当地的医院就医,妻子中毒严重,经抢救无效不治身亡,丈夫经抢救挽回一命。 田间抓回瘌蛤蟆 一吃即丧命 2月27日晚...
正文开始:
来源:
知乎
作者:韩博
原标题:在Excel中实现债券剩余期限后自动显示“休1”/“休2”的方法
在QB中,剩余期限小于一年的债券,如果到期日为假期就会在剩余期限后标注(休1、休2等)。如果在Excel中也能实现这个功能,不仅会提示自己注意,也会在给其他交易对手刷券的时候,提醒对方注意,以免造成不必要的误会。
1、首先生成一列交易日序列:
wind选项卡-插入日期,生成日期:
日期为上海交易所的交易日(银行的小伙伴可以选择银行间交易日)
时间设置为从今天起一年的时间,排序选择
降序
插入到一列不会被删除的地方。插入后把第一个单元格的公式中起始日和终止日改为today()和today()+365,保证每天更新。
或者直接在单元格输入下面公式:
=TDays(today(),today()+365,"Order=D")
2、在要素表中新建一列字段[休息天数],表示如果到期日为休息日,距下一个交易日的天数
公式为:
=IFNA(OFFSET(Sheet3!$A$1,MATCH([@到期日],Sheet3!$A:$A,-1)-1,0)-[@到期日],0)
其中
Sheet3!$A$1为交易日序列的第一个单元格
Sheet3!$A:$A为该交易日序列
[@到期日]为要素表中从wind读取的到期日,公式为b_info_maturitydate([@债券代码])+0(+0的作为在于将文本格式的日期转为日期格式,这样才能用于后面的匹配)
MATCH的作用是找到到期日在交易日序列中的位置,如果不在序列中,就输出前一个位置(后一交易日所在的位置),OFFSET是找到这一个交易日,再减去到期日,就是休息的天数。
3、在要素表中再新建一列字段,表示剩余期限
公式为:
=b_date([@期限],[@休息天数])
其中:
期限为=b_info_termnote([@债券代码])
休息天数为第二点的算出来的字段
b_date是我写的一个函数,把下面这段代码粘贴到模块中:
Function b_date ( termnote , Optional hol = 0 , Optional onlynum = False ) 'termnote表示wind函数b_info_termnote的取值,hol表示休几,onlynum为可选参数,用于计算到期日为休息日对实际收益率的影响 k = InStr ( termnote , "+" ) '判断期限是否为含权的特殊期限 If k = 0 Then d_left = termnote Else d_left = Left ( termnote , k - 1 ) d_right = "+" & Right ( termnote , Len ( termnote ) - k ) End If If onlynum = True Then b_date = d_left Exit Function End If '对剩余期限不足一年和超过一年的以不同单位显示,对到期日是否为休息日进行说明 If d_left >= 1 Then d_left = Round ( d_left , 2 ) & "Y" ElseIf hol <> 0 Then d_left = Round ( d_left * 365 , 0 ) & "D" & "(休" & hol & ")" Else d_left = Round ( d_left * 365 , 0 ) & "D" End If b_date = d_left & d_right End Function
这个函数可以提示到期日是否为休息日,也可以将一年内的期限单位转化为天(D),一年以上的单位为年(Y),并且保留合适的小数位,保留含权期限。
最后做出来的效果是
另外,也可以再加一列,计算到期日为休息日对实际收益率的影响,公式为:
=[@休息天数]/b_date([@期限],0,TRUE)/365*100*[@中债到期估值]
最后,配合我之前写的生成交易要素,只需一键,就可以一键生成带休的到期日啦!
生成交易要素,只需一键
贴报价是每个交易员最最重要的日常了:在Excel里总结好了报价要素,然后在QQ上贴给broker、交易员或者刷到群里。然而直接复制Excel内容粘贴到QQ里,只能粘贴图片。图片又不便于编辑,整理,甚至有些交易员的QQ无法接受图片。所以就需要先粘贴到文本文档(或Word)中,在从文本文档复制粘贴到QQ中。其实有一个更简单的方法,就可以实现一键复制Excel内容。方法如下:
在Excel中ALT+F11,或者右键工作表标签、点查看代码,或者点工具-宏-visual basic 编辑器 。进入以后插入一个模块,复制下面这段代码,.然后在工作表中插入按钮(开发工具-插入-表单控件-按钮,找不到开发工具?如何打开Excel的“开发工具”),指定paste这个过程(在Excel 中添加代码)。用的时候,先选中需要复制的地方,然后点击这个按钮就可以运行了。
Sub paste () Dim break$ , r% , c% , str$ break = Chr ( 32 ) + Chr ( 32 ) For r = Selection . Row To Selection . Row + Selection . Rows . Count - 1 For c = Selection . Column To Selection . Column + Selection . Columns . Count - 1 str = str & Cells ( r , c ). Text & break Next str = str & Chr ( 13 ) Next Dim d As New DataObject Set d = New DataObject '如果报错,引用中勾选 Microsoft Forms 2.0 Object Liabrary With d . SetText str '要写入的文本 . PutInClipboard End With Set d = Nothing MsgBox "已经复制" '可以提供一个执行成功的反馈,如果不喜欢可以注释掉这句 End Sub
第一次使用,需要在代码窗口中,选工具-引用-勾选 Microsoft Forms 2.0 Object Liabrary,否则会报错。保存时注意选择“启用宏的工作簿”,也就是xlsm格式。
END
- 【舞蹈小课堂】送你11条跳舞小技巧,进步神速!要牢记
- 【吃鸡小课堂】配件这样选!不要再让没用的东西填满你的背包
- 【小冠微课堂】造烛求明,读书求理
- 家庭是孩子成长的第一课堂
- 六个步骤教小学生轻松写作作文(附范文)
- 踏青正当时,户外务优课堂送给您以下温馨贴士请收好!
- 户外务优课堂浅谈帐篷的清洗与保养
- 【家长课堂】这张家庭教育表,值得父母好好看!
- 颠覆想象!这所杭城家门口的国际学校在英国也有自己的校舍和课堂
- 校园足球,让孩子们走向球场是关键