1:价值投资策略

以下是一个简单的用Python实现价值投资策略的实例。这个例子将使用Pandas库来处理数据,并计算一些常见的价值投资指标,如市盈率(PE)、市净率(PB)和股息率,以筛选出潜在的低估股票。这里我们选取那些我们认为市盈率小于10,市净率小于1.5,股息率大于5%的股票是低估的。

import pandas as pd
import numpy as np
 
# 假设这是我们的股票数据,包含股票代码、最新股价、每股收益(EPS)、净资产(BVPS)和股息
data = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '最新股价': [10, 15, 20, 25],
    '每股收益': [1, 1.5, 2, 2.5],
    '净资产': [5, 7.5, 10, 12.5],
    '股息': [0.5, 0.75, 1, 1.25]
}
 
# 创建DataFrame
df = pd.DataFrame(data)
 
# 计算市盈率(PE)、市净率(PB)和股息率
df['市盈率'] = df['最新股价'] / df['每股收益']
df['市净率'] = df['最新股价'] / df['净资产']
df['股息率'] = df['股息'] / df['最新股价']
 
# 假设我们认为市盈率小于10,市净率小于1.5,股息率大于5%的股票是低估的
df_value_stocks = df[(df['市盈率'] < 10) & (df['市净率'] < 1.5) & (df['股息率'] > 0.05)]
 
# 打印筛选出的价值投资股票
print(df_value_stocks[['股票代码', '市盈率', '市净率', '股息率']])

2:成长投资策略

以下是一个简单的用Python实现成长投资策略的实例。这个例子将使用Pandas库来处理数据,并计算一些常见的成长投资指标,如收入增长率、利润增长率和市值增长率,以筛选出具有高增长潜力的股票。假设我们认为收入增长率大于20%,利润增长率大于20%,市值增长率大于10%的股票具有高增长潜力。 

import pandas as pd
import numpy as np
 
# 假设这是我们的股票数据,包含股票代码、市值、收入和利润
data = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '市值': [1000, 1500, 2000, 2500],
    '收入(亿元)': [10, 12, 8, 15],
    '利润(亿元)': [1, 1.5, 0.8, 2]
}
 
# 创建DataFrame
df = pd.DataFrame(data)
 
# 假设我们还拥有这些股票上一年的收入和利润数据
data_last_year = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '收入(亿元)': [8, 10, 6, 12],
    '利润(亿元)': [0.8, 1, 0.6, 1.5]
}
df_last_year = pd.DataFrame(data_last_year)
 
# 合并当前和去年的数据
df = df.merge(df_last_year, on='股票代码', suffixes=('', '_last_year'))
 
# 计算收入增长率、利润增长率和市值增长率
df['收入增长率'] = (df['收入(亿元)'] - df['收入(亿元)_last_year']) / df['收入(亿元)_last_year']
df['利润增长率'] = (df['利润(亿元)'] - df['利润(亿元)_last_year']) / df['利润(亿元)_last_year']
df['市值增长率'] = (df['市值'] - df['市值'] / (1 + df['收入增长率'])) / (df['市值'] / (1 + df['收入增长率']))
 
# 假设我们认为收入增长率大于20%,利润增长率大于20%,市值增长率大于10%的股票具有高增长潜力
df_growth_stocks = df[(df['收入增长率'] > 0.20) & (df['利润增长率'] > 0.20) & (df['市值增长率'] > 0.10)]
 
# 打印筛选出的成长投资股票
print(df_growth_stocks[['股票代码', '收入增长率', '利润增长率', '市值增长率']])

3:分散投资策略

分散投资策略是一种风险管理方法,旨在通过在不同类型的投资工具、行业、地区或资产类别之间分配资金来降低投资组合的整体风险。

以下是一个使用Python实现分散投资策略的简单实例。在这个例子中,我们将使用Pandas库来创建一个投资组合,并分配不同资产类别的权重。
              
原文链接:https://blog.csdn.net/2301_80651329/article/details/141342280

import pandas as pd
import numpy as np
 
# 定义资产类别及其预期收益率和标准差
assets = {
    '资产类别': ['股票', '债券', '黄金', '房地产'],
    '预期收益率': [0.10, 0.05, 0.02, 0.08],  # 假设的年化收益率
    '标准差': [0.15, 0.05, 0.10, 0.12]  # 假设的年化标准差
}
 
# 创建DataFrame
df_assets = pd.DataFrame(assets)
 
# 分配资产权重,这里我们假设是等权重分配
weights = np.array([0.25, 0.25, 0.25, 0.25])
 
# 计算投资组合的预期收益率和风险
portfolio_return = np.sum(df_assets['预期收益率'] * weights)
portfolio_risk = np.sqrt(np.dot(weights.T, np.dot(df_assets['标准差']**2, weights)))
 
# 打印结果
print(f"投资组合的预期收益率: {portfolio_return:.2%}")
print(f"投资组合的风险(标准差): {portfolio_risk:.2%}")

