123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- /* 公用校验 计算指标 */
- export const formRules= {
- targetName: [
- { required: true, message: '指标名称不能为空', trigger: 'blur' },
- ],
- unit: [
- { required: true, message: '单位不能为空', trigger: ['blur','change'] },
- ],
- menu: [
- { required: true, message: '指标目录不能为空', trigger: 'blur' },
- ],
- frequency: [
- { required: true, message: '频度不能为空', trigger: 'blur' },
- ],
- n_num: [
- { required: true, message: 'N不能为空', trigger: 'blur' },
- ],
- moveVal: [
- { required: true, message: '移动方式参数不能为空',trigger: 'blur' }
- ],
- calendar_type: [
- { required: true, message: '日历不能为空',trigger: 'blur' }
- ],
- alphaValue:[
- { validator:(rule,value,callback)=>{
- if(Number(value)<=0||Number(value)>=1){
- callback(new Error("请输入>0,<1的数值"))
- }else{
- callback()
- }
- },trigger:['change','blur']},
- { required:true,message:'alpha值不能为空',trigger:'blur'},
- ]
- }
- //计算指标弹窗类型
- export const computedTypes = [
- {
- name:'指标运算',
- type:4
- },
- {
- name:'累计值转月/季值',
- type:'toMonthSeason'
- },
- {
- name:'同比值',
- type:6
- },
- {
- name:'同差值',
- type:7
- },
- {
- name:'N期移动均值',
- type:8
- },
- {
- name:'N期环比值',
- type:12
- },
- {
- name:'N期环差值',
- type:13
- },
- {
- name:'升频',
- type:14
- },
- {
- name:'指标拼接',
- type: 'joint'
- },
- {
- name: '时间移位',
- type: 22
- },
- {
- name: '超季节性',
- type: 35
- },
- {
- name: '拟合残差',
- type: 37
- },
- {
- name: '年化值',
- type: 52
- },
- {
- name: '降频',
- type: 51
- },
- {
- name: '扩散指数',
- type: 53
- },
- {
- name: '累计值',
- type: 'accumulate'
- },
- {
- name:'指数修匀',
- type:'alpha'
- },
- {
- name:'日均值',
- type: 75
- }
- ]
- //批量指标类型
- export const computedBatchTypes = [
- {
- name:'同比值',
- type:6
- },
- {
- name:'同差值',
- type:7
- },
- {
- name:'N数值移动平均计算',
- type:8
- },
- {
- name:'N数值环比值',
- type:12
- },
- {
- name:'N数值环差值',
- type:13
- },
- {
- name:'升频',
- type:14
- },
- {
- name:'累计值转月/季值',
- type:'toMonthSeason'
- },
- {
- name: '累计值',
- type: 'accumulate'
- },
- {
- name:'指数修匀',
- type:'alpha'
- },
- {
- name:'日均值',
- type: 75
- }
- ]
- //频度
- export const frequencyArr = ['日度','周度','旬度','月度','季度','年度']
- //添加基础指标来源 已改为从接口获取 datamanage/edb_source/list
- export const fromArr = ['wind','同花顺','彭博','彭博财务','路透','手工指标','隆众指标','SMM','Mysteel','郑商所',
- '大商所','上期所','中金所','上期能源','欧洲天然气','中国煤炭市场网','谷歌出行指数','EIA STEO报告','UN','卓创数据(红桃3)',
- '百川盈孚','国家统计局','富宝数据'];
- // 已改为从接口获取 datamanage/edb_source/list
- export const fromCode = new Map([
- ['同花顺','1'],
- ['wind','2'],
- ['SMM','11'],
- ['彭博','3'],
- ['彭博财务','28'],
- ['路透','25'],
- ['手工指标','9'],
- ['隆众指标','10'],
- ['Mysteel','15'],
- ['郑商所','16'],
- ['大商所','17'],
- ['上期所','18'],
- ['中金所','19'],
- ['上期能源','20'],
- ['欧洲天然气','21'],
- ['中国煤炭市场网','26'],
- ['谷歌出行指数','29'],
- ['EIA STEO报告','36'],
- ['UN','38'],
- ['卓创数据(红桃3)','41'],
- ['百川盈孚','57'],
- ['国家统计局','60'],
- ['富宝数据','71']
- ]);
- //所有来源 只用于pycode代码运算 别问我我也不知道为什么每个地方要用不一样的来源
- export const allFromArr = [
- { name: 'wind',key: 2 },
- { name: '同花顺',key: 1 },
- { name: '彭博',key: 3 },
- { name:'彭博财务',key:28},
- { name: '路透', key: 25 },
- { name: '手工指标', key: 9 },
- { name: '隆众指标', key: 10 },
- { name: 'SMM', key: 11 },
- { name: 'Mysteel', key: 15 },
- { name: '郑商所', key: 16 },
- { name: '大商所', key: 17 },
- { name: '上期所', key: 18 },
- { name: '中金所', key: 19 },
- { name: '上期能源', key: 20 },
- { name: '欧洲天然气', key: 21 },
- { name: '中国煤炭网', key: 26 },
- { name: '指标运算',key: 4 },
- { name: '累计值转月',key: 5 },
- { name: '同比值', key: 6 },
- { name: '同差值', key: 7 },
- { name: 'N数值移动平均计算', key: 8 },
- { name: '环比值', key: 12 },
- { name: '环差值', key: 13 },
- { name: '变频',key: 14 },
- { name: '时间移位', key: 22 },
- { name: '直接拼接', key: 23 },
- { name: '累计值同比拼接', key: 24 },
- { name: 'python代码', key: 27 },
- { name: '谷歌出行指数' ,key:29},
- { name: '钢联化工' ,key:34},
- { name: 'EIA STEO报告' ,key:36},
- { name: 'UN' ,key:38},
- { name: '卓创数据(红桃3)' ,key:41},
- { name:'百川盈孚',key:57},
- { name: '存量装置',key:58 },
- { name:'国家统计局',key:60}
- ]
- //公式说明 eta指标库
- export const formulaTip = new Map([
- [4,`指标运算:<br>
- 1、选择指标参数<br>
- 2、生成指标的时间序列:以第一个指标为准,其他指标去匹配第一个指标的日期序列,没有值的,按照所选空值处理方式处理<br>
- 3、按照输入的计算公式进行计算`],
- [5,`累计值转月值计算方法:<br>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:45%">1月无值:1月=2月/2</span>
- <span style="width:40%">1月有值:1月=1月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">2月=2月/2</span>
- <span style="width:40%">2月=2月-1月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">3月=3月-2月</span>
- <span style="width:40%">3月=3月-2月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">4月=4月-3月</span>
- <span style="width:40%">4月=4月-3月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">以此类推</span>
- <span style="width:40%">以此类推</span>
- </p>
- <p>特别说明:若1月和2月均无值,则该年不做计算</p>`],
- ['toMonthSeason',`1、累计值转月值计算方法:<br>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:45%">1月无值:1月=2月/2</span>
- <span style="width:40%">1月有值:1月=1月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">2月=2月/2</span>
- <span style="width:40%">2月=2月-1月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">3月=3月-2月</span>
- <span style="width:40%">3月=3月-2月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">4月=4月-3月</span>
- <span style="width:40%">4月=4月-3月</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">以此类推</span>
- <span style="width:40%">以此类推</span>
- </p>
- <p>特别说明:若1月和2月均无值,则该年不做计算</p>
- 2、累计值转季值计算方法:<br>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:45%">1季度无值:1季度=2季度/2 </span>
- <span style="width:40%">1季度有值:1季度=1季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">2季度=2季度/2</span>
- <span style="width:40%">2季度=2季度-1季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">3季度=3季度-2季度</span>
- <span style="width:40%">3季度=3季度-2季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">4季度=4季度-3季度</span>
- <span style="width:40%">4季度=4季度-3季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">以此类推</span>
- <span style="width:40%">以此类推</span>
- </p>
- <p>特别说明:若1季度和2季度均无值,则该年不做计算</p>`],
- [6,`同比公式:今年同期/去年同期-1<br>
- 1、锁定当前数值对应的日期<br>
- 2、匹配上一年同期:寻找过去一年有数值的对应日期中,
- 与当前数值对应日期相等或者最为接近的那一天,如果有
- 两个日期与当前数值对应日期的距离相等,则取降序日期
- 排列下的第一个日期。<br>
- 3、取到匹配的上一年同期对应的数值<br>
- 4、将当期的数值与上一年匹配的同期的值计算比例<br>
- 5、将计算得到的比例填充至当前数值对应的日期,生成
- 新的数据序列<br>
- 6、遍历允许跨年,对于日度/周度/季度数据,遍历往前
- 最多35天,往后最多35天`],
- [7,`同差公式:今年同期-去年同期<br>
- 1、锁定当前数值对应的日期<br>
- 2、匹配上一年同期:寻找过去一年有数值的对应日期中,
- 与当前数值对应日期相等或者最为接近的那一天,如果有
- 两个日期与当前数值对应日期的距离相等,则取降序日期
- 排列下的第一个日期。<br>
- 3、取到匹配的上一年同期对应的数值<br>
- 4、将当期的数值与上一年匹配的同期的值计算差值<br>
- 5、将计算得到的差值填充至当前数值对应的日期,生成
- 新的数据序列<br>
- 6、遍历允许跨年,对于日度/周度/季度数据,遍历往前
- 最多35天,往后最多35天`],
- [8,`计算公式:=AVERAGE(N个数值的和),N为取数个数<br>
- 1、计算当前的数值的N值移动平均,则时间向前追溯
- N个值(包括当前值),如果遇到空格值的日期,则自
- 动跳过空格数值,继续往前追溯<br>
- 2、如果当前日期对应的原始数据为空值,则N值移动
- 平均也为空值`],
- [12,`环比公式:(当期-上期)/上期<br>
- 1、选择当期对应值,若是当期值为空,则环比值为空;若当期有值,上期值往 前遍历查询,默认N等于1,找最近的一个上期值;可根据设置的N值选择最 近的第N个上期值 <br>
- 2、将当期的数值与匹配到的上期值按照公式进行计算 <br>
- 3、将计算得到值填充至当期数值对应的日期,生成新的 数据序列<br>
- 4、原始数据中出现0和负值时,提示该指标不能进行环比运算`],
- [13,`环差公式:当期-上期<br>
- 1、选择当期对应值,若是当期值为空,则环差值为空;若当期有值,上期值往 前遍历查询,默认N等于1,找最近的一个上期值;可根据设置的N值选择最 近的第N个上期值找到最近的一个上期值即可<br>
- 2、将当期的数值与匹配到的上期值按照公式进行计算<br>
- 3、将计算得到值填充至当期数值对应的日期,生成新的数据序列`],
- [14,`升频:支持转换所有频度指标为日度指标<br>
- 1、规则:若将月度指标转换为日度指标,如当前月为9月,但9月数据还未更新,假设9月数据是9.30更新,则9.1~9.29的数据等于8.31的数据<br>
- 2、其他频度规则相同
- `],
- ['joint',`1、直接拼接说明:将指标A和指标B按照选取的拼接日期进行拼接;<br>
- 2、累计值同比拼接说明:指标A最后一个12月31日有值的年份数据乘以指标B的同比增长率得到指标A下一年的数据,从指标A最后一个12月31日有值的日期开始拼接计算得到指标A下一年的数据;`],
- [22,`时间移位:把数据的时间序列加(领先)减(滞后)相应的时间,形成新的数据系列。<br>例:<br>
- <p>
- 领先10天,即将指标每个数据点的日期加10天。原始数据点(2022-1-1,100)将转化成(2022-1-11,100)
- </p>
- <p>
- 滞后1月,即将日期减30天,原始数据点(2022-1-1,100)将转化成(2021-12-2,100)
- </p>`],
- [35,`计算公式:现值 - AVERAGE(过去N年同期数值和),N为取数个数<br>
- 1、计算过去N年同期数值和,则时间向前追溯 N年(包括最新一年)<br>
- 2、参与计算的指标数据通过线性方程补全为日度的数据(包括周末)<br>
- 3、遇到闰二月,如2.29,去掉该天数据<br>
- 4、进行农历计算时,只计算11月--次年5月,如果当前月为12月,则取第二年的春节为时间位移标准点<br>
- 5、计算生成的结果的数据频度与原始指标频度保持一致
- `],
- [37,`拟合残差:计算一个指标(B)的实际值和拟合值(B’)的差值。拟合值B’由指标A(自变量)和指标B(因变量)通过线性回归拟合得到,具体算法如下:<br>
- 根据指标A(自变量)和指标B(因变量)过去一个时间段内(这个N期可以是从最新值往前倒退N期,包含最新,也可以是选取历史数据的一个时间段内的数据),生成线性回归方程 Y=aX+b<br>
- 由指标A(自变量)和拟合方程的系数a,b,计算得到拟合出来的系列B’=aA b 再计算拟合系列B’和原始系列B的差值得到新的数据系列Delta,Delta=B-B'
- `],
- [40,`数据调整:将所选指标的历史数据经过调整后保存,该指标更新时将在调整数据的基础上更新最新数据。<br>
- 注:系统只取A、B列数据,且调整数据的日期不得晚于指标的实际最新日期
- `],
- [52,`年化值=S / a (S表示指标数值,a表示年化平均占比)<br>
- 1、读取指标最新值对应的日期T和指标数值S<br>
- 2、计算该指标在过去三年日期T对应的值与当年最后一个日期对应的值的比值,即截止到日期T的累计值占全年值的比重<br>
- 3、计算三年的占比平均值,即过去三年平均占比a<br>
- 4、若历史数据不足三年,则至少按两年计算,少于两年不生成年化值<br>
- 5、如果某一年日期T没有值,则通过日期T前后的两个值,用线性插值法【(Y-Y1)/(X-X1)=(Y2-Y1)/(X2-X1)】计算得到日期T的值
- `],
- [51,`降频:将高频指标转换为低频指标,需选择转换的频度<br>
- 1、选择转换的频度,日度可以选择降频成周度、旬度、月度、季度、年度;周度可以选择降频成旬度、月度、季度、年度;旬度可以选择降频成月度、季度、年度;月度可降成季度、年度,季度可降成年度<br>
- 2、降频后数据日期,周度的降频数据系列日期取每周五;旬度取每月10日、20日、最后一日;月度取每月最后一天,季度取季度最后一天,年度取年度最后一天<br>
- 3、数据点取值提供两种选择:a、期末值,取区间最后一个日期的数据值。b、取区间平均值。<br>
- 4、最新值的处理:最新的高频数据,正好处于所要降频的低频的两个日期之间时,例如当前1月3号,1月已经有了数据,但1月31号还未到来,则降成月频数据时最新数据日期为1月31号`],
- [53,`扩散指数:AVERAGE(所选指标环差指数和)<br>
- 1、选择多个指标,设定扩散指标日期并集<br>
- 2、所选指标在日期并集内有缺失值的用前期值填充<br>
- 3、计算日期并集内所选指标的每期环差指数(环差>0,取1,环差=0,取0.5,环差<0,取0),并计算环差指数均值`],
- ['accumulate',`1、累计值计算方法:<br>
- 日度转周度:日期选周五,计算上周六到本周五的日度值的加总,最新日期为最新值对应的周五。<br>
- 日度转月度:日期选每个月最后一天,计算当月所有日度值的加总,最新日期为最新值对应当月最后一天。<br>
- 日度转季度、年度:方法类似转月度。<br>
- 周度转月度/季度/年度:将周度值转成日度,空值用插值法插值,计算当月/当季/当年所有值的加总,然后除以7。<br>
- 月度转季度/年度: 当季/当年月度值相加。<br>
- 以此类推 特别说明:旬度指标可以转成更低频指标,更高频指标不能转成旬度<br>
- 2、年初至今计算方法:<br>
- 日度数据年初至今:日期同原日度数据。将每年1月1日(含)到日度数据所在日期(含)之间的日度值,进行加总。<br>
- 周度数据年初至今:日期同原周度数据。将周度值转成日度频率,空值用插值法插值,然后算法同日度年度至今,再除以7<br>
- 月度/季度数据年初至今:日期同原月度/季度数据,将每年1月1日(含)到月度数据所在日期(含)之间的月度/季度值,进行加总<br>
- 以此类推`],
- [61,`累计值转季值计算方法:<br>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:45%">1季度无值:1季度=2季度/2 </span>
- <span style="width:40%">1季度有值:1季度=1季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">2季度=2季度/2</span>
- <span style="width:40%">2季度=2季度-1季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">3季度=3季度-2季度</span>
- <span style="width:40%">3季度=3季度-2季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">4季度=4季度-3季度</span>
- <span style="width:40%">4季度=4季度-3季度</span>
- </p>
- <p style="display:flex;justify-content: space-between;">
- <span style="width:40%">以此类推</span>
- <span style="width:40%">以此类推</span>
- </p>
- <p>特别说明:若1季度和2季度均无值,则该年不做计算</p>`],
- [62,`累计值计算方法:<br>
- 日度转周度:日期选周五,计算上周六到本周五的日度值的加总,最新日期为最新值对应的周五。<br>
- 日度转月度:日期选每个月最后一天,计算当月所有日度值的加总,最新日期为最新值对应当月最后一天。<br>
- 日度转季度、年度:方法类似转月度。<br>
- 周度转月度/季度/年度:将周度值转成日度,空值用插值法插值,计算当月/当季/当年所有值的加总,然后除以7。<br>
- 月度转季度/年度: 当季/当年月度值相加。<br>
- 以此类推 特别说明:旬度指标可以转成更低频指标,更高频指标不能转成旬度<br>`],
- [63,`年初至今计算方法:<br>
- 日度数据年初至今:日期同原日度数据。将每年1月1日(含)到日度数据所在日期(含)之间的日度值,进行加总。<br>
- 周度数据年初至今:日期同原周度数据。将周度值转成日度频率,空值用插值法插值,然后算法同日度年度至今,再除以7<br>
- 月度/季度数据年初至今:日期同原月度/季度数据,将每年1月1日(含)到月度数据所在日期(含)之间的月度/季度值,进行加总<br>
- 以此类推`],
- ['alpha',`指数修匀计算公式:<br>
- 1、设定指数修匀值序列的初始值=原来时间序列的初始值 <br>
- 2、选择平滑系数alpha值:在0-1之间,开区间 <br>
- 3、本期指数修匀值=alpha*本期实际值+(1-alpha)*上期指数修匀值`],
- [75,`日均值计算公式:<br>
- 1、年度值转日均值=年度值/对应年份天数 <br>
- 2、半年度值转日均值=半年度值/对应半年度天数 <br>
- 3、季度值转日均值=季度值/对应季度天数 <br>
- 4、月度值转日均值=月度值/对应月度天数 <br>
- 5、旬度值转日均值=旬度值/对应旬度天数 <br>
- 6、周度值转日均值=周度值/7`]
- ])
- // wind 日期序列常见指标代码
- export const windCommonIndexCodeArr=[
- {value:'pre_close',label:"前收盘价"},
- {value:'open',label:"开盘价"},
- {value:'high',label:"最高价"},
- {value:'low',label:"最低价"},
- {value:'close',label:"收盘价"},
- {value:'settle',label:"结算价"},
- {value:'volume',label:"成交量"},
- {value:'amt',label:"成交额"},
- {value:'pct_chg',label:"涨跌幅"},
- {value:'swing',label:"振幅"},
- {value:'turn',label:"换手率"},
- {value:'oi',label:"持仓量"},
- {value:'oiamount',label:"持仓额"}
- ]
- // 同花顺 日期序列常见 股票指标代码
- export const THSCommonIndexStockCodeArr=[
- {value:'ths_pre_close_stock',label:"前收盘价"},
- {value:'ths_open_price_stock',label:"开盘价"},
- {value:'ths_high_price_stock',label:"最高价"},
- {value:'ths_low_stock',label:"最低价"},
- {value:'ths_close_price_stock',label:"收盘价"},
- {value:'ths_vol_stock',label:"成交量"},
- {value:'ths_amt_stock',label:"成交额"},
- {value:'ths_chg_ratio_stock',label:"涨跌幅"},
- {value:'ths_swing_stock',label:"振幅"},
- {value:'ths_turnover_ratio_stock',label:"换手率"},
- ]
- // 同花顺 日期序列常见 指标代码
- export const THSCommonIndexFuturesCodeArr=[
- {value:'ths_pre_close_future',label:"前收盘价"},
- {value:'ths_open_price_future',label:"开盘价"},
- {value:'ths_high_price_future',label:"最高价"},
- {value:'ths_low_future',label:"最低价"},
- {value:'ths_close_price_future',label:"收盘价"},
- {value:'ths_settle_future',label:"结算价"},
- {value:'ths_vol_future',label:"成交量"},
- {value:'ths_amt_future',label:"成交额"},
- {value:'ths_chg_ratio_future',label:"涨跌幅"},
- {value:'ths_swing_d_future',label:"日振幅"},
- {value:'ths_open_interest_future',label:"持仓量"},
- ]
|