python金融量化——股票数据分割+计算单支股票利益率曲线(代码)

目录

1.股票数据分割

2.计算单支股票利益率曲线


1.股票数据分割

import pandas as pd


# 读取数据并进行初步处理
def read_csv_shuju(path):
    '''

    :param path:
    path:文件路径
    :return:
    data2: 处理后数据
    '''
    data1 = pd.read_csv(path, sep=',')
    data1['date'] = pd.to_datetime(data1['time'])
    data1['date']=data1['date'].dt.date
    data2 = data1.drop([ 'time','volume', 'amount', 'open_interest'], axis=1)
    data2.set_index('code', inplace=True)
    states = ['date','open', 'hight', 'low', 'close']
    data2.reindex(columns=states)
    return data2

# 对数据进行分割并保存
def write_csv_data(data,start,code):
    '''
    :param:
    data:需要分割的原始数据
    start:上一次调用所到数据(每次输入时需要修改start的值为上一次输出的end值)
    code:输入需要分割的数据的股票名称
    :return: 根据输入的股票名称截取股票数据所在的列范围数据

    '''
    stock_code=[]
    end=0
    end+=start

    for i in range(end,len(data.index)):
         if data.index[i] == code:
              end+=1
         else:
              continue
    stock_code=data[start:end]
    return end,stock_code



if __name__ == '__main__':
    '''
    stock_data为读取后初步处理数据(未分割)
    stock_code为对数据按照股票代码进行分割后数据
    '''
    # 文件路径
    path1 = '../data/附录一:30支股票行情.csv'

    stock_data = read_csv_shuju(path1)
    print("初步处理数据:")
    print(stock_data)
    # print(len(stock_data.index))
    # print(stock_data.index[69696])


    '''
     # 这里需要手动修改参数,依次分割30支股票
    需要修改的参数:
    start: 修改为上一次输出的end值
    code: 修改为需要分割出来的股票代码
    文件名: 存入csv时的路径文件名
    '''
    end=0
    start=67431
    code='szse.000028'
    stock_code=[]
    end,stock_code=write_csv_data(stock_data,start,code)
    # stock_code.to_csv('./code_data/30.csv')
    print('分割后股票数据:')
    print(stock_code)
    print(stock_code.index)
    print('end:')
    print(end)

2.计算单支股票利益率曲线

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import datetime

file_path = './data/30gupiao.csv'
data = pd.read_csv(file_path, header=0, low_memory=False, index_col=1)

print(data.head())
data['value'] = data['close'] / data['open']
print(data['value'])

print(data.index)
data['date'] = pd.to_datetime(data.index)
data['year'] = data['date'].dt.date
print(data['date'])
print(data['year'])
data.index=data['year']
data1=data[:2000]
data2=[]


fig, ax = plt.subplots(1,2,figsize=(14,4))
ax[0].plot(data1['close'],color='b')
ax[1].plot(data1['value'],color='r')
# ax.set_xlim(data['time'])
plt.title('szse_002027')
plt.show()

运行结果:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 量化因子IC值的计算是通过统计学分析来衡量因子与股票收益的相关性。在Python中可以使用tushare库获取股票数据,然后通过Pandas库进行数据处理和计算。 以下是一个示例代码计算股票收益和一个量化因子的IC值: ```python import tushare as ts import pandas as pd # 获取股票数据 df_stock = ts.get_k_data('600519', start='2020-01-01', end='2021-01-01') # 计算股票收益 df_stock['return'] = df_stock['close'].pct_change() # 获取量化因子数据 df_factor = ts.get_hist_data('600519', start='2020-01-01', end='2021-01-01') # 计算因子值 df_factor['factor'] = (df_factor['high'] + df_factor['low']) / 2 # 合并数据 df = pd.merge(df_stock[['date', 'return']], df_factor[['date', 'factor']], on='date') # 计算IC值 ic = df['factor'].corr(df['return'], method='pearson') print('IC值为:', ic) ``` 在这个示例代码中,我们使用了tushare库获取了茅台(股票代码为600519)的股票数据和一个量化因子数据,然后计算股票收益和因子值,并将它们合并在一起。最后,我们使用Pandas库中的corr()函数计算了因子值和收益之间的相关性,得到了IC值。 ### 回答2: 股票量化因子IC值是衡量某一因子与股票收益之间相关性的指标,可以用来评估因子的有效性和预测能力。在Python中,可以使用tushare库来获取股票数据,并通过编写代码计算量化因子IC值。 首先,需要导入tushare库和其他需要使用的库: ```python import tushare as ts import pandas as pd import numpy as np ``` 接下来,使用tushare库的功能获取股票数据,例如获取某一只股票的历史行情数据: ```python # 设置tushare账号 ts.set_token('your_token') pro = ts.pro_api() # 获取股票行情数据 data = pro.daily(ts_code='000001.SZ', start_date='20190101', end_date='20201231') ``` 然后,通过编写代码计算量化因子IC值。首先,需要根据因子的计算公式自定义相应的函数。例如,如果要计算某一因子的IC值,可以编写如下的函数: ```python def calculate_factor(data): # 通过股票数据计算因子值 # ... return factor_value def calculate_ic(data, factor_value): # 通过因子值和股票收益计算IC值 # ... return ic_value ``` 在`calculate_factor`函数中,需要根据因子的计算公式来计算因子值。在`calculate_ic`函数中,根据因子值和股票收益计算IC值。 最后,调用函数并打印结果: ```python factor_value = calculate_factor(data) ic_value = calculate_ic(data, factor_value) print("IC值为:", ic_value) ``` 这样,就可以通过Python代码使用tushare库获取股票数据,并计算量化因子IC值了。在实际应用中,可以根据具体需要进行进一步的数据处理和分析。 ### 回答3: 股票量化因子IC值计算量化投资中的重要指标,可以衡量因子与股票收益之间的相关性。下面是通过Python代码实现通过tushare数据库获取数据计算股票量化因子IC值的一个示例: 首先,需要安装tushare库并导入相关模块: ```python import tushare as ts import pandas as pd ``` 然后,使用tushare库中的get_hist_data函数获取股票历史数据,以计算因子: ```python # 获取股票历史数据 data = ts.get_hist_data('600519', start='2020-01-01', end='2021-01-01') ``` 接下来,根据你所选择的量化因子,计算因子的值,例如计算股票的5日均线: ```python # 计算5日均线 data['5日均线'] = data['close'].rolling(window=5).mean() ``` 然后,计算因子与股票收益之间的相关性,以获取IC值: ```python # 计算因子与股票收益之间的相关系数 IC = data['5日均线'].corr(data['pct_change']) ``` 最后,输出结果: ```python print("股票量化因子IC值为:", IC) ``` 以上就是使用Python代码实现通过tushare数据库获取数据计算股票量化因子IC值的一个示例。需要注意的是,这只是一个简单的示例,具体的计算方法和量化因子的选择需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值