我有一个用于多个不同指标的代码(例如,风险价值、欧米茄、索尔蒂诺等)。我使用的平均值公式是:
平均值(平均值):
e = numpy.mean(r)
return numpy.mean(diff) / vol(diff)标准差:
return numpy.std(returns)我想对我的计算中使用的均值(和标准差)进行分类。有谁能建议一下怎么做吗?我已经找到了这一部分,但不太确定如何实现它(当然,如果这就是它):
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mstats.winsorize.html
谢谢
发布于 2020-08-30 22:39:59
试试这个:
import os
import numpy as np
from scipy.stats.mstats import winsorize
file_location = input("path to file: ")
dirname = os.path.dirname(file_location)
filename = os.path.basename(file_location)
with open(file_location, 'r') as readfile, \
open(os.path.join(dirname, 'win_' + filename), 'w') as writefile1, \
open(os.path.join(dirname, 'mod_' + filename), 'w') as writefile2:
writefile1.write('adj_mean,adj_std\n')
for idx, line in enumerate(readfile):
print("Reading line# {}...".format(idx))
series = np.array([float(x) for x in line.split(',')])
print("Read {} values...".format(len(series)))
winsorized_series = winsorize(series, limits=[0.10, 0.10])
print("Writing modified series to file...")
writefile2.write(','.join(map(str, winsorized_series)) + '\n')
adj_mean = np.mean(winsorized_series)
adj_std = np.std(winsorized_series)
print("adj mean and std dev...")
writefile1.write("{},{}\n".format(adj_mean, adj_std))发布于 2020-07-13 22:55:09
要获得准确的答案,需要一个MCVE。
假定'e‘是nparray
import numpy as np
import scipy as sp
from scipy.stats.mstats import winsorize
e = np.random.rand(1,100)
print("{}".format(e))
winsorize(e, limits=(0.25,0.25), inplace=True)
print("{}".format(e))https://stackoverflow.com/questions/62847410
复制相似问题