22#define SHARPE_MIN_OBSERVATIONS 30
33 if (!self)
return NAN;
38 if (self->count == 0) {
41 self->prev_value = portfolio_value;
48 double ret = (portfolio_value - self->prev_value) / self->prev_value;
49 self->prev_value = portfolio_value;
64 if (isnan(stdev) || stdev <= 0.0) {
72 double periods_elapsed = self->end_time - self->start_time;
75 if (periods_elapsed <= 0) {
80 double periods_per_year = (annualization_factor * self->count)
82 if (periods_per_year <= 0) {
87 double annualized_stdev = stdev * sqrt(periods_per_year);
88 double per_period_rf = self->risk_free_rate / periods_per_year;
89 self->value = (mean - per_period_rf) / annualized_stdev;
107 double risk_free_rate) {
109 if (!sr)
return NULL;
113 fprintf(stderr,
"Sharpe Ratio Error: mean object creation failed\n");
120 fprintf(stderr,
"Sharpe Ratio Error: stdev object creation failed\n");
126 sr->risk_free_rate = risk_free_rate;
127 sr->initial_value = initial_value;
129 sr->prev_value = initial_value;
#define wu_indicator_delete(indicator)
Delete the indicator and free any resources allocated by it.
#define wu_indicator_update(indicator, value)
Header file for technical indicators.
WU_StDev wu_stdev_new(int dof)
Creates a new standard deviation indicator.
WU_Mean wu_mean_new(void)
Creates a new WU_Mean indicator.
#define SHARPE_MIN_OBSERVATIONS
The Sharpe Ratio measures risk-adjusted return by comparing excess return (over risk-free rate) to to...
WU_SharpeRatio wu_sharpe_ratio_new(double initial_value, double risk_free_rate)
Creates a new Sharpe Ratio calculator.
static double wu_sharpe_ratio_update(WU_SharpeRatio self, WU_PerformanceUpdate perf)
Updates the Sharpe Ratio calculation with a new portfolio value.
static void wu_sharpe_ratio_free(WU_SharpeRatio self)
Frees resources allocated by the Sharpe Ratio object.
Sharpe ratio is the relation between the risk-free rate discounted retuns and the volatility of an in...
double wu_annualization_factor(WU_TimeUnit unit)
Returns the number of units (seconds, millis, micros, or nanos) contained in a year.