运算符重载,网上很多例子。

最近在学期权定价,期权有一堆风险指标,Greeks。

想用OOP实现,简化代码。但涉及到类加减运算。

直观上,线性组合,Greeks的各分项就应该对应相加。

废话不多说,直接上代码。

class Greeks:def __init__(self):"""TODO 比较各项希腊值跟实务中用到的希腊值的区别:param delta: 标准delta:param gamma: 标准gamma:param vega: 需要/100,才是标的波动率变动1个百分点,期权价值的变动。如vega=1,是标的波动率增加1个百分点,期权变贵0.01块钱:param theta::param rho:"""self.delta = 0self.gamma = 0self.vega = 0self.theta = 0self.rho = 0def __add__(self, other):""":param other: 只能是greeks:return:"""self.delta += other.deltaself.gamma += other.gammaself.vega += other.vegaself.theta += other.thetaself.rho += other.rhoreturn selfdef __sub__(self, other):""":param other: :return: """self.delta -= other.deltaself.gamma -= other.gammaself.vega -= other.vegaself.theta -= other.thetaself.rho -= other.rhoreturn selfdef __mul__(self, other):""":param other: 只能是标量:return:"""self.delta *= otherself.gamma *= otherself.vega *= otherself.theta *= otherself.rho *= otherreturn selfdef __truediv__(self, other):""":param other: 只能是标量:return:"""self.delta /= otherself.gamma /= otherself.vega /= otherself.theta /= otherself.rho /= otherreturn selfdef __str__(self):s = """delta: {delta}gamma: {gamma}vega:  {vega}theta: {theta}rho:   {rho}""".format(delta=self.delta,gamma=self.gamma,vega=self.vega,theta=self.theta,rho=self.rho)return sif __name__ == '__main__':delta = 0.5gamma = 0.1vega = 0.3theta = 0.5rho = 0.2greeks_1 = Greeks()greeks_1.delta = deltagreeks_1.gamma = gammagreeks_1.vega = vegagreeks_1.theta = thetagreeks_1.rho = rhogreeks_2 = Greeks()greeks_2.delta = deltagreeks_2.gamma = gammagreeks_2.vega = vegagreeks_2.theta = thetagreeks_2.rho = rhogreeks_3 = Greeks()greeks_3.delta = deltagreeks_3.gamma = gammagreeks_3.vega = vegagreeks_3.theta = thetagreeks_3.rho = rhoprint(greeks_1 - greeks_2 - greeks_3)

输出结果如下。

delta: -0.5
            gamma: -0.1
            vega:  -0.3
            theta: -0.5
            rho:   -0.2

pyhton:运算符重载(期权Greeks相加)相关推荐

  1. 10.1 分别通过函数和重载运算符来实现复数相加

    #include <iostream> using namespace std; class Complex { public:Complex(){real=0;imag=0;}Compl ...

  2. C++_类和对象_C++运算符重载_加号运算符重载_实现两个对象相加_对象和int类型相加_通过成员函数重载+号_全局函数重载+号_以及重载_运算符重载函数实现---C++语言工作笔记055

    然后我们再来看,运算符的重载,首先我们来看加号的运算符的重载. 这个的作用是很明显的,比如我们有两个Person对象,p1,p2,如果我们想 p3 = p1+p2能可以嘛,不可以对吧,因为系统给我们提 ...

  3. 【C++实验】运算符重载(两个矩阵相加)

    运算符重载 运算符重载概念 对已有的运算符赋予新的含义,用一个运算符表示不同功能的运算,从而适用于用户自定义类型的数据(比如复数.矩阵等)之间的运算 运算符重载方法 定义一个重载运算符函数,在需要时系 ...

  4. c++重载(以运算符重载为主)

    重载(OverLoading)是面向对象程序设计多态性的一种体现.所谓重载,是指"同一标识符"在同一作用域的不同场合具有不同的语义,这个标识符可以是函数名或运算符.也就是说,重载可 ...

  5. C++中运算符重载需要遵循的规则

    一.C++中运算符重载需要遵循的规则 1.并不是所有的运算符都可以重载.能够重载的运算符包括: + - * / % ^ & | ~ ! = < > += -= *= /= %= ^ ...

  6. C++中的运算符重载

    1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载.重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 ...

  7. 第十三周项目一-分数类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...

  8. Java为什么不提供运算符重载?

    从C ++到Java,一个显而易见的未解决问题是Java为什么不包括运算符重载? 不是Complex a, b, c; a = b + c;吗Complex a, b, c; a = b + c; C ...

  9. python叫什么-什么叫Python运算符重载

    什么叫Python运算符重载 Python中每个数据类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于 ...

最新文章

  1. 共基极放大电路_「模拟电子技术」运算放大电路的共基极、共射极、共集电极接法...
  2. 1号店11.11:从应用架构落地点谈高可用高并发高性能
  3. 成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
  4. Java获取当前线程的名字以及为线程命名
  5. AI理论知识整理(2)-对称矩阵-特征值与特征向量
  6. 「猜题第一篇」2019年大学生电子设计竞赛
  7. 初学者python笔记(filter()函数完全详解)
  8. 【iOS】Swift3 Swift2 String转int,从TextField里面获取Int类型的数值
  9. 【R图秀-5】将薪比薪
  10. 其实你的领导也有中年危机
  11. UE4启动GameActivity
  12. 王道训练营3月11日
  13. 备忘录:XCode配置
  14. Spring源码解析之-doCreateBean() 详解
  15. Java 在PDF中添加水印——文本/图片水印
  16. 机器学习 - 训练集、验证集、测试集
  17. 友盟统计-事件跟踪的部署
  18. HDOJ 4238 - Programming the EDSAC 阅读理解..高精度处理
  19. easy_nbt——Bugku
  20. 电脑视频剪辑用哪个软件,好用的电脑视频剪辑软件有哪些

热门文章

  1. android Banner 广告轮播
  2. android引导页图片全屏适配,关于图片适配不同尺寸的image View(实战)
  3. 打鸭子java代码_【Java JDK和VirtuaNES(FC模拟器)哪个好用】Java JDK和VirtuaNES(FC模拟器)对比-ZOL下载...
  4. Brup_Suite安装配置及基础使用----最详细的教程(测试木头人)
  5. 远赴人间惊鸿宴,云台山风景区上见初雪
  6. 操作系统原理_田丽华(4)线程
  7. 双向可控硅的三个引脚和单向可控硅的三个引脚在正向导通时作用是一样的吗?
  8. YXCMS靶场实验报告
  9. ubuntu 联想e430 无线没驱动
  10. 嵌入式linux rtsp移植,嵌入式网络收音机的ARM实现 - ARM - 电子发烧友网