1. neutralize:

position based 的alpha

int neutralize(int di, int ti) {
double sum = ;
double abssum = ;
int count = ;
for (int ii = ; ii < nsyms; ++ii) {
if (std::isfinite(pos(di, ii))) {
sum += pos(di, ii);
count++;
} else if (std::isinf(pos(di, ii))) {
pos(di, ii) = NaN;
}
} if (count != ) {
double mean = sum / count;
for (int ii = ; ii < nsyms; ++ii) {
if (std::isfinite(pos(di, ii))) {
abssum += fabs(pos(di, ii) - mean);
pos(di, ii) = pos(di, ii) - mean;
}
}
} if (abssum != ) {
for (int ii = ; ii < nsyms; ++ii) {
if (std::isfinite(pos(di, ii))) {
pos(di, ii) *= 1.0 / abssum;
}
}
}
return ;
}

2. operators definition(二维矩阵,行为日期,列为股票):

// 对当前股票t天值的操作

ts_sum(ts_matrix x, int t)  从当前天往前t天的值之和

ts_max(ts_matrix x, int t)  从当前天往前t天的值中的最大值

ts_min(ts_matrix x, int t) 从当前天往前t天的值中的最小值

ts_argmax(ts_matrix x, int) 从当前天往前t天的值中的最大值的索引

ts_argmin(ts_matrix x, int t) 从当前天往前t天的值中的最小值的索引

ts_count(ts_matrix x, int t) 从当前天往前t天中有效值的个数(除去nan和inf值)

ts_mean(ts_matrix x, int t) 从当前天往前t天所有值的平均值(如果输入的位置上是nan,则输出不一定为nan)

ts_norm(ts_matrix x, int t) 当前值除以前t天的平均值

ts_std_norm(ts_matrix x, int t) 当前值除以前t天的方差

ts_mean_linear(ts_matrix x, int t) 从当前天往前t天所有值的平均值,但权重依次递减(t, t-1, t-2, ...,1)。(输入位置上为nan,输出不一定)

ts_mean_exp(ts_matrix x, int t, double e) 从当前天往前t天所有值的平均值,权重为指数递减(pow(1-e, 0), pow(1-e, 1), ..., pow(1-e, t-1))。(输入位置上为nan,输出不一定)

ts_mean_halflife(ts_matrix x, int t, int halflife) 从当前天往前t天所有值的平均值,权重为指数递减(pow(1-e, 0), pow(1-e, 1), ..., pow(1-e, t-1),其中e=1-pow(0.5, 1/halflife))。(输入位置上为nan,输出不一定)

ts_delay(ts_matrix x, int t) 当前天的值为t天前的值

ts_delta(ts_matrix x, int t) 当前天的值与t天前的值之差

ts_rank(ts_matrix x, int t) 把包含当前天在内的t天内的值归于0-1之间,值越大,rank之后的值越大。比如(1,3,4,2,5)rank之后为(0,0.5, 0.75,0.25,1)

ts_quantile(ts_matrix x, int t) 返回包含当前天在内的t天的百分之t的值

ts_std(ts_matrix x, int t) 包含当前天在内的t天的标准差

ts_zscore(ts_matrix x, int t) 当前天的值减去前t天的均值再除以前t天的标准差

ts_fill(ts_matrix x, int t) 用前一天的值填充当前天的值

ts_corr(ts_matrix x, ts_matrix y, int t) x和y之间前t天的相关关系

ts_cov(ts_matrix x, ts_matrix y, int t) x和y之间前t天的协方差

ts_prod(ts_matrix x, int t) 包含当前天在内的前t天的值相乘

ts_moment(ts_matrix x, int k, int t) 包含当前天在内的前t天的k阶矩

ts_skew(ts_matrix x, int t) 包含当前天在内的前t天的3阶矩除以标准差的三次方(倾斜度)

ts_kurt(ts_matrix x, int t) 包含当前天在内的前t天的四阶矩除以标准差的四次方(峰度)

ts_regression(ts_matrix x, ts_matrix y, int t) x和y的前t天的线性回归

