楼主: ttangssong
2169 9

[编程问题求助] 如何生成今天股价与过去100天股价相比的分位数 [推广有奖]

  • 1关注
  • 2粉丝

讲师

68%

还不是VIP/贵宾

-

威望
0
论坛币
3591 个
通用积分
7.2750
学术水平
7 点
热心指数
8 点
信用等级
3 点
经验
682 点
帖子
277
精华
0
在线时间
691 小时
注册时间
2007-3-17
最后登录
2024-2-2

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
某只股票每日价格数据prc。把每天的价格与过去100天的价格相比,需要生成今天的prc位于过去100天的100个prc的百分位是多少?比如大于过去100天中90天的prc且小于过去100天的最高价则认为是percentile=0.9。
由于每天的prc都要与每天的过去100天的prc相对比,不知道什么命令可以实现?

我知道下面这个命令是对prc整个变量的大小进行分组,但是我是需要每天的prc都与前面100天的prc比较。不知道什么命令能够实现呢?
cumul prc, g(percentile) eq
recode percentile (min/0.1=0)(0.1/0.2=1)(0.2/0.3=2)(0.3/0.4=3)(0.4/0.5=4)(0.5/0.6=5)(0.6/0.7=6)(0.7/0.8=7)(0.8/0.9=8)(0.7/0.8=9)(0.9/max=10)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:分位数 percentile percent recode Tile 如何

沙发
voodoo 发表于 2014-5-4 12:17:01 |只看作者 |坛友微信交流群
clear
set more off
set obs 1000
gen prc = uniform()

gen pctile = .
forv i = 101/1000 {
        cumul prc in `=`i'-100'/`i', gen(_pctile) freq equal
        replace pctile = _pctile in `i'
        drop _pctile
}
replace pctile = pctile - 1
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 20 + 20 + 2 + 2 + 2 精彩帖子

总评分: 经验 + 20  论坛币 + 20  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

藤椅
sungmoo 发表于 2014-5-5 17:56:52 |只看作者 |坛友微信交流群
*当前值与过去最近100值(不含当前值)比较:

clear
set ob 1000
g prc=uniform()

g p=.
forv i=101/1000{
g s=(prc<=`=prc[`i']') in `=`i'-100'/`=`i'-1'
su s
replace p=`=r(sum)'/100 in `i'
drop s
}
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 12 + 12 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 12  论坛币 + 12  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

板凳
sungmoo 发表于 2014-5-5 18:10:29 |只看作者 |坛友微信交流群
*另一种等价做法:
g q=.
forv i=101/1000{
egen s=sum(prc<=`=prc[`i']') in `=`i'-100'/`=`i'-1'
replace q=s[_n-1]/100 in `i'
drop s
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

报纸
voodoo 发表于 2014-5-6 11:47:39 |只看作者 |坛友微信交流群
sungmoo 发表于 2014-5-5 17:56
*当前值与过去最近100值(不含当前值)比较:

clear
好!




巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

地板
ttangssong 发表于 2014-5-6 17:14:50 |只看作者 |坛友微信交流群
voodoo 发表于 2014-5-6 11:47
好!
多谢两位大神!!!

使用道具

7
ttangssong 发表于 2014-5-6 17:15:49 |只看作者 |坛友微信交流群
sungmoo 发表于 2014-5-5 18:10
*另一种等价做法:
g q=.
forv i=101/1000{
多谢两位大神!!!

使用道具

8
ttangssong 发表于 2014-5-6 17:25:24 |只看作者 |坛友微信交流群
sungmoo 发表于 2014-5-5 18:10
*另一种等价做法:
g q=.
forv i=101/1000{
能否再问一下,我的数据是panel的,就是每只股票都要进行上面的操作,能问下对于panel的数据,
g s=(prc<=`=prc[`i']') in `=`i'-100'/`=`i'-1'
程序要怎么改动呢?

使用道具

9
voodoo 发表于 2014-5-9 18:03:24 |只看作者 |坛友微信交流群
ttangssong 发表于 2014-5-6 17:25
能否再问一下,我的数据是panel的,就是每只股票都要进行上面的操作,能问下对于panel的数据,
g s=(prc
试试:
gen pctile = .
forv i = 101/1000 {
         by stkcd: cumul prc in `=`i'-100'/`i', gen(_pctile) freq equal  // stkcd为股票代码
         by stkcd: replace pctile = _pctile in `i'
         drop _pctile
}
replace pctile = pctile - 1






巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

10
voodoo 发表于 2014-5-9 18:06:49 |只看作者 |坛友微信交流群
ttangssong 发表于 2014-5-6 17:25
能否再问一下,我的数据是panel的,就是每只股票都要进行上面的操作,能问下对于panel的数据,
g s=(prc
或sungmoo的方法:
gen q=.
forv i=101/1000{
     by stkcd: egen s=total(prc<=`=prc[`i']') in `=`i'-100'/`=`i'-1'
     by stkcd: replace q=s[_n-1]/100 in `i'
     drop s
}





巫毒上传,必属佳品!
坛友下载,三思后行!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 23:34