SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
/*CURRENCY VOLATILITY PROJECT
  Author: Phil Duhe, November, 2009


***************************PART A******************************************/

*Create two temporary data sets that contain the original data in the
 text files Data1.txt and Data2.txt;
*system options for page appearance;

*Establish a file reference for data1.txt;
filename DATA1 'C:NewSASDATA1.TXT';
*reading the data from data1.txt;
data A;
infile DATA1 firstobs=7;
input date yymmdd6. dow bp cd dm;
*Change all the 0 values to missing;
if bp <= 0 then bp = .;
if cd <= 0 then cd = .;
if dm <= 0 then dm = .;
run;

*establish file reference for data2.txt;
filename DATA2 'C:NewSASDATA2.TXT';
*reading the data from data2.txt;
data B;
infile DATA2 firstobs=7;
input date: yymmdd6. dow jy sf;
*Change all the 0 values to missing;
if jy <= 0 then jy = .;
if sf <= 0 then sf = .;
run;

************************END OF PART A*********************************;


***************************PART B*************************************;

*Sorting data for merge;
proc sort data=A;
by date dow;
run;
proc sort data=B;
by date dow;
run;
*************************PART B C D &E**********************************;

*Creating permanent merged data set   MyLib.MergedData;
options ls=80 ps=60 pageno=1 nodate   center;
libname MyLib 'C:SASIntro';
data MyLib.MergedData;
merge A(in=ina) B(in=inb);
by date dow;
if ina and inb;*merged set contains   nonmissing observations in A and B;
format date mmddyy8. dow 2.0 bp--sf   7.6;
*Labeling the variables(PART E);
label date = 'Date'
      dow = 'Day of Week'
      bp = 'British Pound'
      cd = 'Canadian Dollar'
      dm = 'Deutsche Mark'
      jy = 'Japanese Yen'
      sf = 'Swiss Franc';
run;

/*Print output*/
proc print data=MyLib.MergedData Width=FULL label;
title 'Merged Data Set';
*show date and not #observations;
id date;
var dow bp--sf;
run;
******************************END OF PART B D
&E****************************;

***********************************PART
C*************************************;
data MyLib.LogResult (drop=bp cd dm jy sf
                       zbp zcd zdm zjy zsf);
set MyLib.MergedData;
zbp = bp / (lag(bp)) ;
zcd = cd / (lag(cd)) ;
zdm = dm / (lag(dm)) ;
zjy = jy / (lag(jy)) ;
zsf = sf / (lag(sf)) ;
*Calculate the log of daily returns(PART C);
lgbp = log(zbp);
lgcd = log(zcd);
lgdm = log(zdm);
lgjy = log(zjy);
lgsf = log(zsf);

*Format and label the variables;
format date mmddyy8. dow 2.0 lgbp--lgsf 7.6 ;
*Labeling the variables(PART E);
label date='Date'
       dow ='Day of Week'
       lgbp='British Pound'
       lgcd='Canadian Dollar'
         lgdm='German Deutschmark'
         lgjy='Japanese Yen'
         lgsf='Swiss Franc';
run;
options ls=80 ps=60 pageno=1 nodate center;
proc print data=MyLib.LogResult Width=Full label;
title 'Log of Daily Returns';
id date;
var dow lgbp--lgsf;
run;

*Volatility PART C;

/*Generate standard deviations of random variables
create a new data set based on PROC MEANS*/
proc means data=MyLib.LogResult std n noprint;*no need to print means
statistics;
      var lgbp--lgsf;
*Outputting the Results into the dataset VolResult;
             output out=MyLib.VolResult(drop= _TYPE_ _FREQ_)
                std=S_bp S_cd S_dm S_jy S_sf
            n = N_bp N_cd N_dm N_jy N_sf;
run;

/*Print to verify standard deviations*/
proc print data=MyLib.VolResult Width=Full label;
options ls=80 ps=60 pageno=1 nodate center;
title 'Standard Deviations of Log of Daily Returns';
var S_bp--S_sf;
run;
*Calculate the estimate of annual volatility;
data MyLib.AnnVol(drop=S_bp S_cd S_dm S_jy S_sf
                  N_bp N_cd N_dm N_jy N_sf);
