35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace FinLib.Risk;
|
|
|
|
public static class ValueAtRisk
|
|
{
|
|
public static double Historical(IEnumerable<double> values, double confidence)
|
|
{
|
|
unsafe {
|
|
var valueArr = values.ToArray();
|
|
fixed (double* ptrOne = valueArr) {
|
|
var ret = NativeMethods.historical_value_at_risk(ptrOne, (UIntPtr)valueArr.Length, confidence);
|
|
|
|
return *ret;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static double VarCovar(IEnumerable<double> values, double confidence)
|
|
{
|
|
unsafe {
|
|
var valueArr = values.ToArray();
|
|
fixed (double* ptrOne = valueArr) {
|
|
var ret = NativeMethods.varcovar_value_at_risk(ptrOne, (UIntPtr)valueArr.Length, confidence);
|
|
|
|
return *ret;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static double ScaleValueAtRisk(double initialValue, nint timeCycles) => NativeMethods.scale_value_at_risk(initialValue, timeCycles);
|
|
} |