首页 > 其他分享 >量化交易策略[附代码] #37

量化交易策略[附代码] #37

时间:2024-07-24 09:29:47浏览次数:15  
标签:Amihud amihud illiq df 代码 37 DataFrame 因子 量化

在这里插入图片描述
在这里插入图片描述

#37 Amihud illiquidity

import pandas as pd

def calculate_amihud_illiq(df):
    """
    计算每只股票和月份的Amihud非流动性因子。
    
    参数:
    df (pd.DataFrame): 包含'股票代码'、'日期'、'日收益率'、'日成交金额'列的DataFrame
    
    返回:
    pd.DataFrame: 包含'股票代码'、'月份'、'amihud_illiq'列的DataFrame
    """
    # 确保日期列为datetime格式
    df['日期'] = pd.to_datetime(df['日期'])
    
    # 提取月份和年份
    df['月份'] = df['日期'].dt.to_period('M')
    
    # 计算绝对日收益率与成交金额的比率
    df['比率'] = df['日收益率'].abs() / df['日成交金额']
    
    # 按股票和月份分组,计算平均比率
    illiq_df = df.groupby(['股票代码', '月份']).agg(
        amihud_illiq=('比率', 'mean'),
        交易天数=('比率', 'count')
    ).reset_index()
    
    # 过滤出交易天数不少于15天的月份
    illiq_df = illiq_df[illiq_df['交易天数'] >= 15]
    
    # 删除交易天数列,因为不再需要
    illiq_df = illiq_df.drop(columns=['交易天数'])
    
    return illiq_df

# 示例数据
data = {
    '股票代码': ['A', 'A', 'A', 'B', 'B', 'B'],
    '日期': ['2023-06-01', '2023-06-02', '2023-06-03', '2023-06-01', '2023-06-02', '2023-06-03'],
    '日收益率': [0.01, -0.02, 0.03, 0.04, -0.01, 0.02],
    '日成交金额': [1000, 2000, 1500, 1200, 1800, 1100]
}

df = pd.DataFrame(data)
amihud_illiq_df = calculate_amihud_illiq(df)
print(amihud_illiq_df)

这段代码实现了以下功能:

  • calculate_amihud_illiq 函数接收包含 股票代码日期日收益率日成交金额 列的DataFrame。
  • 它计算每只股票的绝对日收益率与成交金额的比率。
  • 按股票和月份对数据进行分组,然后计算该比率的平均值。
  • 过滤出交易天数不少于15天的月份。
  • 最后返回一个包含每只股票和月份的Amihud非流动性因子的DataFrame。

点评
优点

简单易懂:该因子计算方法简单,仅需股票的日收益率和日成交金额。
直观性强:通过将价格变动与成交金额的比率进行平均,可以直观地反映股票的流动性情况。
数据需求低:相比一些复杂的流动性测度方法,Amihud非流动性因子所需的数据较少,易于获取。

缺点

忽略市场深度:该因子仅考虑了价格变动与成交金额的比率,未能考虑市场深度(如买卖挂单的数量和价差)。
容易受到极端值影响:若某天的成交金额极低而价格变动较大,则该因子会被极大地放大,可能会引入噪音。
不适合高频交易分析:该因子通常按月计算,无法反映更高频率(如分钟、小时)内的流动性变化。
线性假设:Amihud因子假设价格变动和成交金额之间呈线性关系,但在实际市场中,这种关系可能是非线性的。

实践应用

风险管理:非流动性高的股票在市场波动时可能面临更高的流动性风险,投资者可以根据Amihud因子调整投资组合以降低流动性风险。
资产定价:研究表明,非流动性高的股票往往需要更高的预期收益率以补偿流动性风险,投资者可以利用Amihud因子在资产定价模型中做调整。
市场分析:通过对不同股票或市场的Amihud因子进行比较,可以分析市场流动性的变化趋势,为政策制定或市场预测提供参考。

标签:Amihud,amihud,illiq,df,代码,37,DataFrame,因子,量化
From: https://blog.csdn.net/SuiZuoZhuLiu/article/details/140636053