set MyLib.VolResult;
*Annualized volatility calculation;
Vol_bp =S_bp*sqrt(250/N_bp);
Vol_cd =S_cd*sqrt(250/N_cd);
Vol_dm =S_dm*sqrt(250/N_dm);
Vol_jy =S_jy*sqrt(250/N_jy);
Vol_sf =S_sf*sqrt(250/N_sf);
label Vol_bp = 'British Pound'
      Vol_cd = 'Canadian Dollar'
      Vol_dm = 'German Deutschmark'
      Vol_jy = 'Japanese Yen'
      Vol_sf = 'Swiss Franc';
run;

proc print data=MyLib.AnnVol Width= FULL label;
title1 'Annualized Foreign Exchange Rate Volatilty';
title2;
title3 'Major Trading Currencies';
run;
********************************END OF PART C******************************;


*******************************PART F**************************************;

/*Create an external file in (ASCII format) using PUT statement
  and appropriate FORMAT statement*/
proc sort data=MyLib.LogResult;
by date dow;
run;
Data _null_;
      set MyLib.LogResult;
             file 'C:UsersPhilSasProject'; **write merged data to output
file;

if _n_=1 then do;*do loop to establish report headings and column spacings;
* report headings;
            put 'SAS X405, UCBX, November 2009, Term Project';
            put 'Phil Duhe';
put      ' ';
             put      'Natural Logarithm of Daily Returns';
             put      'of Five Currencies';
             put      'June, 1973 to November, 1987';
             put      ' ';
             put      ' ';
             put      ' ';
             put      '           '
             '        British'
                         ' Deutsche'
                         ' Canadian'
                         ' Japanese'
                         '      Swiss'
                                          ;
     put '                 '
             '          Pounds'
                         '      Marks'
                         '   Dollars'
                         '        Yen'
                         '      Franc'
                                          ;
     put '       ';
     put '            Date'
             '           LGBP'
                        '        LGCD'
                        '        LGDM'
                        '        LGJY'
                        '        LGSF'
                                          ;
     put ' - ';

            end;      * end if 1st obs;
            put @2 date MMDDYY8. @15lgbp 7.6 @25lgcd 7.6 @35lgdm 7.6 @45lgjy
7.6 @55lgsf 7.6;
run;
******************************END OF PART
F**********************************;

********************************PART
G***************************************;

/*Calculate the variance-covariance matrix of the daily return of random
variables*/
/*Note: The variance of a variable is a measure of the dispersion of the
variable
  around its mean value.*/
/*Note: Covariance is a measure of the strength of the link between two
random numerical
  variables*/

ods select Cov;
proc corr data=MyLib.LogResult cov nocorr nosimple;*just print the variance-
covariance matrix;
options ls=180 ps=65 pageno=1 nodate center;*landscape;
title1 'Variance-Covariance Matrix';
title2;
title3 'Log of Daily Returns of Major FX Currencies';
var lgbp--lgsf;
run;
**********************************END OF PART G*****************************;

************************************PART
H***********************************;

/*calculate the variance-covariance matrix for Mondays*/
data MyLib.Monday;
set MyLib.LogResult;
where dow EQ 1;*read input data set for Monday only;
run;
ods select Cov;
proc corr data=MyLib.Monday cov nocorr nosimple ;*print covariances and not
descriptive statistics;
options ls=180 ps=60 pageno=1 nodate nocenter;*landscape;
title 'Monday Trading Days';
var lgbp--lgsf;
run;

/*calculate the variance-covariance matrix for Thursdays*/
data MyLib.Thursday;
set MyLib.LogResult;
where dow EQ 4;*read input data set for Thursday only;
run;
ods select Cov;
proc corr data=MyLib.Thursday cov nocorr nosimple;*print covariances and not
descriptive statistics;
options ls=180 ps=60 pageno=1 nodate nocenter;*landscape;
title 'Thursday Trading Days';
var lgbp--lgsf;
run;
***********************************END OF PART H**************************;

**************************************PART I******************************;

/*Calculate the correlation coefficient matrix of the log of daily returns*/
proc corr data=MyLib.LogResult Pearson nosimple nomiss rank;
options ls=180 ps=60 pageno=1 nodate nocenter;*landscape;
title1 'Correlation Coefficient Matrix';
title2;
title3 'Log of Daily Returns of Major FX Currencies';
var lgbp--lgsf;
run;
***********************************END OF PART I***************************;

**************************************PART J*******************************;

/*Calculate the skewness, kurtosis of the log of daily return of all the
random variables*/

/*Skewness: measures the tendency of the deviations to be larger in one
direction than in the other. The
  sample sknewness can be either positive or negative. Observations that have
a normal distribution
  should have a sknewness near zero(0).*/
