BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Xinhui
Obsidian | Level 7

In my case, we have three variables - the underlying price, the strike price, and the datadate. When the program picks up the strike price that is nearest to the underlying price, I also need it to consider the datadate. Please see the attached document for a sample. 

 

So basically, I need it to pick the nearest strike price within that given date.

 

For example, on 2011/1/16, the underlying price is 26.33. The closest strike price is 26.5. 

On 2011/1/17, the underlying price is 26.11 and the closest strike price is 26. 

 

1 ACCEPTED SOLUTION

Accepted Solutions
alexchien
Pyrite | Level 9

If the underlying_price is a constant within a day, you can use a sort and data step to get the nearest strike price. 

 

data sample_new;
    set sample;
    diff = abs(underlying_price - strike);
run;

 

proc sort data = sample_new;
    by datadate diff;
run;

 

data nearest_price;
    set sample_new;
    by datadate diff;
    if first.datadate;
run;

View solution in original post

2 REPLIES 2
Xinhui
Obsidian | Level 7

In my case, we have three variables - the underlying price, the strike price, and the datadate. When the program picks up the strike price that is nearest to the underlying price, I also need it to consider the datadate. Please see the attached document for a sample. 

 

So basically, I need it to pick the nearest strike price within that given date.

 

For example, on 2011/1/16, the underlying price is 26.33. The closest strike price is 26.5. 

On 2011/1/17, the underlying price is 26.11 and the closest strike price is 26. 

 

alexchien
Pyrite | Level 9

If the underlying_price is a constant within a day, you can use a sort and data step to get the nearest strike price. 

 

data sample_new;
    set sample;
    diff = abs(underlying_price - strike);
run;

 

proc sort data = sample_new;
    by datadate diff;
run;

 

data nearest_price;
    set sample_new;
    by datadate diff;
    if first.datadate;
run;

sas-innovate-white.png

Missed SAS Innovate in Orlando?

Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.

 

Register now

Discussion stats
  • 2 replies
  • 1493 views
  • 2 likes
  • 2 in conversation