pandas数据相关性分析例一
导入数据¶
In [28]:
import pymongo
import pandas as pd
client = pymongo.MongoClient('localhost',27017)
colleciton = client['实盘大赛(清洗后)']['轻量组top50']
data = list(colleciton.find())
df = pd.DataFrame(data)
日最小收益率改为日最大亏损率,这样合逻辑¶
In [29]:
df['日最大亏损率'] = df["日最小收益率"].apply(abs)
去掉不需要的信息¶
In [30]:
df.head()
Out[30]:
In [31]:
df.columns
Out[31]:
In [32]:
df = df.drop(['_id', '昵称','日最小收益率'], axis=1)
In [33]:
df.head()
Out[33]:
直接应用pd.corr()函数求相关系数,每1项与剩余5项做相关性分析¶
In [36]:
lst = ['交易胜率', '盈亏比', '风险度均值', '累计净值', '日最大亏损率']
for i in lst:
to_pair = df[i]
correlation = df['日最大收益率'].corr(to_pair)
print(f'"日最大收益率"与"{i}"的相关系数为:{correlation}')
结论1:日最大收益率与日最大亏损率和累计净值有一定正相关性
In [41]:
lst = ['日最大收益率','盈亏比', '风险度均值', '累计净值', '日最大亏损率']
for i in lst:
to_pair = df[i]
correlation = df['交易胜率'].corr(to_pair)
print(f'"交易胜率"与"{i}"的相关系数为:{correlation}')
结论2:交易胜率与其他几项都没有相关性
In [42]:
lst = ['日最大收益率','交易胜率', '风险度均值', '累计净值', '日最大亏损率']
for i in lst:
to_pair = df[i]
correlation = df['盈亏比'].corr(to_pair)
print(f'"盈亏比"与"{i}"的相关系数为:{correlation}')
结论3:盈亏比同样与其他几项没有相关性
In [43]:
lst = ['日最大收益率','交易胜率', '盈亏比', '累计净值', '日最大亏损率']
for i in lst:
to_pair = df[i]
correlation = df['风险度均值'].corr(to_pair)
print(f'"风险度均值"与"{i}"的相关系数为:{correlation}')
结论4:风险度均值同样与其他几项相关性也不是很大啊
In [44]:
lst = ['日最大收益率','交易胜率', '盈亏比', '风险度均值', '日最大亏损率']
for i in lst:
to_pair = df[i]
correlation = df['累计净值'].corr(to_pair)
print(f'"累计净值"与"{i}"的相关系数为:{correlation}')
累计净值与日最大收益率和最大亏损率正相关,与结论1一样
总结¶
只得出1条结论,即日最大收益率、日最大亏损率、累计净值三者之间有一定的正相关性.这也符合常识,一般交易风格激进,日最大收益也大,日最大亏损也大,同样的如果交易结果为盈利,累计净值也大.貌似这条结论没什么用,权当消遣把.不过同时也得出一条结论:即交易胜率独立于这些因素,得从其他方向入手.