/*Kurtosis: measures the heaviness of tails of the data distribution.
Observations that are normally
  distributed should have a kurtosis near zero(0).*/

proc means data=MyLib.LogResult skewness kurtosis;
options ls=80 ps=60 pageno=1 nodate center;
title 'Skewness and Kurtosis of Log of Daily Returns';
var lgbp--lgsf;
run;
**********************************END OF PART J*************************;

****************OPTIONAL************************************************;
/*EXERCISE K*/
/*Write a macro program so that you can repeatedly excecute correlation
 coefficients for different data sets without retyping the procedure*/

%macro example(request= , mydata= );*parameter variables set to null;
%if &request=print %then
      %do;
            proc print data=&mydata;*print data set;
      run;
      %end;

%else %if &request=correlation %then*run the correlation;
      %do;
            proc corr data=&mydata pearson nosimple nomiss rank;*rank the
correlations;

            run;
      %end;
%mend example;
***********************************************************************;
*Example of Calling MACRO Example;

%example(request=correlation, mydata=MyLib.LogResult)*pass in parameter
variables;

***********************************************************************;
/*Extra Programs*/

/*Univariate Statistics for Log of Daily Returns*/
ods select BasicMeasures ExtremeObs;*Basic statistics and extreme
observations for
                                      nominal value of fx currencies;
title "Basic Measures";
proc univariate data=MyLib.LogResult;
var lgbp--lgsf;
run;

title "Log of Daily Returns vs. Normal Distribution";
proc univariate data=MyLib.LogResult noprint;
var lgbp--lgsf;
histogram lgbp--lgsf/normal (color=red w=2) ;
inset mean='Mean' (7.6)
std ='Standard Deviation' (7.6)/font='Arial'
                                  pos=nw
                                  height=3;
run;
*******************************************************************;
ods html;
ods graphics on;
proc corr data=MyLib.LogResult nomiss noprint plots=matrix;
var lgbp--lgsf;
title 'Correlation Coefficients Using PROC CORR';
run;
ods graphics off;
ods html close;

********************************************************************;

ods html;
ods graphics on;
proc corr data=MyLib.LogResult nomiss noprint
                     plots=scatter(alpha = .20 .30);
var lgbp--lgsf;
run;
ods graphics off;
ods html close;

Más contenido relacionado

Más de Philip Duhe

Más de Philip Duhe (6)

Multi Prop DRD
Multi Prop DRDMulti Prop DRD
Multi Prop DRD
 
MultipProp GUI
MultipProp GUIMultipProp GUI
MultipProp GUI
 
Website Page
Website  PageWebsite  Page
Website Page
 
Data Model
Data Model Data Model
Data Model
 
Java Applets
Java Applets Java Applets
Java Applets
 
Entity Relational Design
Entity Relational DesignEntity Relational Design
Entity Relational Design
 

Último

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