ts_KthValidValue(ts_matrix x, int k, int t) 从当前天往前数t天,返回其中第个有效的值,若没有,则返回nan

// 对所有股票所有天的值操作

at_isnan(ts_matrix x) 值为nan返回1,否则返回0

at_isinf(ts_matrix x) 值为inf返回1,否则返回0

at_nan2zero(ts_matrix x) 将x中所有为nan的值转为0

at_zero2nan(ts_matrix x) 将x中为0的值转为nan

at_inf2nan(ts_matrix x) 将x中为inf的值转为nan

at_sign(ts_matrix x) 将x进行符号变换,即大于0的值为1,小于0的值为-1

at_signlog(ts_matrix x) 对x进行符号变换和log函数,然后将两者相乘

at_sqrt(ts_matrix x) 对x进行开方处理

at_signsqrt(ts_matrix x) 对x进行符号变换和开方处理,然后将两者相乘

at_signpower(ts_matrix x, double e) / at_signpower(ts_matrix x, ts_matrix y) 对x进行符号变化和e次方,然后将两者相乘 / 对x进行符号变换和对应位置的y次方,然后将两者相乘

at_power(ts_matrix x, double e) / at_power(ts_matrix x, ts_matrix y) x的e次方 / 对应位置x的y次方

at_abs(ts_matrix x) 对x取绝对值

at_round(ts_matrix x) 对x四舍六入五凑偶取整

at_floor(ts_matrix x) 小于等于x的最大整数

at_ceil(ts_matrix x) 大于x的最小整数

at_cond(ts_matrix c, ts_matrix x, ts_matrix y) 若c大于0,取x的值,否则取y的值

at_max(ts_matrix x, ts_matrix y) 取x,y中的最大值

at_min(ts_matrix x, ts_matrix y) 取x,y中的最小值

at_humdecay(ts_matrix x, double hump) 从昨天到今天的变化大于hump,取今天的值,否则取昨天的值(fabs(x_today - x_yest) / x_yest >= hump ? x_today, x_yest)

at_lastdiffvalue(ts_matrix x) 返回历史中最近的一个不同的值,只要用于fundamental的数据,值不经常变化

at_tail(ts_matrix x, double lower, double upper, double newval) 如果x的值在lower和upper之间,则使用newval,否则保持不变

at_middle(ts_matrix x, double lower, double upper, double newval) 如果x的值小于lower或者大于upper,则使用newval,否则保持不变

at_days_from_last_change(ts_matrix x) 如果今天的值与昨天的值不一样,则返回0,如果一样,则返回前面同样值的个数

at_days_from_last_appear(ts_matrix x, double value)  如果今天的值与value一样,则返回0,如果不一样,在返回前面不同值的个数

at_tradewhen(ts_matrix trigger, ts_matrix x, ts_matrix exit) 如果exit大于0,则返回nan,如果trigger大于0返回当前值,其他返回上一天的值

// 对当天的所有股票值的操作

cs_mean(ts_matrix x) 每天所有股票的均值

cs_neut(ts_matrix x) 每天所有股票的值减去相对应的均值

cs_rank(ts_matrix x) 把每天所有股票的值归于0-1之间,股票值越大,rank后值越大

cs_remove_middle(ts_matrix x, double pct) 移除每天值在中间的股票,pct表示保留多少尾部。pct=0.8表示移除中间数据的80%,保留开始和结束的10%。需要先做rank处理,再判断(只在尾部上的值进行交易,可以获得更高的收益,但会导致更高的turnover)

cs_remove_outlier(ts_matrix x, double pct) 移除每天值在尾部的股票,pct表示保留中间多少。pct=0.4表示移除头部20%,尾部20%,保留中间60%

cs_scale(ts_matrix x) 每天所有股票当前值除以该天所有股票绝对值的和

cs_zscore(ts_matrix x) 每天所有股票当前值减去对应的平均值在除以方差

cs_groupcount(ts_matrix x, ts_matrix group) 每天属于某个组的股票的个数

cs_groupmax(ts_matrix x, ts_matrix group) 每天属于某个组的股票的最大值

