From: Matthew J. <ma...@el...> - 2004-06-09 10:22:56
|
Is anyone able to explain this behaviour? From sub backtest_single in BackTest.pm: Original Code: my $p = GT::Portfolio->new; $pf_manager->set_portfolio($p); $p->set_initial_value(10000); New Code: my $store_file="/tmp/portfoliofile"; my $p = GT::Portfolio->new; $pf_manager->set_portfolio($p); $p->set_initial_value(10000); $p->store($store_file); my $p = GT::Portfolio->create_from_file($store_file); Making these changes changes the way backtest works. It does not actually apply any orders to the portfolio. Why are these not equivalent? Why isn't ->create_from_file the reverse of ->store? Raphael Hertzog wrote: >Quoting Matthew Jurgens: > > >>What's going on with this: >>./backtest.pl --start 2003-11-01 --end 2004-03-11 --store >>/opt/gt/portfolio/p5 MAJ1 osh.ax >> >>where >>Aliases::Global::MAJ1 >>SY:TFS|CS:OppositeSignal|CS:Stop:Fixed|MM:Basic|TF:LongOnly|OF:MarketPrice >>and >>Brokers::module Zebank >>and >>GT::Portfolio::Directory /opt/gt/portfolio >> >>This writes /opt/gt/portfolio/p5 as a portfolio file. >>And then >>./manage_portfolio.pl p5 report positions >>Can't locate object method "init_after_load" via package >>"GT::Brokers::Zebank" at ../GT/Serializable.pm line 251. >> >>but if I use a portfolio file created with manage_portfolio.pl then it >>works fine. >> >> > >That's because a portfolio created with manage_portfolio doesn't have >any Broker module associated to it by default. If you launch >./manage_portfolio p5 set broker Zebank >you'll then encounter the same problem. > >However I have found the problem and I committed a fix. The >serialization framework needs to load the module when re-creating the >object from scratch, otherwise any function call will fail. > >Furthermore, the suggested fix for Brokers.pm is also required. Just cvs >update and you'll be fine. > >Cheers, > > |