跟着无敌哥使用DeepSeek写Python类中的静态变量
之前看到过@staticmethod的类静态函数,在处理类的静态变量时,则需要@classmethod,因为静态变量在所有类的实例中都是一样的。需要在PalmmicroAPI中加静态变量的原因是现在要来计算对冲数量了,上次只用期货计算净值时,期货的乘数不影响结果,但是数量上就不同了。这里设置的缺省值都是跟公众号之前的文章对应的,比如美油期货CL实际对冲时使用MCL,乘数是100。除此之外就是增加了CalcQuantity函数和对应的测试调用,在文件结构上本次没有变化,只是增加和修改了一波函数。接下来直接对照代码看运行结果,跟之前一样所有代码都已经更新到了GitHub上,请自行下载。SZ162411、XOP和GUSH的输入数据和部分测试代码如上。相关结果如上,有关净值计算部分不再重复,主要解释数量上的计算方式和结果。从上面可以看出,无论输入数量是什么,输出中总会有SZ162411的对冲数量,如果输入中是GUSH的数量,那么输出的也是GUSH的对冲数量,否则就是XOP的。就像在企业微信群消息中显示的那样,SZ162411/XOP/GUSH的输出对冲数量一起构成了能够马上砸盘成交的准确比例。SZ161125、SZ159612、SPY和hf_ES的输入数据和部分测试代码如上。在Python计算hf_ES的输出数量时,是按MES的乘数5执行的。调试输出中hf_ES对冲值: 26940就是Palmmicro网页中标普500指数对应SZ159612的对冲值26931,这个只是起个调试软件时对照验证的作用,实际使用中并不需要每次专门来算一遍。SZ164701测试代码如上,CalcQuantity('SZ164701', {'SZ164701': 233041, 'GLD': 100, 'SLV': 100}) 输入SZ164701、GLD和SLV的数量,然后输出这三者准确对冲的数量,SLV的数量向下取整到了0。为了确保砸盘成交,API中大部分数量计算都是向下取整的。CalcQuantity('SZ164701', {'SZ164701': 233041, 'hf_GC': 10, 'SLV': 100}) 中用hf_GC的输入替代了GLD。跟前面hf_ES替代SPY输入时输出中只有MES的数量不同,这次输出中同时有GLD和MGC的对应数量。一方面是为了跟义工群对冲计算器对答案,另一方面更重要的是将会在后面SZ160723示例中看到的用在分市场收盘时间段做对冲。截图来自阅读原文链接。义工群对冲计算器的GLD和SLV数量是保留一位小数四舍五入,所以它算的174800比按持仓算SZ164701: 174300多了500股。SZ160723的测试代码如上。CalcQuantity('SZ160723', {'SZ160723': 106853, 'USO': 100}) 输入SZ160723和USO的数量,然后输出SZ160723、USO和^USO-EU准确对冲的数量,这里^USO-EU代码要在欧洲收盘时间对冲这部分数量的USO。跟XOP偶尔才无法白天做空不同,USO经常无法做空,所以用MCL替代USO是十分必要的。CalcQuantity('SZ160723', {'SZ160723': 106853, 'hf_CL': 10}) 输入SZ160723和MCL的数量,输出SZ160723和MCL对冲数量的同时,还同时输出了USO和^USO-EU的数量。这样在SZ160723折价用MCL对冲后,赎回平仓时可以在欧洲收盘时间先买入^USO-EU的数量的USO,然后在美股收盘时卖出买入的USO,同时平仓做空的MCL。学外语时间:While many people spend their 40s looking backward, Vozinha reminded the world that some dreams arrive right on time.