http://www.zerohedge.com/news/2016-08-26/policy-error-treasury-curve-crashes-dec-2007-lows Policy Error? Treasury Curve Crashes To Dec 2007 Lows by Tyler Durden Aug 26, 2016 11:36 AM 0 SHARES Twitter Facebook Reddit Dear Janet, the bond market's not buying it... at all... The Treasury yield curve (2s30s) has plunged post Yellen to 143bps... flashing a big red "policy error" warning as Yellen's faith in growth is dismissed by bond traders... This is the flattest curve since Dec 2007... As BofAML previously warned, If the Fed does raise rates, however, that doesn’t mean the “all clear” signal will have been sounded. To the extent investors view the hike as a policy error, a flight to quality is likely to follow with the Treasury curve bear-flattening and risk assets selling off. Even if investors don’t overtly seem to believe a rate hike is a policy error, it appears that many investors believe a rate hike will be accompanied by extremely dovish language, possibly to offset the sting of the rate hike. And 12m Libor - 10Y Treasury yields have now inverted... How much longer can US banks ignore it?
以下是个人对PDV的粗浅总结,希望各位高手补充指正。 什么是 PDV 个人认为可以把PDV想象成一排用于存放变量值的盒子。每个盒子代表一个变量。 提交一个DATA步后,SAS会对这个DATA步进行编译,然后执行。 首先,PDV是在DATA步的编译阶段生成的。( 编译会进行语法检查并创建一排整齐摆放的”盒子” ); 然后,在DATA步的执行阶段,根据不同语句对PDV中变量的值进行清空或更改。( 将盒子清空或换上新的物品 ); 最后,在RUN;语句或者OUTPUT;语句将PDV中变量的当前值输出到目标数据集中。KEEP,DROP语句或KEEP=,DROP=数据集选项会影响输出到目标数据集中变量的个数。( 如果没有KEEP/DROP,将新建变量和数据集变量对应的盒子搬出到目标数据集;如果只有KEEP,则只搬KEEP指定的盒子;如果只有DROP,则不搬DROP指定的盒子;如果KEEP/DROP同时存在,则只搬KEEP-DROP后剩下的盒子 ) PDV 中变量的个数及顺序 DATA步中所涉及到的所有的变量,包括新创建的、从其他数据集读取的(SET)、以及自动生成的变量。自动生成的变量包括:_ERROR_,_N_; 或是FIRST.VAR,_IORC_等由某个语句或选项所自动产生的变量。默认情况下,自动生成的变量不会输出到目标数据集中。 PDV中变量按照先来后到的原则,是根据其在DATA步中第一次出现的位置决定整个PDV中的变量顺序。同样,这是在DATA步的编译阶段确定的。( 在SET语句中,数据集选项IN=所指定的变量会在数据集变量之前 )PUT _ALL_; 语句会将PDV中所有的变量按照其在PDV中的顺序输出到log中。 例如下面这个例子: data test; aaa= 1 ; set sashelp.class(keep=name sex in=in1); by name; bbb="bbb"; set sashelp.class(keep=age weight height in=in2); put _all_; run ; 在PDV中共有13个变量,包括两个新创建的(aaa,bbb),5个数据集中的,6个自动生成的(in1,first.name,last.name,in2, _error_, _n_)。 顺序为:aaa, in1, name, sex, first.name, last.name, bbb, in2, age, weight, height, _error_,_n_。 关于 PDV 中变量值的 RETAIN 一般情况下,DATA步的执行是一个循环的过程,也就是SAS运行到DATA步最后一句后会默认回到DATA语句继续执行。在回到DATA语句再次执行这个DATA步的代码的时候,就会涉及到是否对PDV中变量已有的值清空,这就是RETAIN要做的。 ( 这里用“一般情况下”,是因为有些情况下,SAS不会回到DATA语句,而是在RUN;语句就结束了。如: *** No dataread from outside; data a; put _all_; x= 1 ; run ; *** No data readfrom the first iteration(_N_=1); data b; x= 2 ; put _all_; if x= 1 then setsashelp.class; run ; ) 回到PDV: a. 在DATA步刚开始执行的时候: 自动生成变量会被附上初始值:_N_=1, _ERROR_=0,FIRST.VAR=1, LAST.VAR=1, 等等; 如果RETAIN语句对某变量设置了的初始值,则对应的变量被设为指定的值; SUM语句(如a+1;)的变量会被初始化为0; 其他的变量,包括新建变量和SET的数据集对应的变量都会被设为空值。 b. 当SAS执行过程中再次回到DATA语句时: 自动生成变量的值会被retain; 如变量来自RETAIN语句、SUM语句、或数据集中,则变量值会被retain; 其他的变量会被置空。 例如,可以根据下面DATA步所产生的log来判断变量的retain情况: proc sort data=sashelp.class out=class; by age; run; data test; put "==============================="; put "At begnning: " _all_; aaa=_N_; set class(keep=name age in=in1); by age; bbb+age; retain ccc 0 ; ccc=age+ccc; retain ddd; ddd=sum(ddd,age); put "At ending: " _all_; run ; https://bbs.pinggu.org/forum.php?mod=viewthreadtid=2337851fromuid=3554347