本帖最后由 goldenhairs 于 2019-11-14 09:31 编辑
因为工作原因需要考一个证,就买了一本学习《投资咨询》的书。书中很多计算公式比较难以理解,自己就试着用这个python写了一个计算各类权益的小程序。希望对各位有所帮助。(第一次试着发帖,如果有格式不当请告知。主要功能就是输入相关的利率及期限,就可以计算出金融衍生品的收益。
源码如下:
[Python] 纯文本查看 复制代码 import math
#权益类的远期价格:
def no_profit():
r=int(input("请输入利率r%_:"))
T=int(input("期货合约到期日T:"))
t=int(input("t时刻建立的头寸:"))
S0=float(input("现金(元):"))
#r为利率,t为持有周期,S0为现金
t=T-t
f=S0*math.exp(r/100*t/365)
print("不支付红利的标的资产价格:")
print("持有周期{0}天:".format(t))
print("权益资产远期理论价格:",round(f,2),"元")
def have_profit():
r=int(input("请输入利率r%_:"))
T=int(input("期货合约到期日T:"))
t=int(input("t时刻建立的头寸:"))
S0=float(input("现金(元):"))
D0=int(input("t时刻支付的红利折现值(元):"))
#r为利率,t为持有周期,S0为现金,D0为t时刻支付的红利折现值
t=T-t
f=(S0-D0)*math.exp(r/100*t/365)
print("支付红利的标的资产价格:")
print("持有周期{0}天:".format(t))
print("权益资产远期理论价格:",round(f,2),"元")
def continues_profit():
r=int(input("请输入利率r%_:"))
T=int(input("期货合约到期日T:"))
t=int(input("t时刻建立的头寸:"))
S0=float(input("现金(元):"))
q=int(input("q为连续支付的红利利率%_:"))
#r为利率,t为持有周期,S0为现金,q为连续支付的红利利率
t=T-t
f=S0*math.exp((r-q)/100*t/365)
print("支付红利利率的标的资产价格:")
print("持有周期{0}天:".format(t))
print("权益资产远期理论价格:",round(f,2),"元")
#国债期货的定价
def country_dept():
r=int(input("请输入利率r%_:"))
T=int(input("期货合约到期日T:"))
t=int(input("t时刻建立的头寸:"))
t0=int(input("国债远期合约到期时间(天):"))
S0=float(input("当前净报价(元):"))
q=int(input("q为国债的息票率%_:"))
#r为无风险利率,t为付息时间时间,T下次付息时间,S0为当前报价,q为息票率
f=(S0+(t*q)/(t+T)-q*math.exp(-r*T/36500))*math.exp(r*t0/36500)
print("持有周期{0}天:".format(t0))
print("国债远期理论价格:",round(f,2),"元")
#商品期货的定价
def future_price():
r=int(input("请输入无风险利率r%_:"))
t=int(input("期货合约到期天数:"))
u=int(input("仓储成本率:"))
z=int(input("便利收益率:"))
S0=float(input("现货报价(元):"))
f=S0*math.exp((r+u-z)*t/36500)
print("持有周期{0}天:".format(t))
print("商品期货理论价格:",round(f,2),"元")
#外汇期货的定价
def libor_price():
r=float(input("即期汇率r%_:"))
rf=float(input("外汇国的无风险利率rf%_:"))
rd=float(input("本国的无风险利率rd%_:"))
t=int(input("外汇期货的到期日(月)"))
f=r*math.exp((rd-rf)*t/1200)
print("持有周期{0}个月:".format(t))
print("外汇期货远期汇率是:",round(f,3))
no_profit()
have_profit()
country_dept()
continues_profit()
future_price()
libor_price() |