だいぶ時間が経過しているので、自己解決されていらっしゃるかもしれませんが、本ご質問に気づいたので回答します。
rebalanceFcnおよびrebBacktestの両方で価格データを入力引数として与えるのが不自然だというご質問かと思います。
以下のサンプルの様に、runBacktestで与える価格データをbacktestStrategyを介してrebalanceFcnに与えるようになっているので、データは同じもので、単に入れ子構造になっているだけと考えれば良いと思います。
% バックテスト用オブジェクト作成
strategy = backtestStrategy("Name",@rebalanceFcn,...
'RebalanceFrequency',rebalFreq,...
'TransactionCosts',tradingCosts,...
'LookbackWindow',ewLookback,...
'InitialWeights',initialWeights)
backtestResult = backtestEngine(strategy);
% バックテスト実行
backtestResult = runBacktest(backtester,pricesTable)
function out = rebalanceFcn(weight, PriceTable)
% 省略
end
これらの関数の例にあるプログラムを実行してみると構造が理解できると思います。