我有一張桌子,上面有一些資產(產品)的日常價格,但有一些日子沒有了。我想獲得月底價格以計算每年的價格波動率。價格波動被定義爲月末價格的標準差。如何獲得c#的月底日期?
如果缺少月末日期,例如2010年12月31日,算法必須向後搜索產品的日期並使用最近的日期作爲月末日期。
有沒有一種簡單的方法來實現這個邏輯與C#?
我有一張桌子,上面有一些資產(產品)的日常價格,但有一些日子沒有了。我想獲得月底價格以計算每年的價格波動率。價格波動被定義爲月末價格的標準差。如何獲得c#的月底日期?
如果缺少月末日期,例如2010年12月31日,算法必須向後搜索產品的日期並使用最近的日期作爲月末日期。
有沒有一種簡單的方法來實現這個邏輯與C#?
這不應該太複雜。
假設你有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
對象每月。
你需要的可能是日期採樣(或日期算法)與目標和來源日期。
見 過濾和按日期 http://finaquant.com/filtering-and-sampling-tables-by-dates/2606
是的,這正是我需要的,謝謝。 – selmar
確定抽樣表 - 如果你想月底...
DateTime theDate = DateTime.Now; // start with any date....
DateTime endOfMonth = new DateTime(theDate.Year, theDate.Month + 1, 1).AddDays(-1);
然後用它在你的LINQ的。
如果一個月沒有記錄怎麼辦? –
你有沒有嘗試過的東西呢? –
我想我回答了一個不同的問題。你需要指定數據的存儲方式(表格是什麼?它是一個數據庫嗎?它的字段是什麼等等)。 – zmbq