当前位置: 首页> 教育> 幼教 > 金融工程--基础技术指标构建

金融工程--基础技术指标构建

时间:2025/7/15 7:06:27来源:https://blog.csdn.net/bw876720687/article/details/141405466 浏览次数:1次

背景

构建基础技术指标 有助于实现对全局市场监控和模型层面的训练构建特征工程。同时能够熟悉理论基础。

技术指标代码

百分比收益率 (Percentage Return)
计算方法:当前价格与前一交易日价格的差额除以前一交易日的价格,再乘以100%。
用途:衡量股票价格的变动幅度。

def calculate_return(series):return series.pct_change() * 100

滞后收益率 (Lagged Returns)
计算方法:将收益率指标应用到过去的数据上,例如,Lag1 表示前一天的收益率。
用途:分析过去价格变动对当前价格变动的潜在影响。

def create_lagged_series(symbol, start_date, end_date, lags=5):# ... 省略其他代码 ...for i in range(0, lags):tslag["Lag%s" % str(i+1)] = ts["Adj Close"].shift(i+1)# ... 省略其他代码 ...

变动率 (Rate of Change, ROC)
计算方法:当前价格与若干天前价格之差除以若干天前的价格。
用途:衡量价格变动的速率,常用于识别趋势的加速或减缓。

def ROC(data, n):N = data['Close'].diff(n)D = data['Close'].shift(n)ROC = pd.Series(N / D, name='Rate of Change')data = data.join(ROC)return data

简单移动平均线 (Simple Moving Average, SMA)
计算方法:选定周期内的平均价格。
用途:平滑价格数据,帮助识别趋势。

def SMA(data, ndays):SMA = pd.Series(data['Close'].rolling(window=ndays).mean(), name='SMA')data = data.join(SMA)return data

指数移动平均线 (Exponentially-weighted Moving Average, EWMA)
计算方法:给予近期数据更高的权重,对价格进行加权平均。
用途:更敏感地反映近期价格变动,常用于趋势跟踪和交易信号。

def EWMA(data, ndays):EMA = pd.Series(data['Close'].ewm(span=ndays, min_periods=ndays-1).mean(), name='EWMA_' + str(ndays))data = data.join(EMA)return data

力道指标 (Force Index, FI)
计算方法:价格变化乘以交易量。
用途:衡量市场力量,反映价格变动背后的动力。

def ForceIndex(data, ndays):FI = pd.Series(data['Close'].diff(ndays) * data['Volume'], name='ForceIndex')data = data.join(FI)return data

布林带 (Bollinger Bands)
计算方法:中轨是简单移动平均线,上轨和下轨分别是中轨加上或减去两倍的标准差。
用途:衡量价格波动性,识别超买或超卖状态。

def BBANDS(data, ndays):MA = data['Close'].rolling(window=ndays).mean()SD = data['Close'].rolling(window=ndays).std()b1 = MA + (2 * SD)B1 = pd.Series(b1, name='Upper BollingerBand')data = data.join(B1)b2 = MA - (2 * SD)B2 = pd.Series(b2, name='Lower BollingerBand')data = data.join(B2)return data

商品通道指数 (Commodity Channel Index, CCI)
计算方法:(TP - TP的移动平均) / (0.015 * TP的标准差),其中TP是商品价格的平均值。
用途:衡量价格相对于其平均价格的位置,常用于发现价格的异常波动。

def CCI(data, ndays):TP = (data['High'] + data['Low'] + data['Close']) / 3CCI = pd.Series((TP - TP.rolling(ndays).mean()) / (0.015 * TP.rolling(ndays).std()), name='CCI')data = data.join(CCI)return data

移动平均收敛发散 (Ease of Movement, EVM)
计算方法:真实波幅(True Range)除以交易量的移动平均,再除以价格范围。
用途:衡量价格变动的强度和持续性,常用于识别趋势的强度。

def EVM(data, ndays):dm = ((data['High'] + data['Low']) / 2) - ((data['High'].shift(1) + data['Low'].shift(1)) / 2)br = (data['Volume'] / 100000000) / (data['High'] - data['Low'])EVM = dm / brEVM_MA = pd.Series(EVM.rolling(ndays).mean(), name='EVM')data = data.join(EVM_MA)return data

参考文献

关键字:金融工程--基础技术指标构建

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: