74 const char* symbol,
double quantity,
double value,
double last_price);
130#define wu_portfolio_stats_update(stats, cash, value, timestamp) do { \
131 if ((stats)->update) \
132 (stats)->update((stats), (cash), (value), (timestamp)); \
138#define wu_portfolio_stats_record_trade(stats, pnl, reason) do { \
139 if ((stats)->record_trade) \
140 (stats)->record_trade((stats), (pnl), (reason)); \
146#define wu_portfolio_stats_update_position(stats, idx, sym, qty, val, price) do { \
147 if ((stats)->update_position) \
148 (stats)->update_position((stats), (idx), (sym), (qty), (val), (price)); \
155#define wu_portfolio_stats_to_keyvalue(stats) \
156 ((stats)->to_keyvalue ? (stats)->to_keyvalue((stats)) : NULL)
162#define wu_portfolio_stats_to_json(stats, pretty) \
163 ((stats)->to_json ? (stats)->to_json((stats), (pretty)) : NULL)
165#define wu_portfolio_stats_reset(stats) do { \
166 if ((stats)->reset) \
167 (stats)->reset((stats)); \
170#define wu_portfolio_stats_delete(stats) do { \
171 if ((stats) && (stats)->delete) \
172 (stats)->delete((stats)); \
WU_CalmarRatio wu_calmar_ratio_new(double initial_value)
WU_SharpeRatio wu_sharpe_ratio_new(double initial_value, double risk_free_rate)
Creates a new Sharpe Ratio calculator.
WU_PortfolioStats wu_portfolio_stats_new(double initial_cash, double risk_free_rate)
Creates a new WU_PortfolioStats instance.
WU_SortinoRatio wu_sortino_ratio_new(double initial_value, double risk_free_rate)
Creates a new Sortino Ratio calculator.
WU_MaxDrawdown max_drawdown
double(* update)(struct WU_CalmarRatio_ *self, WU_PerformanceUpdate perf)
WU_PortfolioStats tracks portfolio state, positions, and trading statistics.
int64_t take_profit_exits
void(* update_position)(struct WU_PortfolioStats_ *stats, int asset_index, const char *symbol, double quantity, double value, double last_price)
WU_SortinoRatio sortino_ratio
void(* reset)(struct WU_PortfolioStats_ *stats)
WU_MaxDrawdown max_drawdown
WU_SharpeRatio sharpe_ratio
void(* update)(struct WU_PortfolioStats_ *stats, double cash, double portfolio_value, WU_TimeStamp timestamp)
WU_CalmarRatio calmar_ratio
double accum_borrow_interest
void(* record_trade)(struct WU_PortfolioStats_ *stats, double pnl, WU_CloseReason reason)
Sharpe ratio is the relation between the risk-free rate discounted retuns and the volatility of an in...
double(* update)(struct WU_SharpeRatio_ *self, WU_PerformanceUpdate perf)
double(* update)(struct WU_SortinoRatio_ *self, WU_PerformanceUpdate perf)
A timestamp represent a mark in time given relative to unix epoch.
WU_TimeUnit
WU_TimeUnit represents a unit of time used for time-based calculations such as time-weighted returns ...
WU_CloseReason
WU_CloseReason represents the reason for closing a position, which can be a trading signal,...