SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
/*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;

Weitere ähnliche Inhalte

Mehr von Philip Duhe

Mehr von 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
 

Kürzlich hochgeladen

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Kürzlich hochgeladen (20)

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

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;