Мне нужно написать код, в котором я использую Среднюю дисперсию, чтобы перебалансировать мое портфолио на 12 месяцев (один год). Единственное, что я должен определить, как я обойду свое количество активов после каждого перебалансирования. Когда я раунд, мне нужно выяснить, положительна ли разница между моей новой стоимостью портфеля (после вычитания транзакционных издержек) и моей старой стоимостью портфеля до установленного лимита около 3000 долларов США.MATLAB: как пройти через мой вектор и округлить вверх или вниз
Например, мое первоначальное количество активов было:
x_int = [4500, 6000, 0, 0, 0, 500, 1550, 0, 1000, 0];
Мой новый балансировку ряд активов за первый период был:
x_new = [2490.67, 4401.78, 1502.30, 0, 1010.45, 2803.85, 3489.77, 0, 650.98, 1001.87];
Моя первоначальная стоимость портфеля составила $ 1,897,560.30
Моя сбалансированная стоимость портфеля за первый период составила $ 1,658,923.76 (после того, как я округлил все свои активы вниз) и как $ 2,001,876.95 (после того, как я округлил весь свой номер актива вверх).
Есть ли способ пройти через мои значения x_new
, округлить и/или вниз по каждому отдельному количеству активов и проверить, будут ли мои округленные активы давать мне новое значение портфеля, которое, когда я вычитаю из первоначального портфеля значение будет соответствовать моим критериям
Спасибо!
Как округление делает такую огромную разницу? Я думаю, вы не говорите об этой функции ['round'] (https://www.mathworks.com/help/matlab/ref/round.html), потому что' round (2490.67) = 2491'. –
Да, округление может иметь огромное значение в зависимости от цены запаса. Если бы акция стоила 250 долларов за акцию, то наличие 1000 или 1001 акций было бы значительной разницей в ценах. Я использовал функции ceil и floor, поскольку функция round будет округлена или уменьшена в зависимости от десятичного значения (чего я не хочу) –
Я не уверен, что вы ищете, может быть, это: sum (round (x_new)) - sum (x_new) '? –