Python量化交易沪深两市高管持股数据挖掘价值投资参考

这里我们提供下高管持股数据挖掘的源代码,顺便将我们前几节课的教学视频总结下。

首先,我们需要定义一个函数,计算个股高管的持股分析计算。计算最近一年度持股最多的那位高管,连续近几年来是否存在减持的情况。


def 持股分析(code):
    path = './data/%s.xls' % code
    if not os.path.exists(path):
        print("要分析的个股不存在!")
        return
    stock_data = pd.read_excel(path)

    # 第一步, 简单的数据清洗:只取出结束日期最大且持股数据不为0的记录
    # 20191231
    max_date = stock_data['end_date'].max()
    max_date_stock = stock_data.loc[stock_data['end_date'] == max_date].loc[stock_data['hold_vol'] > 0]
    if max_date_stock.empty:
        return False
    # 第二步, 获得高层持股人员数据,我们只取当前持股数最大的高层管理人员(只取一个,多个的分析可以自己完成)
    hold_vol_max = max_date_stock['hold_vol'].max()
    analy_data_stock = max_date_stock.loc[max_date_stock['hold_vol'] == hold_vol_max]
    manager_name = analy_data_stock.iloc[0]['name']
    # print(manager_name)
    # 第三步, 获得待计算的高层人员历史所有持股数据,按照日期降序排序,且只取前20条数据
    last_result_data = stock_data[stock_data.name == manager_name][:20]
    # print(last_result_data)
    # 如果持股记录数少于20条,则不进行计算
    if last_result_data.shape[0] < 20:
        return False
    last_result_data = last_result_data.sort_values('end_date', ascending=False)
    # 将空值转换为0
    last_result_data = last_result_data.fillna(0)
    # 第四步,判断持股是否存在减少的情况(即减持)
    result = cal_hold_vol(last_result_data)
    if result:
        print("股票:%s,符合要求" % code)
    return result

里面涉及的函数cal_hold_vol(),该函数计算的结果为true或false,代表是否满足我们的需求,为true即持股最多的那位高管近几年来没有存在减持的情况,满足要求。为false,近几年来存在减持情况,不满足要求。函数代码如下:

def cal_hold_vol(last_result_data):
    origin_data = last_result_data.hold_vol.tolist()
    for i in range(len(origin_data)):
        if i != len(origin_data) - 1:
            cal_result = origin_data[i] - origin_data[i + 1]
            if cal_result < 0:
                return False
    return True

至此,我们的核心代码已经编写完成。我们还需要写一个代码,遍历读取两市的所有股票的进行分析,两市的股票代码我们保存在csv文件中。从文件中读取进行遍历。


# 股票列表数据
data = pd.read_csv("股票列表.csv")
empty_pd = pd.DataFrame(columns=["ts_code", "name"])
for index, row in data.iterrows():
    ts_code = row['ts_code']
    name = row['name']
    result = 持股分析(ts_code)
    # result 返回结果:true,符合;false:不符合
    if result:
        temp = pd.DataFrame({"ts_code": ts_code, "name": name}, index=["0"])
        empty_pd = empty_pd.append(temp, ignore_index=True)
empty_pd.to_csv("aly_result.csv")

计算结果,我们存入了aly_result.csv的csv文件中,总共计算得出的满足条件的结果有200多只股票。

Python量化交易沪深两市高管持股数据挖掘价值投资参考


发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/76854
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 12 日
下一篇 2024 年 7 月 12 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注