



函数_calc_with_calibration实际完整代码如上,在冗长的处理输入数据特例后,最后一句做了实际的计算,用的公式在招安中解释过了。静态函数没有self的参数,所以当它调用另外一个静态函数_get_CNY的时候,要使用PalmmicroAPI类名指定。

函数EstNetValue实际完整代码如上。跟之前一样,完整的源代码在GitHub。

在telegram.py中说明PalmmicroAPI来自palmmicroapi.py文件,然后加了一个演示调用PalmmicroAPI的函数_handlePalmmicroData。函数比较长一屏截不完,下面直接看执行后的输出结果吧。


不带输入数据调用EstNetValue( 'SZ162411' ),会利用API接口中提供的CNYest和est_netvalue字段数据计算SZ162411的官方估值,用来对答案。

用XOP的周布林下轨不动点136.25作为输入数据调用EstNetValue( 'SZ162411', {'XOP':136.25} ),得到SZ162411估值0.729;反过来调用ReverseEst( {'SZ162411':0.729} ),又回到136.25完整闭环。注意到在计算SZ162411这类LOF时,是不需要提供汇率的,当天的美元人民币中间价在API接口的CNY字段,每天9点20以后调用一次API接口,全天就不用再调用了,编程从其它渠道获取XOP价格进行实时计算即可,Palmmicro API中也不会提供实时变动的数据。


SZ159518这类ETF的参考估值使用在岸人民币USDCNY计算,这是实时变动的数据,所以需要在EstNetValue( 'SZ159518', {'CNY': 6.7795} )调用中提供。

接下来重复闭环,EstNetValue( 'SZ159518', {'XOP':136.25, 'CNY':6.7795} ),得到SZ159518在XOP周布林下轨的估值0.919;反过来调用ReverseEst( {'SZ159518':0.919, 'CNY':6.7795} ),又回到136.25的XOP。同样这些调用中都需要编程从其它渠道获取USDCNY和XOP的实时价格,我这里用XOP的周布林下轨不动点价格作为例子,是因为它在本周都不会再变化,方便大家对照运行代码。


同样的不带输入数据调用EstNetValue( 'SZ161125' ),得到SZ161125的官方估值。

从SPY对应标普500指数^GSPC周布林下轨不动点的价格619.11闭环计算,调用EstNetValue( 'SZ161125', {'SPY':619.11} )得到SZ161125对应价格2.593,反过来调用ReverseEst( {'SZ161125':2.593} )回到619.11的SPY。虽然^GSPC的周布林下轨不动点本周不会变化,但是SPY和^GSPC的校准值每天都在变化,所以SPY对应价格接下来的几天会变动。

从标普500期货ES对应^GSPC周布林下轨不动点的价格6208半闭环计算,调用EstNetValue( 'SZ161125', {'hf_ES':6208.0} )得到SZ161125对应价格2.592,反过来调用ReverseEst( {'SZ161125':2.592} )得到618.79的SPY。这里SPY跟上面的619.11出现了明显的偏差,原因是网页的6208是按美元利息带来期货升水的理论溢价1.0009计算的,而上周五美股暴跌有很多人抄底,导致实际校准值是1.001。API中提供的校准值是实际校准值1.001,所以在用实时ES价格计算时不用担心。

用SZ159612加上USDCNY做了类似SZ161125的计算,同样的原因没有完全闭环。调用如下:EstNetValue( 'SZ159612', {'SPY':619.11, 'CNY':6.7795} )、ReverseEst( {'SZ159612':1.562, 'CNY': 6.7795} )、EstNetValue( 'SZ159612', {'hf_ES':6208.0, 'CNY':6.7795} )和ReverseEst( {'SZ159612':1.561, 'CNY':6.7795} )。


不带输入数据调用EstNetValue( 'SZ164701' ),得到SZ164701的官方估值。同时可以看到使用期货GC和SI的周布林下轨不动点数据调用EstNetValue( 'SZ164701', {'hf_GC':4184.12, 'hf_SI': 63.51} )跟使用GLD和SLV的对应数据调用EstNetValue( 'SZ164701', {'GLD':381.91, 'SLV': 57.34} )所得到的结果是一致的。


不带输入数据调用EstNetValue( 'SZ160723' ),得到SZ160723的官方估值。使用期货CL的周布林下轨不动点数据调用EstNetValue( 'SZ160723', {'hf_CL':53.31} )和使用USO的对应数据调用EstNetValue( 'SZ160723', {'USO':78.43} )所得到的结果也是一致的。


截图来自阅读原文链接。不带输入数据调用EstNetValue( 'SZ164824' ),得到SZ164824的官方估值。使用INDA的周布林下轨不动点数据调用EstNetValue( 'SZ164824', {'INDA':44.44} )得到的估值1.197没法交叉验证。

学外语时间:API的全称是Application Programming Interface,中文是应用编程接口。有个程序员去海里钓上来一条美人鱼又把她放了,他同伴问为什么放走了美女,答案就是没有API。Talk is cheap, show me the code说的就是我早该写今天的这些代码。这句话出自于写Linux操作系统的Linus Torvalds,他跟费曼一样都是我的偶像。