社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

跟着无敌哥使用DeepSeek写Python的类

palmmicro • 1 月前 • 70 次点击  
跨市场套利统一方程以及之前的一些文章中断断续续介绍了一部分Palmmicro API的用法,其实是一直跟着晓东的AI编程后面跑。上个月为了进一步限制爬虫访问,把历史数据页面都加上了登录要求,结果意外发现他依旧在用爬虫抓取某些数据,我才想通就像我的官方估值是为了跟基金公司要发布的净值对答案,他也需要计算官方估值跟我对答案。这是一个典型我没有穿他的鞋子,就无法理解他的问题。解决方法也很简单,我自己把代码写一遍,就能充分理解他的需求扩充API的数据,同时还催生了这篇文章。
DeepSeek上面的问题。
它产生的代码如上,把它继续保存在auto子目录中,取名就叫palmmicroapi.py。
用类的静态函数分离计算过程和数据。静态函数本质上就是之前写过的普通函数,放在类里面是因为它共享了数据结构。

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

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

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

不带输入数据调用EstNetValue( 'SZ162411' ),会利用API接口中提供的CNYestest_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,他跟费曼一样都是我的偶像。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/197513