用 Python 实现简单量化交易策略:基于相关性的股票投资
后台-插件-广告管理-内容页头部广告(手机) |
炒股看数据,说白了就是和一堆数字玩儿游戏。每日开电脑,眼睛只盯得见那些蹦跶的数字,心跳跟着它起落。行情好时,心花怒放;不行时,瞅啥都闹心。
数据处理的复杂性
处理股票数据可没那么容易,得学好多数学公式和逻辑判断!比如说,你可以用`df.iloc[i,0]`这个命令来提取某一行的数据,然后用`result[key].append(df.iloc[i,-3])`这个方法来更新结果。别看这两段代码短小精悍,真要动手做的话,每一步都能让你头大。
数据清洗的重要性
数据清洗可重要了!要是有些数据弄错了,那分析出来的结果可就没用。就像做饭前的洗菜一样,菜没洗净饭咋好吃?所以,每次做这个我都得花好多力气,挨个细查,保证没问题才行。
数据分析的技巧
用数据分析时,有几个小窍门儿能帮你快速抓到重点。比如用`max(zip(result2[i].values(),result2[i].keys()))[1]`这个公式,就能找出最大值对应的键,这样你就不用在一大堆数据里找半天了。这些小技巧看似简单,但有时候真的能派上大用场!
数据可视化的魅力
数据可视化就像把无聊的数字变成有趣的东西。用图表就能直接看出数据变动,可比光看数字有意思多!我最爱用折线图来看股票走势,一眼就能明白,心情也会随着图形的高低起伏。
数据分析的风险
数据分析确实让咱们更懂市场了,但同时也有些小问题。有时候数据并不能完全展示市场实情,这时候就得靠经验和感觉来判断。就像开车,光看导航可不够,还要注意路面状况。
数据分析的成就感
虽然做数据分析挺累人,也挺让人头疼,但是看到那些有用的结果出来,那感觉真的很棒!就像你种了一棵树,然后它终于结果了,那种满足感是没法用别的来形容的。
数据分析的未来
随着科技越来越牛,我们处理和分析数据的手段也是日益升级。以后,我们可能要用到更高级的技术来搞定这些事,这样肯定能提高效率,不过也会带来新问题。
数据分析与生活
数据分析不仅是工作,也跟咱们日常生活有关。通过研究这些数字和信息,我们能更深层次地了解这个世界,做决定时也会更有把握。比如,通过查看天气预报来选明天要穿啥,看似简单,其实挺管用的。
数据分析的乐趣
import tushare as ts
import pandas as pd
import numpy as np
import copy
pro = ts.pro_api('你的token')
#1 获取沪深300成分股日线行情数据
def hqsj_hs():
df1 = pro.index_weight(index_code='399300.SZ', trade_date='20201231')
df=pd.DataFrame()
for i in range(len(df1)):
df2 = pro.daily(ts_code=df1.iloc[i,1], start_date='20200101', end_date='20201231')
df=pd.concat([df,df2],axis=0)
df.to_excel('股票数据.xlsx',index=False)
hqsj_hs()
#股票数据.xlsx需要手动将excel表按股票代码和交易日期升序
#2 计算相关性
def xgx():
df=pd.read_excel('股票数据.xlsx',engine='openpyxl')
result={}
for i in range(len(df)):
key=df.iloc[i,0]
if result.get(key,False):
result[key].append(df.iloc[i,-3])
else:
result[key] = [df.iloc[i,-3]]
result1=copy.deepcopy(result)
for i in result:
if len(result[i])!=243:
del result1[i]
for i in result1:
result1[i].append([result1[i][1:],result1[i][:-1]])
result2={}
for i in result1:
aa = {}
now=pd.Series(result1[i][-1][0])
for j in result1:
pre=pd.Series(result1[j][-1][1])
xgx=now.corr(pre)
aa[j]=abs(xgx)
result2[i]=aa
#print(result2)
result3={}
for i in result2:
result3[i]={max(zip(result2[i].values(), result2[i].keys()))[1]:max(zip(result2[i].values(), result2[i].keys()))[0]}
xxx=[]
for i in result3:
for j in result3[i]:
xxx.append(result3[i][j])
b=sorted(xxx,reverse = True)[:1] #取相关性最大的
result4={}
for i in result3:
for j in result3[i]:
for x in b:
if x==result3[i][j]:
result4[i]={j:x}
print(result4)
return result4
#3 获取21年数据
def test_data():
result4=xgx()
ts_code=[]
for i in result4:
for j in result4[i]:
ts_code.append(j)
df = pd.DataFrame()
for i in ts_code:
df1 = pro.daily(ts_code=i, start_date='20210101', end_date='20210331')
df = pd.concat([df, df1], axis=0)
df.to_excel('股票数据1.xlsx', index=False)
test_data()
#4 买股方案
def mgfa():
df=pd.read_excel('股票数据1.xlsx',engine='openpyxl')
timeseries=df['trade_date'].tolist()
timetime=list(set(timeseries))
timetime1=sorted(timetime)
result4=xgx()
ts1=[] #昨天
ts2=[] #今天
for i in result4:
ts2.append(i)
for j in result4[i]:
ts1.append(j)
result1={}
for i in range(len(df)):
time=df.iloc[i,1]
if result1.get(time,False):
aa.append(df.iloc[i,-3])
else:
aa=[]
aa.append(df.iloc[i,-3])
result1[time]=aa
result2={}
for i in result1:
if i!=20210331:
aaa=[]
for j in result1[i]:
if j >0:
aaa.append(ts2[result1[i].index(j)])
result2[timetime1[timetime1.index(i)+1]]=aaa
print(result2)
return result2
mgfa()
#5 获取测试数据
def cssj():
result4=xgx()
ts_code=[]
for i in result4:
ts_code.append(i)
df = pd.DataFrame()
for i in ts_code:
df1 = pro.daily(ts_code=i, start_date='20210101', end_date='20210331')
df = pd.concat([df, df1], axis=0)
df.to_excel('股票数据2.xlsx', index=False)
cssj()
#6 评估策略
def jssy():
result2=mgfa()
result4=xgx()
df=pd.read_excel('股票数据2.xlsx',engine='openpyxl')
zdf=[]
for i in result2:
if len(result2[i]) == 1:
for j in result2[i]:
for x in range(len(df)):
if df.iloc[x, 0] == j and df.iloc[x, 1] == i:
zdf.append(df.iloc[x, -3])
else:
zdf.append(0)
bbb=1
for i in zdf:
bbb=bbb*(1+i/100)
bb=(bbb-1)*100
print('总收益率/%:',bb)
print('夏普率:', np.mean(zdf)/np.std(zdf,ddof=1))
ccc=1
hc=1
max_hc=[]
for i in zdf:
kk=ccc*(1+i/100)
if kk
终于要说,做数据分析也挺好玩儿的!一头扎进数据堆里,你会发现每个数字都藏着好多有趣的事儿。就像玩探险游戏似的,每次分析都是新发现。
本文 融资融券杠杆炒股 原创,转载保留链接!网址:http://www.sxwdjt.cn//zmt/231.html
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
后台-插件-广告管理-内容页尾部广告(手机) |