| Type: | Package | 
| Title: | Uncorrelated Bets via Minimum Torsion Algorithm | 
| Version: | 0.1.2 | 
| Description: | Implements Minimum Torsion for portfolio diversification as described in Meucci, Attilio (2013) <doi:10.2139/ssrn.2276632>. | 
| License: | MIT + file LICENSE | 
| URL: | https://github.com/Reckziegel/uncorbets, https://reckziegel.github.io/uncorbets/ | 
| BugReports: | https://github.com/Reckziegel/uncorbets/issues | 
| Imports: | assertthat (≥ 0.2.1), NlcOptim (≥ 0.6), stats | 
| Suggests: | spelling, covr, testthat (≥ 3.0.10) | 
| Config/testthat/edition: | 3 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.1 | 
| Language: | en-US | 
| Depends: | R (≥ 2.10) | 
| NeedsCompilation: | no | 
| Packaged: | 2024-02-20 02:42:07 UTC; USUARIO | 
| Author: | Bernardo Reckziegel [aut, cre] | 
| Maintainer: | Bernardo Reckziegel <bernardo_cse@hotmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2024-02-20 03:10:02 UTC | 
Effective Number of Bets
Description
Computes the diversification probability distribution and the effective number of bets of an allocation.
Usage
effective_bets(b, sigma, t)
Arguments
b | 
 A vector of exposures (allocations).  | 
sigma | 
 A   | 
t | 
 A   | 
Value
A list of length 2 with:
-  
p: the diversification probability distribution; -  
enb: the effective number of bets. 
Examples
# extract the invariants from the data
set.seed(123)
log_ret <- matrix(rnorm(400), ncol = 4) / 10
# compute the covariance matrix
sigma <- stats::cov(log_ret)
# torsion
torsion_cov <- torsion(sigma = sigma, model = 'minimum-torsion', method ='exact')
# 1/N reference
b <- rep(1 / ncol(log_ret), ncol(log_ret))
# ENB
effective_bets(b = b, sigma = sigma, t = torsion_cov)
Test if an object has is named
Description
Test if an object has is named
Usage
is_col_named(x)
Arguments
x | 
 The object to be tested.  | 
Value
A flag ('TRUE' or 'FALSE')
Test if an object is quadratic
Description
Test if an object is quadratic
Usage
is_quadratic(x)
Arguments
x | 
 An object to be tested.  | 
Value
A flag ('TRUE' or 'FALSE')
Risk-Diversification powered by the Minimum Torsion Algorithm
Description
Finds the allocation that maximizes the effective_bets.
Usage
max_effective_bets(x0, sigma, t, tol = 1e-20, maxeval = 5000L, maxiter = 5000L)
Arguments
x0 | 
 A   | 
sigma | 
 A   | 
t | 
 A   | 
tol | 
 An   | 
maxeval | 
 An   | 
maxiter | 
 An   | 
Value
A list with the following components:
-  
weights: the optimal allocation policy -  
enb: the optimal effective number of bets -  
counts: the number of iterations of the objective and the gradient -  
lambda_lb: the lower bound Lagrange multipliers -  
lambda_ub: the upper bound Lagrange multipliers -  
lambda_eq: the equality Lagrange multipliers -  
gradient: the gradient of the objective function at the optimum -  
hessian: hessian of the objective function at the optimum 
See Also
Examples
# extract the invariants from the data
set.seed(123)
log_ret <- matrix(stats::rnorm(400), ncol = 4) / 10
# compute the covariance matrix
sigma <- stats::cov(log_ret)
# torsion
torsion_cov <- torsion(sigma = sigma, model = 'minimum-torsion', method = 'exact')
# 1/N reference
b <- rep(1 / ncol(log_ret), ncol(log_ret))
max_effective_bets(x0 = b, sigma = sigma, t = torsion_cov)
MATLAB 'sqrtm' functionality
Description
This function returns the square root of a quadratic matrix.
Usage
sqrtm(x)
Arguments
x | 
 A square matrix.  | 
Value
A squared matrix.
Computes the Minimum Torsion Matrix
Description
Computes the Principal Components Torsion and the Minimum Torsion for diversification analysis.
Usage
torsion(sigma, model = "minimum-torsion", method = "exact", max_niter = 10000L)
Arguments
sigma | 
 A   | 
model | 
 One of: "pca" or "minimum-torsion".  | 
method | 
 One of: "approximate" or "exact". Only used when   | 
max_niter | 
 An   | 
Value
A n x n torsion matrix.
Examples
# extract the invariants from the data
set.seed(123)
log_ret <- matrix(rnorm(400), ncol = 4) / 10
# calculate the covariance matrix
sigma <- stats::cov(log_ret)
# torsion
torsion(sigma = sigma, model = 'minimum-torsion', method ='exact')