4:动量投资策略

动量策略的实施通常包括以下几个步骤:首先确定一个时间窗口来计算资产的回报率,然后根据这个回报率对资产进行排名,最后选择表现最好的资产进行买入,而表现差的资产则可能被卖出或卖空 。这种策略背后的逻辑是市场参与者对新信息的反应不足,导致价格在一段时间内沿着一个方向持续变动,形成动量效应 。动量投资策略是基于历史价格表现来选择股票的一种策略,它假设股票的过去表现会在未来一段时间内持续。

import pandas as pd
import numpy as np
 
# 假设这是我们的股票价格数据,包含日期和每个股票的价格
data = {
    '日期': pd.date_range(start='2020-01-01', periods=252, freq='B'),  # 假设一年内每个交易日都有数据
    '股票A': np.random.normal(100, 10, 252),  # 假设股票A的价格
    '股票B': np.random.normal(80, 8, 252),  # 假设股票B的价格
    '股票C': np.random.normal(120, 12, 252)  # 假设股票C的价格
}
 
# 创建DataFrame
df = pd.DataFrame(data).set_index('日期')
 
# 计算过去12个交易日的回报率
lookback_period = 12
df['股票A回报率'] = df['股票A'].pct_change(lookback_period)
df['股票B回报率'] = df['股票B'].pct_change(lookback_period)
df['股票C回报率'] = df['股票C'].pct_change(lookback_period)
 
# 去除NA值
df = df.dropna()
 
# 选择最近日期的回报率
latest_returns = df.iloc[-1, 1:]
 
# 根据回报率选择动量最高的股票
momentum_stock = latest_returns.idxmax()
 
# 打印动量最高的股票及其回报率
print(f"动量最高的股票是: {momentum_stock}")
print(f"其过去{lookback_period}个交易日的回报率为: {latest_returns[momentum_stock]:.2%}")

5:收入投资策略


收入投资策略,也被称作股息投资策略或高股息策略,是一种注重上市公司分红能力的投资策略。其核心思想是选择那些能够持续稳定地支付较高股息的优质上市公司股票,通过获取稳定的股息收入和潜在的资本增值来实现长期收益。这种策略的特点是稳健性、长期收益和具有较好的防御属性,尤其在市场波动时,高股息股票往往表现出相对较好的抗跌性 。收入投资策略通常关注于投资那些提供稳定现金流回报的资产,如高股息股票或债券。

  1. 获取股票数据,包括股票代码、最新股价和最近一年的股息。
  2. 计算股息率。

import pandas as pd
 
# 假设这是我们的股票数据,包含股票代码、最新股价和最近一年的股息
data = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '最新股价': [10, 15, 20, 25],
    '最近一年股息': [1, 1.5, 2, 2.5]  # 假设这是每股的年度股息
}
 
# 创建DataFrame
df = pd.DataFrame(data)
 
# 计算股息率
df['股息率'] = df['最近一年股息'] / df['最新股价']
 
# 假设我们想要筛选出股息率高于某个阈值的股票,比如5%
dividend_yield_threshold = 0.05
income_stocks = df[df['股息率'] > dividend_yield_threshold]
 
# 打印筛选出的收入投资股票
print(income_stocks[['股票代码', '股息率']])

6:对冲策略(市场中性策略)


对冲策略(市场中性策略)是一种风险管理手段,旨在减少或消除投资组合中的不确定性和风险。这种策略通常涉及采取相反的交易头寸,以抵消潜在的损失。对冲策略通常涉及同时持有多头和空头头寸,目的是减少或消除市场风险,专注于某个特定因素(如股票的相对表现)的收益。

import pandas as pd
import numpy as np
 
# 假设这是两只股票的历史价格数据
data = {
    '日期': pd.date_range(start='2020-01-01', periods=100, freq='B'),
    '股票A价格': np.random.normal(100, 10, 100),  # 假设股票A的价格
    '股票B价格': np.random.normal(100, 10, 100)  # 假设股票B的价格
}
 
# 创建DataFrame
df = pd.DataFrame(data).set_index('日期')
 
# 计算两只股票价格之间的价差
df['价差'] = df['股票A价格'] - df['股票B价格']
 
# 计算价差的均值和标准差
mean_diff = df['价差'].mean()
std_diff = df['价差'].std()
 
# 设置交易阈值,例如2倍标准差
threshold = 2 * std_diff
 
# 初始化交易信号
df['交易信号'] = np.where(df['价差'] > mean_diff + threshold, '卖出A买入B',
                          np.where(df['价差'] < mean_diff - threshold, '买入A卖出B', '无操作'))
 
# 找出需要执行交易的日期
trading_dates = df[df['交易信号'] != '无操作'].index
 
# 打印交易信号
print(df.loc[trading_dates, ['价差', '交易信号']])

7:指数投资策略

