【量化金融】适度冒险因子复现
引用站外地址 Moderate-risk-model 6YoungHome 适度冒险因子 由于本因子需要用到分钟级别的量价数据,全部得到数据量太大,难以保存与下载。因此,我只选取了其中299只股票2021年的数据进行简单的实现。 数据准备 123456789import pandas as pdimport jsonimport osimport zipfileimport numpy as npfrom tqdm import tqdmfrom mytools import backtestimport warningswarnings.filterwarnings("ignore") 12with open("../data/stock_pool.json", 'r') as f: stock_pool = json.load(f) 1234567891011 ...
【量化金融】三因子模型策略实现
引用站外地址 Trifactor-model 6YoungHome 策略简介 利用Fama三因子模型构建的A股周度百股策略。 环境与数据准备 123456789import numpy as npfrom tqdm import tqdmimport pandas as pdimport osimport gcimport warningswarnings.filterwarnings('ignore')from quantools import backtest 1234567891011stk_data = pd.read_csv("../data/stk_data.csv")stk_data['close_date'] = pd.to_datetime(stk_data['close_date'])stk_data['open_da ...
【量化金融】股票市场基础技术指标RSI
什么是RSI 相对强弱指数(Relative Strength Index, RSI)股票市场是技术分析中常使用的动量指标。它能够衡量股票近期价格变化的速度和幅度,从而评估该股票价格是否被高估或低估。 RSI不仅可以发现超买和超卖的股票,还可以发现准备进行价格趋势逆转或纠正回调的股票;当然它也可以提示投资者在何时买入和卖出。一般来说,RSI读数达到70或以上表示超买情况,而读数达到30或以下表示超卖状态。 RSI比较了股票在价格上涨的日子和价格下跌的日子的强度。将这种比较的结果与价格走势相关联可以让交易者了解一种股票可能的表现。RSI与其他技术指标一起使用,可以帮助交易者做出更明智的交易决策。 RSI的计算方法 RS=ts_mean(gain,14)ts_mean(loss,14)RSI=100−1001+RSRS = \frac{ts\_mean(gain,14)}{ts\_mean(loss,14)} \\ RSI = 100-\frac{100}{1+RS} RS=ts_mean(loss,14)ts_mean(gain,14)RSI=100−1+RS100 Python计算 ...
【量化金融】股票市场基础技术指标MACD
简介与计算方式 移动平均收敛/发散线(Moving Average Convergence/Divergence,MACD)是一种趋势跟踪的动量指标,它通过股票价格的两个指数移动平均线计算得出,一般来说,MACD线是通过股票收盘价12日移动平均值减去26日移动平均值。 此外,通过计算MACD的9日移动平均值,将之定义为“信号线”。将MACD线与信号线绘制于同一张图重,可以发现有效的买入、卖出信号:**当MACD线穿过信号线上方时买入;当MACD线穿过信号线下方时卖出。**该指标可以用多种方式解释,最常见的方法是研究MACD指标的交叉、背离以及快速上升和下降。 MACD=SMA(close,12)−SMA(close,26)Signal=SMA(MACD,9)MACD = SMA(close, 12) - SMA(close, 26) \\ Signal = SMA(MACD, 9) MACD=SMA(close,12)−SMA(close,26)Signal=SMA(MACD,9) 使用注意 用MACD指标分析市场时,有几个关键要点一定要注意: MACD指标的计算方式:一般来说,MA ...
【量化金融】量化多因子策略基础介绍
因子分类 第一类叫做量价因子,第二类叫做基本面因子,第三类叫另类因子。而里面量价因子大概是占60%的左右,20%是基本面因子,剩下20%是另类因子 量价因子主要是有哪些数据去产生的呢?一般是来源成交量的数据,包括每分每秒的这个这个股票的价格、资金流、以及各类K线等技术指标,包括动量指标、周期指标、成交量指标、价格指标等。 基本面因子则是大家说的财务报表、营收、券商报告、分析师预期等,一般都是来源于这个包括万得、朝阳永续的数据库。而这种数据,它的一个时间更新频率一般比较长,一般是以这个月频或者季度的数据进行更新,不像价格每分每秒都在发生改变。 还有就是另类因子,包括社交舆情,电商数据,门店数据这样的一些因子 基本面因子 基本情况 比如:盈利能力因子:资本收益率(ROE),资产回报率(ROA),主营业务毛利率,主营业务利润率,净利率。像成长,盈利,估值这些都可以划到基本面因子里面去。 基本面因子的解释的参考资料https://www.bilibili.com/video/BV1TE41117pJ?from=search&seid=13977766754480 ...
【机器学习】用PyTorch搭建一个多层感知机进行图像分类
下载数据集 下载“fashion_mnist”数据集,进行分类 123456789101112131415161718192021import torchvisionfrom torch.utils import datafrom torchvision import transformsdef load_data_fashion_mnist(batch_size, resize=None): """下载Fashion-MNIST数据集,然后将其加载到内存中""" trans = [transforms.ToTensor()] if resize: trans.insert(0, transforms.Resize(resize)) trans = transforms.Compose(trans) mnist_train = torchvision.datasets.FashionMNIST( root="./data", train=True, ...
【机器学习】用PyTorch搭建一个线性神经网络
模拟数据集 模拟一个y=w1x1+w2x2+b+ϵy = w_1x_1 + w_2x_2 + b + \epsilony=w1x1+w2x2+b+ϵ的数据集 1234567891011121314151617181920from torch.utils import dataimport torchdef init_linear_data(w, b, nums_example): """模拟一个有噪声的多元线性回归数据""" X = torch.normal(0, 1, (nums_example, len(w))) y = torch.matmul(X, w) + b y = y + torch.normal(0, 0.01, (nums_example, len(w))) return X, torch.reshape(y, (-1, 1))def load_array(data_arrays, batch_size, is_train=True): #@save " ...
【机器学习】如何用PyTorch搭建你的神经网络模型?
基础操作 自动求梯度 1234567x = torch.arange(4.0) # 生成一个张量tensor([0., 1., 2., 3.])x.requires_grad_(True) # 前两行等价于x=torch.arange(4.0,requires_grad=True)print(x.grad) # 默认梯度为是Noney = 2 * torch.dot(x, x) # 把x计算一下,给y求梯度。y.backward()print(x.grad) # tensor([ 0., 4., 8., 12.]) 注意 : 12345678910# 在默认情况下,PyTorch会累积梯度,我们需要清除之前的值# 不清除时:y = x.sum() y.backward()print(x.grad) # tensor([ 1., 5., 9., 13.])# 清除时:x.grad.zero_() # 清楚x的梯度y = x.sum()y.backward()print(x.grad) # tensor([1., 1., 1., 1.]) 分离计算 有时,我们希望将某些计算移动到记 ...
【量化金融】利用HIST模型挖掘股票概念进行预测
引用站外地址 HIST: A Graph-based Framework for Stock Trend Forecasting via Mining Concept-Oriented Shared Information arXiv 引用站外地址 The source code and data of the paper github 基本介绍 我们都知道,在股票市场中,“板块联动”效应十分的强,也就是说同一类型的股票常常同涨同跌。因此,为股票们预定义一些概念,比如他们参与哪些业务,是否属于某一行业,是否存在上下游供应链关系等等。但是这些预定义的概念不可能完全的描述股票的属性,不属于某一概念的股票也会受到其他概念热点新闻的间接影响。而且每只股票也一定会有自己独特的信息性 ...
【数理知识】矩阵函数的导数问题——多维函数的梯度
矩阵函数如何求导? 我们可以连结一个多元函数对其所有变量的偏导数,以得到该函数的梯度(gradient)向量。 具体而言,设函数f:Rn→Rf:\R^n\rightarrow\Rf:Rn→R的输入是一个nnn维向量x=[x1,x2,...,xn]T\textbf{x}=[x_1,x_2,...,x_n]^Tx=[x1,x2,...,xn]T,并且输出是一个标量。 函数f(x)f(\textbf{x})f(x)相对于x\textbf{x}x的梯度是一个包含nnn个偏导数的向量: ∇xf(x)=[∂f(x)∂x1,∂f(x)∂x2,...,∂f(x)∂xn]T\nabla_xf(x)=[\frac{\partial f(x)}{\partial x_1},\frac{\partial f(x)}{\partial x_2},...,\frac{\partial f(x)}{\partial x_n}]^T ∇xf(x)=[∂x1∂f(x),∂x2∂f(x),...,∂xn∂f(x)]T 假设x\textbf{x}x为nnn维向量,在微分多元函数时经常使用以下规则: 对 ...
【编程学习】C++中类的定义与使用
类 直接上代码,构建一个狗狗类: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <iostream>using namespace std;class Dog { public: double dog_weight; int dog_age; string dog_name; Dog(string name); void run(void); void set(double weight, int age); private: double something;};//类的构造函数Dog::Dog(string name){ cout << "Dog is being created" << ...
【编程学习】C++中的关键字含义
数据类型关键字 关键字 含义 char 声明字符型变量或函数 wchar_t 声明宽字符类型,每个 wchar_t 类型占 2 个字节,16 位宽(汉字的表示) int 声明整型变量或函数 float 声明浮点型变量或函数 bool 声明布尔类型变量或函数 double 声明双精度变量或函数 long 声明长整型变量或函数 short 声明短整型变量或函数 struct 声明结构体变量或函数 enum 声明枚举类型 signed 声明有符号类型变量或函数 union 声明共用体(联合)数据类型 unsigned 声明无符号类型变量或函数 void 声明函数无返回值或无参数;声明无类型指针 class 声明一个类,面向对象设计的基础 signed 声明有符号数(默认就是 signed,一般不会显式使用) unsigned 声明无符号数,与signed相反。 private 被标明为 private 的字段只能在本类以及友元中访问。 public 被标明为 public 的字段可以在任何类中访问 ...
【编程学习】C++中枚举类型enum
枚举类型 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。 如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。 创建枚举,需要使用关键字 enum。枚举类型的一般形式为: 1234567enum 枚举名{ 标识符[=整型常数], 标识符[=整型常数], ... 标识符[=整型常数]} 枚举变量; 如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始。 例如,下面的代码定义了一个颜色枚举,变量 c 的类型为 color。最后,c 被赋值为 “blue”。 12enum color { red, green, blue } c;c = blue; 默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面 ...