这是一个在Excel表格内使用的module,我不知道是不是格式错了还是哪里缺少条件,运行不起来
市场模型
该模型确定了公司 i 的回报与回报之间的线性事前关系的市场组合。 它假设资产收益是联合多元正态分布,并且在时间上独立同分布。 以下是数学市场模型的表示:
𝑅𝑖𝑡 = 目标或收购方证券 i 在第 t 天的实际每日回报
𝑅𝑚𝑡 = t 日的每日市场回报指数
𝜀𝑖𝑡 = 误差项
𝛼𝑖 = 模型截距
𝛽𝑖 = 模型的斜率
𝛼𝑖和𝛽𝑖是模型的估计参数
通过OLS方法生成的参数估计器𝛼̂𝑖和𝛽̂̂𝑖。 可以使用下面的两个等式和计算估计量。 该模型假设返回值的平稳性和𝜀𝑖𝑡 ~𝑁𝐼𝐷(0, 𝜎𝑖2)。 如果不清楚,您必须阅读有关计算 OLS 系数的更多信息。
我已经完成了主要的代码编写,包括:
UDF:MyReg(KnownXs、KnownYs、Ref)
• KnownXs 相关的 X 值。
• 已知相关的 Y 值。
• Ref 指0 表示返回截距,1 表示返回斜率系数。
Public Function MyReg(KnownXs As Variant, KnownYs As Variant, ByRef Ref As Integer)
Dim x(), Y(), Sx, Mx, Sy, My, XSDevSq, dXY As Double
Dim Beta, Icept, RetParam(1) As Double
nObsX = KnownXs.Row.Count
nObsY = KnownYs.Row.Count
If nObsX = nObsY Then
ReDim x(1 To nObsX)
ReDim Y(1 To nObsY)
For i = 1 To nObsX
x(i) = KnownXs.Cells(1, i)
Next i
For j = 1 To nObsY
Y(i) = KnownYs.Cells(1, j)
Next j
For k = 1 To nObsX
Sx = Sx + x(k)
Next k
For l = 1 To nObsY
Sy = Sy + Y(1)
Next l
My = XSum / nObsX
Mx = YSum / nObsY
For i = 1 To nObsX
XSDevSq = XDevSq + (x(i) - Mx) ^ 2
dXY = dYX + ((x(i) - Mx) * (Y(i) - My))
Next i
Beta = XSumDevSq / dXY
Icept = XMean - Beta * YMean
' Struggling here to return the function output based on Ref passed by the user. Please help!!
Else
MsgBox ("No. of X values must be equal to No. of Y Values")
MyReg = "Error"
End Function
期待完成效果:
麻烦帮忙修改一下我的代码,谢谢各位了!
不确定有什么问题,你要根据Ref来决定函数返回值的话加一个if不就行了?
If Ref = 0 Then
MyReg = Icept
Else
MyReg = Beta
End If