楼主: Eco_Zang
3582 4

[SAS EM] SAS分组建立简单组合 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
367 个
通用积分
1.2600
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
3006 点
帖子
16
精华
0
在线时间
265 小时
注册时间
2017-6-4
最后登录
2025-7-21

楼主
Eco_Zang 学生认证  发表于 2018-1-31 23:54:35 |AI写论文
40论坛币
在下有一个数据文件,需要建立十个投资组合,第一个组合要包含每个月msmvosd(流通市值)最小的10%的股票,第二个组合需要有倒数的第2个10%的股票,以此类推。求运行代码。(简单的说就是分成十组,每组包含10%的股票信息,这些股票按流通市值排序)

标签解释:
Stkcd [证券代码] - 以上交所、深交所公布的证券代码为准
Trdmnt [交易月份] - 以YYYY-MM表示
Mclsprc [月收盘价] -
Mnshrtrd [月个股交易股数] - 月内该股票的交易数量
Mnvaltrd [月个股交易金额] - 月内该股票的交易金额;A股以人民币元计,上海B以美元计,深圳B以港币计
Msmvosd [月个股流通市值] - 个股的流通股数与月收盘价的乘积。 A股以人民币元计,上海B以美元计,深圳B以港币计,注意单位是千
Msmvttl [月个股总市值] - 个股的发行总股数与月收盘价的乘积,A股以人民币元计,上海B股以美元计,深圳B股以港币计,注意单位是千
Mretwd [考虑现金红利再投资的月个股回报率] - 字段说明见“回报率计算方法
引用代码为:

DATA GTA_SAS.TRD_Mnth (Label="月个股回报率文件");
Infile 'D:\GTA_SAS\TRD_Mnth.txt' encoding="utf-8" delimiter = '09'x Missover Dsd lrecl=32767 firstobs=2;
Format Stkcd $6.;
Format Trdmnt $7.;
Format Mclsprc 9.3;
Format Mnshrtrd 38.;
Format Mnvaltrd 38.3;
Format Msmvosd 16.2;
Format Msmvttl 16.2;
Format Mretwd 10.6;
Informat Stkcd $6.;
Informat Trdmnt $7.;
Informat Mclsprc 9.3;
Informat Mnshrtrd 38.;
Informat Mnvaltrd 38.3;
Informat Msmvosd 16.2;
Informat Msmvttl 16.2;
Informat Mretwd 10.6;
Label Stkcd="证券代码";
Label Trdmnt="交易月份";
Label Mclsprc="月收盘价";
Label Mnshrtrd="月个股交易股数";
Label Mnvaltrd="月个股交易金额";
Label Msmvosd="月个股流通市值";
Label Msmvttl="月个股总市值";
Label Mretwd="考虑现金红利再投资的月个股回报率";
Input Stkcd $ Trdmnt $ Mclsprc Mnshrtrd Mnvaltrd Msmvosd Msmvttl Mretwd ;
Run;







month return.txt
下载链接: https://bbs.pinggu.org/a-2410448.html

11.89 MB

原文件

最佳答案

经济学balabala 查看完整内容

代码如此廉价···

沙发
经济学balabala 发表于 2018-1-31 23:54:36
代码如此廉价···

藤椅
Eco_Zang 学生认证  发表于 2018-2-1 11:19:50
忘记了引用文件。。。需要稍改一下
DATA GTA_SAS.MR; /*"月个股回报率文件"*/
Infile '/folders/myfolders/project1/month return.txt' encoding="utf-16" delimiter = '09'x Missover Dsd lrecl=32767 firstobs=2;
Format Stkcd $6.;
Format Trdmnt $7.;
Format Mnshrtrd 29.;
Format Mnvaltrd 29.3;
Format Msmvosd 16.2;
Format Mretwd 10.6;
Informat Stkcd $6.;
Informat Trdmnt $7.;
Informat Mnshrtrd 29.;
Informat Mnvaltrd 29.3;
Informat Msmvosd 16.2;
Informat Mretwd 10.6;
Label Stkcd="证券代码";
Label Trdmnt="交易月份";
Label Mnshrtrd="月个股交易股数";
Label Mnvaltrd="月个股交易金额";
Label Msmvosd="月个股流通市值";
Label Mretwd="考虑现金红利再投资的月个股回报率";
Input Stkcd $ Trdmnt $ Mnshrtrd Mnvaltrd Msmvosd Mretwd ;
Run;

板凳
经济学balabala 发表于 2018-2-2 17:34:19
给一个实现思路。比如400个,400/10=40,排个序,然后做个循环填flag就行了。做成个宏还有益于以后的使用。

报纸
Eco_Zang 学生认证  发表于 2018-2-2 20:58:53 来自手机
经济学balabala 发表于 2018-2-2 17:34
给一个实现思路。比如400个,400/10=40,排个序,然后做个循环填flag就行了。做成个宏还有益于以后的使用。
因为sas完全是初学,所以没有意识到解决这件事的代码量。。。以为是一个特定proc过程就可以解决。。。能在详细一些吗,愿意提高价格来学习

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

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