@AI量化投资
量化投资研究教程
本教程将使用Python和Cursor进行量化投资研究,代码使用Cursor自动生成。
文件结构
challenger
src
quant101.py
data
YYYYMMDD
RB2310.csv
RB2401.csv
pic
1. 导入数据
首先,我们需要导入challenger/data
文件夹下的子文件夹,这些子文件夹的命名格式为YYYYMMDD
。我们将这些文件夹按照升序排列,然后导入每个文件夹下的RB2310.csv
和RB2401.csv
文件。我们将创建两个dataframe,front
和back
,并将RB2310
的数据放入front
,将RB2401
的数据放入back
。
import pandas as pd # 导入pandas库,用于数据处理
import os # 导入os库,用于操作系统相关的操作,如改变工作目录
import matplotlib.pyplot as plt # 导入matplotlib.pyplot库,用于数据可视化
import mplfinance as mpf # 导入mplfinance库,用于绘制金融图表
os.chdir('C:/challenger') # 改变工作目录到'C:/challenger'
folders = [folder for folder in os.listdir('./data') if os.path.isdir(os.path.join('./data', folder))] # 获取'./data'目录下的所有文件夹
folders = sorted(folders) # 对文件夹列表进行排序
front = pd.DataFrame() # 初始化一个空的DataFrame,命名为front
back = pd.DataFrame() # 初始化一个空的DataFrame,命名为back
# 导入数据
for folder in folders: # 遍历每一个文件夹
front = pd.concat([front, pd.read_csv(f'./data/{
folder}/RB2310.csv')]) # 读取每个文件夹下的RB2310.csv文件,并将其添加到front DataFrame中
back = pd.concat([back, pd.read_csv(f'./data/{
folder}/RB2401.csv')]) # 读取每个文件夹下的RB2401.csv文件,并将其添加到back DataFrame中
2. 数据清洗
我们需要对front
和back
的成交量和成交额进行处理。这些数据是日累加值,我们需要进行前后差值处理,以得到每一行的单独成交量和成交额。在交易日切换后,成交量和成交额会重新从零开始,所以在做差值处理时,可能会出现负值。我们的处理方式是,如果差值为负,则使用原来那行的成交量和成交额。
# 处理成交量和成交额
for df in [front, back]: # 遍历front和back两个DataFrame
volume_temp = df['volume'].diff() # 计算'volume'列的差分,即当前行与前一行的差值
abnorm_loc = volume_temp.loc[(volume_temp < 0