指定周一为调仓日,获取一定时间段调仓日列表

一个非常好用的获取指定交易日期的函数,可以指定以星期为单位调仓,指定星期几。也可以指定以月为单位调仓,指定第几天。

我们指定的调仓时间为周一,即使周一为节假日休市,也不使用周二作为调仓日。这里用到一个日期是星期几的获取函数:weekday()。如果 weekday() == 0,说明这个日期是周一。

import jqdata
import datetime

trans_fq = 'weekly' #设置调仓周期
start_date = '2023-01-01' #研究开始时间
end_date= '2023-01-31' #研究结束时间

# 获取交易日期
def get_tradedays(start_date, end_date, frq='weekly'):
    result = []
    tradedays_list = jqdata.get_trade_days(start_date = start_date, end_date=end_date)
    if frq == 'daily':
        result = tradedays_list
    elif frq == 'weekly':
        for i in range(len(tradedays_list)):
            if tradedays_list[i].weekday() == 0:
                result.append(tradedays_list[i])
    elif frq == 'monthly':
        for i in range(len(tradedays_list)):
            if i == 0:
                result.append(tradedays_list[i])
            elif tradedays_list[i - 1].month <   tradedays_list[i].month:
                result.append(tradedays_list[i])
    return result


trade_date_list = get_tradedays(start_date = start_date, end_date=end_date, frq = trans_fq)
print('\n调仓日:', trade_date_list)

输出:

[datetime.date(2023, 1, 9), datetime.date(2023, 1, 16), datetime.date(2023, 1, 30)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现动量因子的一种常见方法是计算过去一段时间内资产的收益率,并根据这些收益率排名,选取表现最好的一部分资产。具体步骤如下: 1. 设定选股周期,例如一个月。 2. 在每个选股周期结束时,计算每个股票在过去一段时间内的收益率。这里可以选择不同的时间窗口,例如过去3个月或过去6个月。 3. 对所有股票的收益率进行排名,选取排名靠前的一部分作为投资组合。排名靠前的比例可以根据实际情况进行调整。 4. 在下一个选股周期开始时,卖出已有持仓中排名较低的股票,买入新的排名靠前的股票。 下面是一个简单的 Python 实现,假设我们选取过去6个月的收益率作为动量因子,每个月调仓一次: ```python import pandas as pd import numpy as np # 获取股票收盘价数据 prices = pd.read_csv('price_data.csv', index_col=0) # 计算股票的收益率 returns = prices.pct_change() # 计算过去6个月的收益率 momentum = returns.iloc[-126:].sum() # 对股票的收益率进行排名 rank = momentum.rank(ascending=False) # 选取排名靠前的股票作为投资组合 portfolio = rank[rank <= len(rank) * 0.3].index # 输出选出的股票 print(portfolio) ``` 这段代码假设收盘价数据保存在名为 `price_data.csv` 的文件中,其中每行为一个日期,每列为一个股票代码。在这个例子中,我们计算过去6个月的收益率,并选取排名靠前的30%作为投资组合。每个月结束时,我们可以根据新的收益率数据重新计算排名并调整持仓。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值