Kei*_*cht 2 ruby finance stocks quantitative-finance
任何人都可以帮我一个计算一系列股票交易的内部收益率的方法吗?
让我们说场景是:
$10,000 of stock #1 purchased 1/1 and sold 1/7 for $11,000 (+10%)
$20,000 of stock #2 purchased 1/1 and sold 1/20 for $21,000 (+5%)
$15,000 of stock #3 purchased on 1/5 and sold 1/18 for $14,000 (-6.7%)
Run Code Online (Sandbox Code Playgroud)
这应该是有用的:http://www.rubyquiz.com/quiz156.html
但我无法弄清楚如何调整任何解决方案,因为他们假设每次回报的时间段都是一致的时期(1年).
我终于找到了我想要的东西:http://rubydoc.info/gems/finance/1.1.0/Finance/Cashflow
gem install finance
Run Code Online (Sandbox Code Playgroud)
要解决我最初发布的场景:
include Finance
trans = []
trans << Transaction.new( -10000, date: Time.new(2012,1,1) )
trans << Transaction.new( 11000, date: Time.new(2012,1,7) )
trans << Transaction.new( -20000, date: Time.new(2012,1,1) )
trans << Transaction.new( 21000, date: Time.new(2012,1,20) )
trans << Transaction.new( -15000, date: Time.new(2012,1,5) )
trans << Transaction.new( 14000, date: Time.new(2012,1,18) )
trans.xirr.apr.to_f.round(2)
Run Code Online (Sandbox Code Playgroud)
我还发现了这个简单的方法:https://gist.github.com/1364990
但是,它给了我一些麻烦.我尝试了六个不同的测试用例,其中一个会引发一个我无法调试的异常.但是这个Finance gem中的xirr()方法适用于我可以抛出的每个测试用例.