相关文章

  • 某个OA系统的代码审计
    2023年HVV中爆出来的洞了,但是有一些漏洞点修复了,刚好地市级的攻防演练中遇到了一个,想着把可能出现问题的点全部审计一下,顺便熟悉一下.net代码审计。ps:感兴趣的师傅们可以自行根据poc搜索源码。0x1反编译好吧,当我没说,下载dnspy反编译即可,但是首先要找到web逻辑代码才能开始审计......
  • venv 已激活,但 pip 安装仍然默认进行,并且 python 在源代码中看不到该库
    在终端shell中的vscode中输入“whichpython”显示默认路径:C:\Users\erjan\AppData\Local\Programs\Python\Python311\python.exe(my_venv)但是(my_venv)意味着我的venv处于活动状态,我做了pipinstalltransformers,但下面的代码仍然显示错误-无法看到......
  • 我的海龟代码中出现此错误,我该怎么办?
    我试图使用turtle在python中编写一个简单的圆形图案,但是在第7行中它告诉我在输入我的函数时发生错误,如下所示:foriinrange(3):这里是代码fromturtleimport*bgcolor("black")speed(0)penup()goto(-200,0)pendown()foriinrange(3):forcolorsin......
  • 检测 Pandas 列中特征漂移的矢量化方法是什么?
    我正在研究非常大的熊猫数据框,这些数据框保存具有显着特征漂移的时间序列。漂移通常是突然的(例如,特征将比之前几个时期大1.5-2.0倍)。我找到了几种检测“概念漂移”的解决方案。一种方便的选择是河流然而,该解决方案不是矢量化的。显然,矢量化方法要快得多-最......
  • 我在让漂亮的汤在 vs studio 代码中工作时遇到问题
    它说找不到bs4模块。我尝试使用pip进行安装,但它说无法识别术语pip。我尝试使用cmd安装pip,视频从找到我的python版本开始。C:\Users\Josh>where.exepythonC:\Users\Josh\AppData\Local\Microsoft\WindowsApps\python.exeC:\Users\Josh>python--version系统......
  • WebDriverException:消息:服务 chromedriver 意外退出。状态代码为:127
    我想在我的服务器上使用selenium构建我的爬虫。因此我在我的Ubuntu17.10服务器上安装/下载了所需的依赖项-例如chromedriver、chromium-browser等但是,当我运行以下代码时:driver=webdriver.Chrome()它返回以下错误:-----------------------------------......
  • 小白快速入门量化交易的自学路径
    今年已然过去一半了,年初立的flag都实现了吗?据我多年来的观察,很多小白萌新开始学习量化,特别是年初的时候立下“宏图大志”,但有相当一部分最终没能"上岸",从入门到放弃,从然后到没有然后,并不是因为他们不够聪明或不够努力,原因有很多,我觉得大部分只是方向或方法没对。特别是对于......
  • 关于量化交易的一切,基本都在这里了
    感觉有段时间没有给大伙儿推荐量化干货了,那这次就继续推荐量化界的神作吧,跟之前推荐的量化神集和151策略是同一个级别的。本次推荐的量化干货就是美银证券(BofASECURITIES)发布的《QuantitativePrimer:Everythingyouwantedtoknowaboutquant》,翻译过来就是《量化交易......
  • 仅需增加2行代码,Python量化策略速度提升20+倍!
    今天分享一个Python量化策略加速的小技巧,不用修改原有代码,只需在原有代码里新增2行,策略执行速度便可能提高20+倍,正文开始~现如今,无论是入门量化投资,还是做数据分析、机器学习和深度学习,Python成为了首选编程语言,直观的原因就是容易上手和资源丰富,但Python有个根深蒂固的标签,......
  • 代码随想录 day33 斐波那契数 | 爬楼梯 |使用最小花费爬楼梯
    斐波那契数斐波那契数解题思路利用代码随想录给出的解题模板进行解题。先确定dp数组和dp下标的含义,之后需要确定遍历的顺序,接着我们通过枚举获得遍历的规矩,最后确定dq的初始值。知识点动态规划心得第一次做动态规划,主要是掌握基本的解题思路,了解一下到底是怎么解决问题的......