SAS Programming

  • 1. /*CURRENCY VOLATILITY PROJECT Author: Phil Duhe, November, 2009 ***************************PART A******************************************/ *Create two temporary data sets that contain the original data in the text files Data1.txt and Data2.txt; *system options for page appearance; *Establish a file reference for data1.txt; filename DATA1 'C:NewSASDATA1.TXT'; *reading the data from data1.txt; data A; infile DATA1 firstobs=7; input date yymmdd6. dow bp cd dm; *Change all the 0 values to missing; if bp <= 0 then bp = .; if cd <= 0 then cd = .; if dm <= 0 then dm = .; run; *establish file reference for data2.txt; filename DATA2 'C:NewSASDATA2.TXT'; *reading the data from data2.txt; data B; infile DATA2 firstobs=7; input date: yymmdd6. dow jy sf; *Change all the 0 values to missing; if jy <= 0 then jy = .; if sf <= 0 then sf = .; run; ************************END OF PART A*********************************; ***************************PART B*************************************; *Sorting data for merge; proc sort data=A; by date dow; run; proc sort data=B; by date dow; run; *************************PART B C D &E**********************************; *Creating permanent merged data set MyLib.MergedData; options ls=80 ps=60 pageno=1 nodate center; libname MyLib 'C:SASIntro'; data MyLib.MergedData; merge A(in=ina) B(in=inb); by date dow; if ina and inb;*merged set contains nonmissing observations in A and B; format date mmddyy8. dow 2.0 bp--sf 7.6; *Labeling the variables(PART E);
  • 2. label date = 'Date' dow = 'Day of Week' bp = 'British Pound' cd = 'Canadian Dollar' dm = 'Deutsche Mark' jy = 'Japanese Yen' sf = 'Swiss Franc'; run; /*Print output*/ proc print data=MyLib.MergedData Width=FULL label; title 'Merged Data Set'; *show date and not #observations; id date; var dow bp--sf; run; ******************************END OF PART B D &E****************************; ***********************************PART C*************************************; data MyLib.LogResult (drop=bp cd dm jy sf zbp zcd zdm zjy zsf); set MyLib.MergedData; zbp = bp / (lag(bp)) ; zcd = cd / (lag(cd)) ; zdm = dm / (lag(dm)) ; zjy = jy / (lag(jy)) ; zsf = sf / (lag(sf)) ; *Calculate the log of daily returns(PART C); lgbp = log(zbp); lgcd = log(zcd); lgdm = log(zdm); lgjy = log(zjy); lgsf = log(zsf); *Format and label the variables; format date mmddyy8. dow 2.0 lgbp--lgsf 7.6 ; *Labeling the variables(PART E); label date='Date' dow ='Day of Week' lgbp='British Pound' lgcd='Canadian Dollar' lgdm='German Deutschmark' lgjy='Japanese Yen' lgsf='Swiss Franc'; run; options ls=80 ps=60 pageno=1 nodate center; proc print data=MyLib.LogResult Width=Full label; title 'Log of Daily Returns'; id date; var dow lgbp--lgsf; run; *Volatility PART C; /*Generate standard deviations of random variables
  • 3. create a new data set based on PROC MEANS*/ proc means data=MyLib.LogResult std n noprint;*no need to print means statistics; var lgbp--lgsf; *Outputting the Results into the dataset VolResult; output out=MyLib.VolResult(drop= _TYPE_ _FREQ_) std=S_bp S_cd S_dm S_jy S_sf n = N_bp N_cd N_dm N_jy N_sf; run; /*Print to verify standard deviations*/ proc print data=MyLib.VolResult Width=Full label; options ls=80 ps=60 pageno=1 nodate center; title 'Standard Deviations of Log of Daily Returns'; var S_bp--S_sf; run; *Calculate the estimate of annual volatility; data MyLib.AnnVol(drop=S_bp S_cd S_dm S_jy S_sf N_bp N_cd N_dm N_jy N_sf); set MyLib.VolResult; *Annualized volatility calculation; Vol_bp =S_bp*sqrt(250/N_bp); Vol_cd =S_cd*sqrt(250/N_cd); Vol_dm =S_dm*sqrt(250/N_dm); Vol_jy =S_jy*sqrt(250/N_jy); Vol_sf =S_sf*sqrt(250/N_sf); label Vol_bp = 'British Pound' Vol_cd = 'Canadian Dollar' Vol_dm = 'German Deutschmark' Vol_jy = 'Japanese Yen' Vol_sf = 'Swiss Franc'; run; proc print data=MyLib.AnnVol Width= FULL label; title1 'Annualized Foreign Exchange Rate Volatilty'; title2; title3 'Major Trading Currencies'; run; ********************************END OF PART C******************************; *******************************PART F**************************************; /*Create an external file in (ASCII format) using PUT statement and appropriate FORMAT statement*/ proc sort data=MyLib.LogResult; by date dow; run; Data _null_; set MyLib.LogResult; file 'C:UsersPhilSasProject'; **write merged data to output file; if _n_=1 then do;*do loop to establish report headings and column spacings; * report headings; put 'SAS X405, UCBX, November 2009, Term Project'; put 'Phil Duhe';
  • 4. put ' '; put 'Natural Logarithm of Daily Returns'; put 'of Five Currencies'; put 'June, 1973 to November, 1987'; put ' '; put ' '; put ' '; put ' ' ' British' ' Deutsche' ' Canadian' ' Japanese' ' Swiss' ; put ' ' ' Pounds' ' Marks' ' Dollars' ' Yen' ' Franc' ; put ' '; put ' Date' ' LGBP' ' LGCD' ' LGDM' ' LGJY' ' LGSF' ; put ' - '; end; * end if 1st obs; put @2 date MMDDYY8. @15lgbp 7.6 @25lgcd 7.6 @35lgdm 7.6 @45lgjy 7.6 @55lgsf 7.6; run; ******************************END OF PART F**********************************; ********************************PART G***************************************; /*Calculate the variance-covariance matrix of the daily return of random variables*/ /*Note: The variance of a variable is a measure of the dispersion of the variable around its mean value.*/ /*Note: Covariance is a measure of the strength of the link between two random numerical variables*/ ods select Cov; proc corr data=MyLib.LogResult cov nocorr nosimple;*just print the variance- covariance matrix; options ls=180 ps=65 pageno=1 nodate center;*landscape; title1 'Variance-Covariance Matrix'; title2; title3 'Log of Daily Returns of Major FX Currencies';
  • 5. var lgbp--lgsf; run; **********************************END OF PART G*****************************; ************************************PART H***********************************; /*calculate the variance-covariance matrix for Mondays*/ data MyLib.Monday; set MyLib.LogResult; where dow EQ 1;*read input data set for Monday only; run; ods select Cov; proc corr data=MyLib.Monday cov nocorr nosimple ;*print covariances and not descriptive statistics; options ls=180 ps=60 pageno=1 nodate nocenter;*landscape; title 'Monday Trading Days'; var lgbp--lgsf; run; /*calculate the variance-covariance matrix for Thursdays*/ data MyLib.Thursday; set MyLib.LogResult; where dow EQ 4;*read input data set for Thursday only; run; ods select Cov; proc corr data=MyLib.Thursday cov nocorr nosimple;*print covariances and not descriptive statistics; options ls=180 ps=60 pageno=1 nodate nocenter;*landscape; title 'Thursday Trading Days'; var lgbp--lgsf; run; ***********************************END OF PART H**************************; **************************************PART I******************************; /*Calculate the correlation coefficient matrix of the log of daily returns*/ proc corr data=MyLib.LogResult Pearson nosimple nomiss rank; options ls=180 ps=60 pageno=1 nodate nocenter;*landscape; title1 'Correlation Coefficient Matrix'; title2; title3 'Log of Daily Returns of Major FX Currencies'; var lgbp--lgsf; run; ***********************************END OF PART I***************************; **************************************PART J*******************************; /*Calculate the skewness, kurtosis of the log of daily return of all the random variables*/ /*Skewness: measures the tendency of the deviations to be larger in one direction than in the other. The sample sknewness can be either positive or negative. Observations that have a normal distribution should have a sknewness near zero(0).*/
  • 6. /*Kurtosis: measures the heaviness of tails of the data distribution. Observations that are normally distributed should have a kurtosis near zero(0).*/ proc means data=MyLib.LogResult skewness kurtosis; options ls=80 ps=60 pageno=1 nodate center; title 'Skewness and Kurtosis of Log of Daily Returns'; var lgbp--lgsf; run; **********************************END OF PART J*************************; ****************OPTIONAL************************************************; /*EXERCISE K*/ /*Write a macro program so that you can repeatedly excecute correlation coefficients for different data sets without retyping the procedure*/ %macro example(request= , mydata= );*parameter variables set to null; %if &request=print %then %do; proc print data=&mydata;*print data set; run; %end; %else %if &request=correlation %then*run the correlation; %do; proc corr data=&mydata pearson nosimple nomiss rank;*rank the correlations; run; %end; %mend example; ***********************************************************************; *Example of Calling MACRO Example; %example(request=correlation, mydata=MyLib.LogResult)*pass in parameter variables; ***********************************************************************; /*Extra Programs*/ /*Univariate Statistics for Log of Daily Returns*/ ods select BasicMeasures ExtremeObs;*Basic statistics and extreme observations for nominal value of fx currencies; title "Basic Measures"; proc univariate data=MyLib.LogResult; var lgbp--lgsf; run; title "Log of Daily Returns vs. Normal Distribution"; proc univariate data=MyLib.LogResult noprint; var lgbp--lgsf; histogram lgbp--lgsf/normal (color=red w=2) ; inset mean='Mean' (7.6) std ='Standard Deviation' (7.6)/font='Arial' pos=nw height=3;
  • 7. run; *******************************************************************; ods html; ods graphics on; proc corr data=MyLib.LogResult nomiss noprint plots=matrix; var lgbp--lgsf; title 'Correlation Coefficients Using PROC CORR'; run; ods graphics off; ods html close; ********************************************************************; ods html; ods graphics on; proc corr data=MyLib.LogResult nomiss noprint plots=scatter(alpha = .20 .30); var lgbp--lgsf; run; ods graphics off; ods html close;