python量化选股策略代码
时间: 2023-11-12 14:59:04 浏览: 125
好的,以下是一个简单的 Python 量化选股策略代码示例:
```python
import tushare as ts
# 获取股票数据
df = ts.get_hist_data('600519', start='2020-01-01', end='2021-01-01')
# 计算均线
df['ma5'] = df['close'].rolling(5).mean()
df['ma10'] = df['close'].rolling(10).mean()
# 判断买入卖出信号
df['signal'] = 0
df.loc[df['ma5'] > df['ma10'], 'signal'] = 1
df.loc[df['ma5'] < df['ma10'], 'signal'] = -1
# 计算收益率
df['pct_change'] = df['close'].pct_change()
df['strategy_return'] = df['signal'].shift(1) * df['pct_change']
# 计算累计收益率
df['cum_return'] = (1 + df['strategy_return']).cumprod()
# 输出结果
print(df.tail())
```
这个策略的思路是:当短期均线(5日均线)上穿长期均线(10日均线)时,买入股票;当短期均线下穿长期均线时,卖出股票。这个策略比较简单,实际应用中需要根据具体情况进行调整和优化。
相关问题
多因子量化选股策略代码
以下是一个简单的基于Python的多因子选股策略代码示例:
```python
# 导入必要的库
import pandas as pd
import numpy as np
import datetime as dt
from scipy import stats
import statsmodels.api as sm
# 获取股票数据
df = pd.read_csv('stock_data.csv', index_col=0)
# 定义因子
df['ROE'] = df['net_profit'] / df['total_equity']
df['PB'] = df['market_cap'] / df['total_equity']
df['PS'] = df['market_cap'] / df['revenue']
# 定义排名函数
def rank(df):
return df.rank(pct=True)
# 对因子进行排名
df['ROE_R'] = rank(df['ROE'])
df['PB_R'] = rank(df['PB'])
df['PS_R'] = rank(df['PS'])
# 定义因子权重
weights = {'ROE': 0.4, 'PB': 0.3, 'PS': 0.3}
# 计算综合得分
df['Score'] = df['ROE_R'] * weights['ROE'] + df['PB_R'] * weights['PB'] + df['PS_R'] * weights['PS']
# 根据得分进行排名
df['Rank'] = df['Score'].rank(ascending=False)
# 选择排名前10的股票
portfolio = df[df['Rank'] <= 10]
```
这个示例代码演示了如何使用三个因子(ROE、PB和PS)来进行多因子选股。首先,我们从CSV文件中读取股票数据,并计算每个因子的值。然后,我们对每个因子进行排名,并根据权重计算股票的综合得分。最后,我们将股票按得分进行排名,并选择排名前10的股票作为投资组合。请注意,这只是一个简单的示例代码,实际应用中可能需要更多的因子和更复杂的模型。
多因子量化选股策略的因子选择代码
多因子量化选股策略通常涉及从大量的潜在因素中挑选出对股票收益有显著影响的关键变量,比如市值、市盈率、股息率、成长速度等。在编写代码时,一般步骤包括数据获取、预处理、因子计算和模型构建。
以下是一个简单的Python示例,使用pandas库处理数据并筛选因子:
```python
import pandas as pd
from sklearn.feature_selection import SelectKBest, f_regression
# 假设df_data是你存储因子数据的DataFrame,包含股票代码(stock_code列)和各因子数据(如factor_1到factor_n列)
data = pd.read_csv('your_factors.csv') # 替换为实际文件路径
# 确保所有因子都是数值型
data = data.select_dtypes(include='number')
# 计算每个因子与股票回报的相关性,SelectKBest用于选取最重要的k个因子
selector = SelectKBest(score_func=f_regression, k=5) # 可调整k值
X = data.drop('stock_code', axis=1) # 删除非因子的 stock_code 列
y = data['stock_return'] # 假设 stock_return 为股票收益率
selector.fit(X, y)
# 获取最重要的因子
selected_factors = X.columns[selector.get_support()]
print("选定的因子:", selected_factors)
阅读全文