微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Scipy的最小扭转变形优化

如何解决使用Scipy的最小扭转变形优化

我正在做一个优化练习(最小扭转变换),该练习基本上是尝试旋转原始因子以实现正交性,同时对原始因子造成的失真最小。数学是。

enter image description here

enter image description here

P是一个KxN矩阵,其中K是因子数,N是每个因子的长度。 t是一个KxK矩阵。问题是最小化运动,其约束是t * F矩阵的相关矩阵必须是恒等矩阵以保证正交性。这是到目前为止我尝试过的代码
import numpy as np
import pandas as pd
from scipy.optimize import minimize
import yfinance as yf

start = "2010-01-01"
end = "2019-12-31"
tech = yf.download(["AAPL","MSFT","IBM"],start=start,end=end)['Adj Close']
tech = tech.pct_change().dropna().T

def is_eye(arr,f):
    k = len(f)
    arr = arr.reshape(k,k)
    res = pd.DataFrame(np.dot(arr,f.values)).T.corr()
    return (res.values == np.eye(k)).all()*1.0

def fun_min(arr,k)
    f = f.values
    stds = np.nanstd(f,axis=1).reshape(-1,1)
    res = np.sqrt(np.nansum(np.nanvar((np.dot(arr,f) - f)/stds,axis=1))/k)
    return res

res_min = minimize(fun_min,np.array([0.01]*25),args=(tech,),constraints=({'type': 'eq','fun': lambda x:is_eye(x,tech) - 1.0}))

但是,res_min.x完全返回了我的猜测。我将不胜感激。

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。