宝塔面板建设二级域名网站访问不了,万网 网站 流程,北京网站建设 网络推广,德国室内设计联盟Fintech概念正受到不少互联网金融公司的热捧#xff0c;主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。尤其是在很多互联网金融公司#xff0c;业务分析师BA(Business Analyst)#xff0c…Fintech概念正受到不少互联网金融公司的热捧主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。尤其是在很多互联网金融公司业务分析师BA(Business Analyst)又称产品经理受到大家的追捧虽然身处西二旗等ITer聚集地但是他们做的工作与金融街上的白领们并无不同他们是无所不懂的金融达人顶着各个海外名校金融数学系的Master光环手持CFACPAFRMAFP/CFPCIIAACCA等等。既然是在IT公司做需求分析的工作除了需要出具需求说明书然后将需求翻译成程序员能够理解的说明文档不可避免的也需要做一些测试的工作。现在各种工具琳琅满目各种智能的自动化测试平台也在全面普及越来越多的人工工作被取代于是测试工程师经常会接到任务说写个工具给BA用让他们可以参与测试。说起来容易做起来难对于大部分金融达人来说代码对于他们无异于普通人看哥德巴赫猜想的手稿如何让他们能够参与进来能够更多地参与测试成为了测试工程师更多关注的问题。前段时间正好接到了一个需求由于业务需要计算期权费BA需要计算出最优的数据组合但是输入有3个参数每个参数有40个数据且数据是保留到小数点后15位这样算下来的排列组合多到一个BA不可能在2周内找到最优解更不要提在需求文档里明确写上排列组合的期望结果。如果BA写不出来对于不懂金融的开发和测试就更是一头雾水无从下手怎么能让BA自己算出来需要的数据呢试了下ExcelPython的解决方案基本满足了BA的需求唯一需要BA支持的就是输入的excel需要按照规定的格式制作以便程序读取。比如第一列是执行价第二列是买入期权第三列是卖出期权我们对应在代码里需要读取写入Excel里面的数据依然使用最熟悉的xlrd和xlwt包。之所以把路径之类的都参数化主要是为了生成UI之后BA使用起来更方便。# 获取文件
input_file_path input.get()
print(Input File Path: input_file_path)
output_file_path input_file_path.replace(option price caculator.xlsx, new file.xls)
print(Output File Path: output_file_path)在Java中我们一般会使用BigDecimal来进行金融数据的处理但是在Python中虽然也有BigDecimal包但是处理起来会出现各种各样不明原因的报错所以我们选择了float类型。# 打开文件
workbook xlrd.open_workbook(input_file_path)# 获取sheet内容
sheet1 workbook.sheet_by_index(0)# 获取整列的值
orgstrike sheet1.col_values(0)
orgcall sheet1.col_values(1)
orgput sheet1.col_values(2)# 更改格式
strike [float(x) for x in orgstrike]
call [float(x) for x in orgcall]
put [float(x) for x in orgput]计算完成后然后生成新的excel来保存处理过的数据在不同的Sheet中保存不同的计算结果以便查看。如果需要多次运行且结果可以被覆盖则加上cell_overwirte_ok True就可以了。# 创建文件
file xlwt.Workbook()
sheet1 file.add_sheet(符合条件, cell_overwrite_okTrue)
sheet1.write(0, 0, call)
sheet1.write(0, 1, strike)
sheet1.write(0, 2, put)
sheet1.write(0, 3, strike)
sheet1.write(0, 4, callNeg)
sheet1.write(0, 5, strike)
sheet2 file.add_sheet(不符合条件, cell_overwrite_okTrue)
sheet2.write(0, 0, call)
sheet2.write(0, 1, strike)
sheet2.write(0, 2, put)
sheet2.write(0, 3, strike)
sheet2.write(0, 4, callNeg)
sheet2.write(0, 5, strike)接下来就是完成BA需求里面逻辑计算排列组合的部分了由于需求不同我就不展示这部分代码了有个提示在这个地方如果需要在console里面打印出浮点请使用如下代码print(call: %04d(%18.14f); put: %04d(%18.14f); callneg: %04d(%18.14f)% (i 1, strike[i], j 1, strike[j], k 1, strike[k]))这样我们逻辑部分就完成了下面就要进行UI部分的设计和制作了由于技(懒)术惰原因我们还是使用Python来做一气呵成。import tkinter.font as tkFont对于一般的BA的需求来说一个输入文件一个输出文件足够了所以我们也本着极简的原则做一个UI成品如下贴入输入文件的路径点击GO后会显示输出文件的链接点击链接可以打开生成的文件在Pycharm的Console里我们可以看到打印出来的结果在文件夹里我们会找到新生成的文件new file.xls:在这个文件里有我们需要的所有符合条件和不符合条件的排列组合想做出这样的效果网上有很多tkFont的教程可以参考。有几点需要提示tkFont在Python2和3中的使用方法不一样请先确认自己使用的版本。部分代码如下# Title
root.title(Option Price Calculator)# Input File
labelFilePath Label(root, text Input File: )
labelFilePath.grid(row0, stickyE)# Textbox
input StringVar()
entryFilePath Entry(root, width80, textvariableinput)
entryFilePath.grid(row0, column1)# Go
buttonGo Button(root, textGO, width5)
buttonGo.bind(Button-1, lambda event: OptionPriceCalc.read_excel(event, input))
buttonGo.bind(Button-1, lambda event: show_output_file_path(event, input))
buttonGo.grid(row0, column3, padx5, stickyEW)# Output File
labelOutput Label(root, textOutput File: )
labelOutput.grid(row1, stickyE)完成需求后BA提出了新的看法对于点击连接后是否直接打开我们是可以控制的def show_output_file_path(event, input):output input.get().replace(option price caculator.xlsx, new file.xls)ft tkFont.Font(familyCalibri, size11, underline1)labelOutputFile Label(root, textoutput, fgblue, fontft)labelOutputFile.grid(row1, column1, stickyWNS)# Click Go - Click File NamelabelOutputFile.bind(ButtonPress-1, lambda event: open_file(output))# Click Go - Open File Automatically# labelOutputFile.bind(ButtonPress-1, os.startfile(output))有了这个模板BA提出新需求后我们只需要更改UI文件中调用的方法名就可以了需要测试资料2020年软件测试基础视频软件测试资料点击下面卡片领取2020 软件测试讲义视频面试题集锦资料kbyx0011.mikecrm.com