pyhton 運算子過載(期權Greeks相加)

2021-10-10 17:27:55 字數 2585 閱讀 8064

運算子過載,網上很多例子。

最近在學期權定價,期權有一堆風險指標,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 = 0

self.gamma = 0

self.vega = 0

self.theta = 0

self.rho = 0

def __add__(self, other):

""":param other: 只能是greeks

:return:

"""self.delta += other.delta

self.gamma += other.gamma

self.vega += other.vega

self.theta += other.theta

self.rho += other.rho

return self

def __sub__(self, other):

""":param other:

:return:

"""self.delta -= other.delta

self.gamma -= other.gamma

self.vega -= other.vega

self.theta -= other.theta

self.rho -= other.rho

return self

def __mul__(self, other):

""":param other: 只能是標量

:return:

"""self.delta *= other

self.gamma *= other

self.vega *= other

self.theta *= other

self.rho *= other

return self

def __truediv__(self, other):

""":param other: 只能是標量

:return:

"""self.delta /= other

self.gamma /= other

self.vega /= other

self.theta /= other

self.rho /= other

return self

def __str__(self):

s = """

delta:

gamma:

vega:

theta:

rho:

""".format(

delta=self.delta,

gamma=self.gamma,

vega=self.vega,

theta=self.theta,

rho=self.rho

)return s

if __name__ == '__main__':

delta = 0.5

gamma = 0.1

vega = 0.3

theta = 0.5

rho = 0.2

greeks_1 = greeks()

greeks_1.delta = delta

greeks_1.gamma = gamma

greeks_1.vega = vega

greeks_1.theta = theta

greeks_1.rho = rho

greeks_2 = greeks()

greeks_2.delta = delta

greeks_2.gamma = gamma

greeks_2.vega = vega

greeks_2.theta = theta

greeks_2.rho = rho

greeks_3 = greeks()

greeks_3.delta = delta

greeks_3.gamma = gamma

greeks_3.vega = vega

greeks_3.theta = theta

greeks_3.rho = rho

print(greeks_1 - greeks_2 - greeks_3)

輸出結果如下。

delta: -0.5

gamma: -0.1

vega:  -0.3

theta: -0.5

rho:   -0.2

運算子過載之過載型別運算子

普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載

c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...