指数投资策略是一种被动投资方法,它涉及购买并持有一个指数基金或交易所交易基金(ETF),这些基金跟踪并模仿特定市场指数的表现。指数投资策略的目标是复制某个特定指数的表现。

import pandas as pd
import numpy as np
 
# 假设这是某个指数的成分股及其权重
index_constituents = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '权重': [0.25, 0.20, 0.30, 0.25]  # 权重总和为1
}
 
# 创建DataFrame
df_index = pd.DataFrame(index_constituents)
 
# 假设这是成分股的历史价格数据
price_data = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '最新价格': [10, 15, 20, 25]  # 假设的最新价格
}
 
# 创建价格DataFrame
df_prices = pd.DataFrame(price_data)
 
# 合并成分股和价格信息
df = pd.merge(df_index, df_prices, on='股票代码')
 
# 假设我们有的总投资额
total_investment = 100000  # 假设我们有10万元用于投资
 
# 根据权重计算每只股票的投资额
df['投资额'] = df['权重'] * total_investment
 
# 计算投资组合的总价值
portfolio_value = np.sum(df['投资额'] / df['最新价格'])
 
# 打印投资组合的分配和总价值
print(df[['股票代码', '权重', '最新价格', '投资额']])
print(f"投资组合的总价值: {portfolio_value:.2f}")
 
# 假设过了一段时间,价格变化如下
price_changes = {
    '股票代码': ['000001', '000002', '000003', '000004'],
    '价格变化': [0.05, -0.02, 0.03, 0.04]  # 假设的价格变化
}
 
# 更新价格并计算投资组合的表现
df_prices = df_prices.set_index('股票代码')
df_prices.update(pd.DataFrame(price_changes).set_index('股票代码'))
df['最新价格'] = df_prices['最新价格']
df['投资回报'] = df['投资额'] / df['最新价格'] - df['投资额']
 
# 打印投资组合的表现
print(df[['股票代码', '投资回报']])
print(f"投资组合的总回报: {np.sum(df['投资回报']):.2f}")

8:社会责任投资(SRI)和环境、社会及治理(ESG)投资策略

社会责任投资(SRI)是一种投资策略,它不仅考虑财务回报,还关注企业在社会责任方面的表现。SRI投资者会基于一系列社会伦理标准来评估和选择投资的企业,这些标准包括企业的持续性、法律遵守、雇佣习惯、人权尊重、消费者问题、社会贡献和环境问题等 。SRI的策略通常包括筛选(Screening)、股东主张(Shareholder Advocacy)和社区投资(Community Investing) 。

环境、社会及治理(ESG)投资策略是一种更为广泛的方法,它将环境(Environmental)、社会(Social)和公司治理(Governance)因素纳入投资决策过程。ESG投资不仅关注企业的财务表现,还关注企业如何应对环境和社会风险以及其治理结构和实践 。ESG投资的核心在于评估企业在促进经济可持续发展、履行社会责任等方面的表现,以及这些因素如何影响企业的长期价值和风险状况 。

SRI和ESG投资策略都强调在追求财务回报的同时,也要考虑对社会和环境的贡献。然而,SRI更倾向于基于投资者的价值观和道德标准来选择或排除某些投资,而ESG投资则更侧重于系统性地评估和整合这些因素,以实现风险管理和长期价值创造 。

在中国,SRI还处于初期阶段,但随着人们对社会道德投资的重视逐渐增加,以及政府对提高公司治理、保护环境等方面的法规出台,SRI和ESG投资在中国的发展前景广阔 。中国已经开始推动相关的投资理念,如深交所发布的《上市公司社会责任指引》以及兴业社会责任基金发行的“兴业社会责任股票型基金”,这些都是中国SRI和ESG投资发展的积极信号 。

import pandas as pd
import numpy as np
from scipy.stats import mean, var
 
# 假设这是从彭博社获取的ESG评分数据
esg_data = {
    '公司': ['公司A', '公司B', '公司C', '公司D'],
    '环境': [80, 70, 90, 60],
    '社会': [85, 75, 95, 65],
    '治理': [88, 78, 98, 68]
}
 
# 创建DataFrame
df_esg = pd.DataFrame(esg_data)
 
# 计算ESG评分的总和
df_esg['总分'] = df_esg['环境'] + df_esg['社会'] + df_esg['治理']
 
# 选择ESG评分总和最高的公司
top_esg_company = df_esg.loc[df_esg['总分'].idxmax()]
 
# 假设我们有100000元用于投资
total_investment = 100000
 
# 计算每家公司的投资权重
investment_weights = df_esg['总分'] / df_esg['总分'].sum()
 
# 计算每家公司的投资额
investment_amounts = investment_weights * total_investment
 
# 打印投资组合
print(df_esg.loc[investment_weights.index, ['公司', '总分', '投资额']])

Logo

专业量化交易与投资者大本营

更多推荐