一部の資産 (製品) の毎日の価格を示すテーブルがあり、一部の日付が欠落しています。毎年の価格変動率を計算するために、月末の価格を取得したいと考えています。価格のボラティリティは、月末価格の標準偏差として定義されます。
2010 年 12 月 31 日のように月末日が欠落している場合、アルゴリズムは製品の日付をさかのぼって検索し、最も近い日付を月末日として使用する必要があります。
このロジックを c# で実装する簡単な方法はありますか?
おそらく必要なのは、ターゲットとソースの日付を使用した日付サンプリング (または日付アルゴリズム) です。
日付によるテーブルのフィルタリングとサンプリングを参照してください http://finaquant.com/filtering-and-sampling-tables-by-dates/2606
これはあまり複雑であってはなりません。
PriceData
次のようなインスタンスのリストがあるとしますPriceData
。
class PriceData
{
public DateTime Date { get; set; }
public double Price { get; set; }
}
List<PriceData> prices = ...
var lastPricePerMonth = prices.GroupBy(x => x.Date.Year * 12 + y.Date.Month)
.Select(x => x.OrderByDescending(y => y.Date)
.First());
これにより、各月の最新のPriceData
オブジェクトが返されます。