cs_groupmin(ts_matrix x, ts_matrix group) 每天属于某个组的股票的最小值

cs_groupstd(ts_matrix x, ts_matrix group) 每天属于某个组的股票的标准差

cs_groupsum(ts_matrix x, ts_matrix group) 每天属于某个组的股票值的和

cs_groupzscore(ts_matrix x, ts_matrix group) 每天属于某个组的股票当前值减去对应的平均值再除以标准差

cs_groupscale(ts_matrix x, ts_matrix group) 每天属于某个组的股票当前值处于该组所有股票绝对值之和

cs_groupindex(ts_matrix x, int ngroups) 创建一个组,根据输入的rank,即rank(x),把输入的股票平均分为n个组。

cs_grouprank(ts_matrix x, ts_matrix group) 每天属于某个组的所有股票进行rank,即归于0-1之间

cs_groupquantile(ts_matrix x, ts_matrix group, double quantile) 每天属于某个组的分位数quantile的值

cs_groupmean(ts_matrix x, ts_matrix group) 每天属于某个组的所有股票值的平均

cs_groupneut(ts_matrix x, ts_matrix group) 每天属于某个组的值减去对应组的平均值

cs_regression(ts_matrix y, ts_matrix x) y与x作线性回归

3. operators definition(一维数组:某一天的所有股票)

sv_norm(sv_array x) 当前值除以该组的均值

sv_std(sv_array x) 该组的标准差

sv_std_norm(sv_array x) 当前值除以该组的标准差

sv_corr(sv_array x, sv_array y) x和y的相关系数

sv_cov(sv_array x, sv_array y) x和y的协方差

sv_remove_middle(sv_array x, double pct) 移除该组中每天值在中间的股票

sv_remove_outlier(sv_array x, double pct) 移除该组中每天值在头部尾部的股票

sv_groupneut(sv_array x, sv_array group) 每天属于某个组的当前值减去对应组的平均值

at_isnan(sv_array x) 该组中为nan的值转化为1,其他的为0

at_isinf(sv_array x) 该组中为inf的值转化为1,其他的为0

at_nan2zero(sv_array x) 该组中nan的值转化为0

at_zero2nan(sv_array x) 该组中0转化为nan

at_inf2nan(sv_array x) 该组中inf值转化为nan

at_sign(sv_array x) 对该组进行符号操作,大于0为1,小于0为-1

at_signlog(sv_array x) 对该组进行符号操作和log操作,然后将两者相乘

at_sqrt(sv_array x) 对该组进行开方操作

at_signsqrt(sv_array x) 对该组进行符号操作和开方操作,然后将两者相乘

at_power(sv_array x, double e) / at_power(sv_array x, sv_array y) 对该组进行e次方 / y次方

at_signpower(sv_array x, double e) / at_power(sv_array x, sv_array y) 对该组进行符号操作和e次方 / y次方,然后将两者相乘

at_abs(sv_array x) 取绝对值

at_round(sv_array x) 进行四舍六入五凑偶

at_floor(sv_array x) 该组小于等于x的最大整数

at_ceil(sv_array x) 大于x的最小整数

at_max(sv_array x, sv_array y) x和y之间的最大值

at_min(sv_array x, sv_array y) x和y之间的最小值

at_tail(sv_array x, double lower, double upper, double newval) 该组中在lower和upper之间的值设为newval(即保留两端的值)

at_middle(sv_array x, double lower, double upper, double newval) 该组中大于upper或者小于lower的值设为newal(即保留中间值)

sv_mean(sv_array x) 该组的平均值

sv_rank(sv_array x) 将该组的值归于0-1

sv_scale(sv_array x) 该组当前值除以该组所有值绝对值之和

sv_neut(sv_array x) 该组当前值减去该组的平均值

sv_quantile(sv_array x, double quantile) 该组的分位数的值(返回值是同一个值,nan另外)

sv_zscore(sv_array x) 该组的当前值减去平均值除以该组的标准差

sv_groupcount(sv_array x, sv_array group) 属于某个组的股票的个数

sv_groupmax(sv_array x, sv_array group) 属于某个组的股票值的最大值

