python金融分析试题_python 金融分析学习

import tushare as ts

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from scipy import stats

import statsmodels.api as sm

#资产定价模型 Ri=Rf+beta*(Rm-Rf)

sh=ts.get_hist_data('sh').sort_index()

pf=ts.get_hist_data('600000').sort_index()

sh['re']=np.log(sh['close']/sh['close'].shift(1))#计算上证指数的收益率

pf['re']=np.log(pf['close']/pf['close'].shift(1))#计算浦发银行的收益率

sh=sh.dropna()

pf=pf.dropna()#去掉缺失值

#由于数据行数不相等,做如下操作

shre=pd.DataFrame(sh['re'])

pfre=pd.DataFrame(pf['re'])

data=pd.merge(shre,pfre,left_index=Ture,right_index=True)

data.columns=['shre','pfre']

#利用线性回归求解beta值,并同时检验显著性水平

beta,alpha,r_value,p_value,std_err=stats.linregress(data['pfre'],data['shre'])

print(beta,alpha,r_value,p_value,std_err)

#APT 套利定价理论

import statsmodels.api as sm #导入最小二乘法求解各个因子的β值

results=sm.OLS(data['shre'],data['pfre']).fit()

print(results.summary())

#PuLP 线性优化

pip install PuLP

import pulp

x=pulp.LpVariable('x',lowBound=0)

y=pulp.LpVariable('y',lowBound=0)

problem=pulp.LpProblem("A simple maximization objective",pulp.LpMaximize)

problem+=3*x+2*y

problem+=2*x+y<=100

problem+=x+y<=80

problem+=x<=40

problem.solve()

for i in problem.variables()

print(i.name,'=',variable.varValue)

#非线性求解最优根

import scipy.optimize as op

y=lambda x:3.0*x**3+2.0*x**2-5

dy=lambda x:9.0*x**2+4.0*x

print(op.newton(y,5.0,fprime=dy))#牛顿迭代

print(op.bisect(y,-5.0,5.0,xtol=0.00001))#二分法迭代

print(op.brentq(y,-5.0,5.0))#割线法迭代

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值