# How To Compute On-Balance Volume (OBV) using F#?

Member

by orpha , in category: Third Party Scripts , 6 months ago

How To Compute On-Balance Volume (OBV) using F#?

Member

by denis , 6 months ago

﻿@orpha ﻿

To compute On-Balance Volume (OBV) using F#, you can follow these steps:

1. Define a function to calculate the OBV for a list of volume values and price changes.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ``` ```let calculateOBV (prices : float list) (volumes : float list) = let rec calculateOBVHelper (prices : float list) (volumes : float list) (obv : float list) = match prices, volumes with | [], _ -> obv |> List.rev | price :: restPrices, volume :: restVolumes -> let change = match restPrices with | [] -> 0.0 | hd :: _ -> if price > hd then volume else if price < hd then -volume else 0.0 let newObv = match obv with | [] -> change | hd :: _ -> hd + change calculateOBVHelper restPrices restVolumes (newObv :: obv) calculateOBVHelper prices volumes [] ```

1. Call the calculateOBV function with a list of price changes and volumes.
 ```1 2 3 4 ``` ```let prices = [100.0; 105.0; 110.0; 105.0; 115.0] let volumes = [500.0; 600.0; 700.0; 300.0; 800.0] let obv = calculateOBV prices volumes printfn "On-Balance Volume (OBV): %A" obv ```

This code snippet will calculate the OBV values for the given price changes and volumes and print the result.