sv_groupmin(sv_array x, sv_array group) 属于某个组的股票的最小值

sv_groupstd(sv_array x, sv_array group) 属于某个组的股票的标准差

sv_groupsum(sv_array x, sv_array group) 属于某个组的股票值之和

sv_groupzscore(sv_array x, sv_array group) 属于某个组的股票当前值减去该组的平均值再除以该组的标准差

sv_groupscale(sv_array x, sv_array group) 属于某个组的股票当前值除以该组的所有值绝对值之和

sv_groupindex(sv_array x, int ngroups) 返回一个组:将输入x平均的分配到n个组中(使用sv_rank进行处理)

sv_grouprank(sv_array x, sv_array group) 属于某个组的所有股票进行rank,归于0-1之间

sv_groupquantile(sv_array x, sv_array group, double quantile) 属于某个组股票的分位值

sv_groupmean(sv_array x, sv_array group) 属于某个组的股票的平均值

at_cond(sv_array c, sv_array x, sv_array y) c大于0为x,其他为y

sv_regression(sv_array y, sv_array x) y和x线性回归

simulate 中的一些操作的更多相关文章

  1. 关于JavaScript中的delete操作

    关于JavaScript中的delete操作 看到一道题,是这样的: (function(x){ delete x; return x; })(1); 1 null undefined Error 我 ...

  2. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  3. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

  4. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  5. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...

  6. git工作中的常用操作

    上班开始,打开电脑,git pull:拉取git上最新的代码: 编辑代码,准备提交时,git stash:将自己编辑的代码暂存起来,防止git pull时与库中的代码起冲突,否则自己的代码就白敲了: ...

  7. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  8. 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

  9. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

随机推荐

  1. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_13_静态static关键字修饰成员方法

    static关键字 用来修饰方法的情况 任何使用这个静态方法呢? 可以直接通过对象名称的方式进行调用. 更好的写法是通过类名称进行调用. 分别定义成员变量和静态变量 静态方法里面不能用this

  2. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_1_数据结构_栈

    2.1 数据结构有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类 的.好用吗?好用,这就是数据结构的用处,只不过你在不知不 ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_4_Vector集合

    是jdk1.0开始的一个集合,了解一下就可以了. 同步的意味着单线程.同步意味着慢 遍历在jdk1.0还没有Interator遍历器..它是通过elements Enumeration向量枚举.类似于 ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_3_HashSet集合存储数据的结构

    特点就是查询速度快 jdk1.8以后,如果链表的长度超过了8位.就会把转成红黑树,也是为了提高查询的效率

  5. 浅谈矩阵加速——以时间复杂度为O(log n)的算法实现裴波那契数列第n项及前n之和使用矩阵加速法的优化求法

    首先请连矩阵乘法乘法都还没有了解的同学简单看一下这篇博客: https://blog.csdn.net/weixin_44049566/article/details/88945949 首先直接暴力求 ...

  6. mooc-IDEA 列操作--005

    十一.IntelliJ IDEA -列操作 实例:根据HTTP请求JSON文件,生成一个枚举类 Step1:创建一个枚举类,把要转换的JSON串粘贴进来. 最终要实现效果 Step2:选中第一个100 ...

  7. Spring MVC配置文件

    都说开发Spring Web程序的配置文件很繁琐,所以就写了一篇配置博客, 首先是pom.xml文件 <project xmlns="http://maven.apache.org/P ...

  8. node.js多版本管理 nvm

    安装nvm 1.nvm压缩包下载地址 https://github.com/coreybutler/nvm-windows/releases 注意:Windows用户下载nvm-setup.zip 2 ...

  9. SpringBoot使用RestTemplate基础认证

    SpringBoot使用RestTempate SpringBoot使用RestTemplate摘要认证 SpringBoot使用RestTemplate基础认证 SpringBoot使用RestTe ...

  10. mysql-schema-sync同步两个实例

    参考:https://github.com/hidu/mysql-schema-sync 需求:测试环境表结构变动同步到开发环境,两个实例各有数百个库,不适合每个库写一个配置文件 环境:操作系统ubu ...