楼主: yayacuiliu
3808 9

[原创博文] 债券交易数据分析求助 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

22%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
2.0004
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
2817 点
帖子
87
精华
0
在线时间
158 小时
注册时间
2008-9-16
最后登录
2024-9-27

楼主
yayacuiliu 发表于 2011-6-25 13:18:52 |AI写论文
8论坛币

ID date     time     price
AA 20090112           100
AA 20090116           99
AA 20090211
BB
BB
BB
CC
CC
余下形式与第一列举例类似,观测值有上百万个。我如何能实现对债券分组计算呢?比如说按照ID分组,我要先计算AA在一月每天的return=P_t-P_t-1/P_t-1,然后计算AA在2009年1月的的平均return,要对每个月都计算,怎样用一个命令实现对所有的债券分别计算并生成新变量呢?

最后就是怎么筛选数据使得在一个月内有观测值至少在3个以上啊?
多谢!!!!!

最佳答案

nectar 查看完整内容

尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。 proc sort data=yourdata; by id date time; /*提取每个股票最后一笔价格,视其为每日收盘价格*/ data yourdata1; set yourdata; by id date time; if last.date; year=year(date); month=month(date); lag_price=lag(price); if first.id then ...
关键词:数据分析求助 数据分析 交易数据 分析求助 债券交易 return 如何 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

沙发
nectar 发表于 2011-6-25 13:18:53
尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。

proc sort data=yourdata;
by id date time;

/*提取每个股票最后一笔价格,视其为每日收盘价格*/
data yourdata1;
set yourdata;
by id date time;
if last.date;
year=year(date);
month=month(date);
lag_price=lag(price);
if first.id then lag_price=.;
return=(price/lag_price)-1;

proc sort data=yourdata1;
by id year month date;

proc means data=yourdata1 noprint mean;
var return;
by id year month;
output out=results(drop=_type_  _freq_) mean(return)=avg_monthly_return n(return)=num_freq;

/*选择每个样本观测值在每个月大于等于3*/
data results;
set results;
if num_freq>=3;
run;

藤椅
小小小鱼 发表于 2011-6-25 13:24:23
呵呵,简单的你要是会ACCESS在上面的条件查询就ok了。或者是在excel处理,在在eviews上分组计算。

匿名网友
板凳
匿名网友  发表于 2011-6-25 14:42:23
高什么频啊
数据发国来看看,邮件联系。

报纸
yayacuiliu 发表于 2011-6-25 15:31:40
nectar 发表于 2011-6-25 14:17
尽管你没有明确,感觉你这个是使用的高频数据,即包含time分时的价格数据。以下程序假设你是使用分时的价格数据。如果你的数据仅仅是日间数据,程序稍作修改就可以使用。

proc sort data=yourdata;
by id date time;

/*提取每个股票最后一笔价格,视其为每日收盘价格*/
data yourdata1;
set yourdata;
by id date time;
if last.date;
year=year(date);
month=month(date);
lag_price=lag(price);
if first.id then lag_price=.;
return=(price/lag_price)-1;

proc sort data=yourdata1;
by id year month date;

proc means data=yourdata1 noprint mean;
var return;
by id year month;
output out=results(drop=_type_  _freq_) mean(return)=avg_monthly_return n(return)=num_freq;

/*选择每个样本观测值在每个月大于等于3*/
data results;
set results;
if num_freq>=3;
run;
您好。也许是我之前的表述有问题。我要求我的return=(P_{i,j,t}/P_{i,j,t-1})-1。i为bond i, j 为day j, t为month t.
您能否帮我再看一下。

地板
yugao1986 发表于 2011-6-25 20:44:49
要想深究,建议楼主像kuhasu请教下。
三人行必有我师

7
yayacuiliu 发表于 2011-6-25 21:29:30
4# kuhasu 数据好大的啊。没有办法发过去可能。就是债券交易数据。

8
yayacuiliu 发表于 2011-6-25 21:49:01
4# kuhasu 我发了一个附件是数据的一部分。您请看。其实我之前表述有点问题。我需要先筛选在每个月起码都有2个以上的观测值。
在每个月内求 Return= (P_{i,j,t}/P_{i,j,t-1})-1. 然后还要用Return/vol.  之后再求这个值的月内平均值。之前我觉得数据太多,就简化了一下。请您帮我看看吧。

9
nectar 发表于 2011-6-25 22:41:10
yayacuiliu 发表于 2011-6-25 21:49
4# kuhasu 我发了一个附件是数据的一部分。您请看。其实我之前表述有点问题。我需要先筛选在每个月起码都有2个以上的观测值。
在每个月内求 Return= (P_{i,j,t}/P_{i,j,t-1})-1. 然后还要用Return/vol.  之后再求这个值的月内平均值。之前我觉得数据太多,就简化了一下。请您帮我看看吧。
感觉你是想求amihud illiquidity ratio。但是amihud的分子是绝对值呀。

10
yayacuiliu 发表于 2011-6-26 13:23:21
9# nectar 您说的没错。我是想求Amihud liquidity ratio.绝对值漏写了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 15:40