选取书目
2.1资本资产定价模型与证券市场线
""" Linear regression with SciPy """
import是引用模块stats,stock_returns是股票收益率,mkt_return是市场收益率,”“是换行符,上下两行视为一个语句,linregress是计算CAPM模型的函数。
2.3因子模型的多元线性回归
先生成数据
import
导入numpy模块并命名为np(其余同上),array在numpy模块中对应矩阵。
np
此命令是生成八列一行区间为[0, 1)的随机数
for
列表解析,每循环一次,便生成一次随机数,两个命令联合边生成一个九行八列的随机数矩阵,用array存放,如下所示:
>>>
第二部,选取第一列为被解释变量,第2至8列为被解释变量,进行多元线性回归。
y_values
注意,Python中第一个起始位置是0,而不是1。
>>>
原书中代码为print results.summary() ,但实际运行会报错,根据书本目录,猜测为Python 2和Python 3的差异;所以修改成print(results.summary()),实测无误,以下为完整代码。注:本书其他错误代码均进行替换。
""" Least squares regression with statsmodels"""
拓展:
import
放于Python执行文件开头与结尾可以探测程序运行时间,并测试各个部分。
all_values
本例子中生成九行八列的随机数矩阵也可以使用该命令,更加简洁,也节约列表解析的时间。
2.4.2一个简单的线性优化问题
已知条件:
2x + y <=100 x + y <= 80 x <= 40 x >= 0 x >= 0
求 f(x, y) = 3x + 2y 的最大值
""" A simple linear optimization problem with 2 variables """
①导入线性规划模块PuLP
②设置模型中所使用的变量
③初始化,选择模型的类型和条件等
④目标函数
⑤求解
⑥遍历列表显示结果
结果显示,当x = 20,y = 60时,f(x, y)取最大值。
2.4.4整数规划
假设我们可以从三位经纪人手中购买150份特定外国证券的场外合同。经纪人X的报价为每份合同500美元,外加4000美元手续费。经纪人Y的报价为每份合同450美元,外加2000美元手续费。经纪人Z的报价为每份合同450美元,外加6000美元额外费用。另外经纪人X最多出售100份合同,经纪人Y最多出售90份合同,经纪人Z最多出售100份合同,且每个经纪人都是30份合同起售。请计算购买这150份合同所需的最低成本为多少?
根据内容写出不等式组合和目标函数
Minimize Σ Is Order[variable cost*quantity + fixed cost]
IsOrder =0(不购买合同)or 1(购买合同)
30 <= quantity x <= 100
30 <= quantity y <= 90
30 <= quantity z <= 70
quantity x + quantity y + quantity z <= 150
在模块中定义变量:
""" An example of implementing an integer programing model with ninary conditions """
根据不等式进行初始化并写出约束条件:
""" This is and example of implementing an IP model with binary variables the wrong way"""
按照原不等式编程导致无法计算;究其原因是目标函数中IsOrder和quantity进行了相乘导致了非线性性,无法计算;应对原不等式进行调整。
注:IsOrder为0或1,非线性的二值变量,不满足f(x+y)=f(x)+f(y)。
Minimize Σ variable costquantity + fixed cost*IsOrder
IsOrder =0(不购买合同)or 1(购买合同)
IsOrder x*30 <= quantity x <= IsOrder x*100
IsOrder y*30 <= quantity y <= IsOrder y*100
IsOrder z*30 <= quantity z <= IsOrder z*100
quantity x + quantity y + quantity z <= 150
将二值变量的乘积项放在不等式中,而不是目标函数。
""" This is and example of implementing an IP model with binary variables the correct way"""
完整代码:
""" An example of implementing an integer programing model with ninary conditions """
2.5使用矩阵解线性方程组
Ax = B
""" Linear algebra with Numpy matrics """
2.6LU分解
将方阵分解为上三角矩阵和下三角矩阵的点积
""" Lu decomposition with SciPy """
注:为更好显示结果,对原书代码进行部分改动。
2.7Cholesky分解
""" Cholesky decomposition with SciPy """
2.8QR分解
""" QR decomposition with SciPy """
Jacobi迭代法
""" Solve Ax=B with the Jacobi method """
Gauss-Seidel迭代法
""" Solve Ax=B with the Gauss-Seidel method """
3.4增量法
以下方法以函数求零点为例:
"""
运行:
from
3.5二分法
"""
运行:
from
3.6牛顿法
"""
运行:
y
3.7割线法
"""
运行:
y