<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AGemBreakeven</id>
	<title>Module:GemBreakeven - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=Module%3AGemBreakeven"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:GemBreakeven&amp;action=history"/>
	<updated>2026-05-16T04:08:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=Module:GemBreakeven&amp;diff=34948&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;-- &lt;pre&gt; -- Implements {{GemBreakeven}} -- Based on https://oldschool.runescape.wiki/w/Module:Coins  local p = {}  --- Use this to create a formatted string with % -- local function breakeven_probability(uncut_,cut_) --	local math = math --    uncut = tonumber(uncut_) --      cut = tonumber(  cut_) --    p0 = uncut/cut --    breakeven_prob = math.floor(10000 * p0)/100 --    return breakeven_prob -- end  local function breakeven_level(uncut_,cut_,r_,beta_,gamma_) 	local m...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=Module:GemBreakeven&amp;diff=34948&amp;oldid=prev"/>
		<updated>2024-10-16T23:12:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt; -- Implements {{GemBreakeven}} -- Based on https://oldschool.runescape.wiki/w/Module:Coins  local p = {}  --- Use this to create a formatted string with % -- local function breakeven_probability(uncut_,cut_) --	local math = math --    uncut = tonumber(uncut_) --      cut = tonumber(  cut_) --    p0 = uncut/cut --    breakeven_prob = math.floor(10000 * p0)/100 --    return breakeven_prob -- end  local function breakeven_level(uncut_,cut_,r_,beta_,gamma_) 	local m...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt;&lt;br /&gt;
-- Implements {{GemBreakeven}}&lt;br /&gt;
-- Based on https://oldschool.runescape.wiki/w/Module:Coins&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- Use this to create a formatted string with %&lt;br /&gt;
-- local function breakeven_probability(uncut_,cut_)&lt;br /&gt;
--	local math = math&lt;br /&gt;
--    uncut = tonumber(uncut_)&lt;br /&gt;
--      cut = tonumber(  cut_)&lt;br /&gt;
--    p0 = uncut/cut&lt;br /&gt;
--    breakeven_prob = math.floor(10000 * p0)/100&lt;br /&gt;
--    return breakeven_prob&lt;br /&gt;
-- end&lt;br /&gt;
&lt;br /&gt;
local function breakeven_level(uncut_,cut_,r_,beta_,gamma_)&lt;br /&gt;
	local math = math&lt;br /&gt;
    local uncut = tonumber(uncut_)&lt;br /&gt;
	local   cut = tonumber(  cut_)&lt;br /&gt;
	local     r = tonumber(    r_)&lt;br /&gt;
	local  beta = tonumber( beta_)&lt;br /&gt;
	local gamma = tonumber(gamma_)&lt;br /&gt;
	-- Probability P of cut is&lt;br /&gt;
	--&lt;br /&gt;
	--   P = ( (level - 1)*r + beta ) / gamma&lt;br /&gt;
	--&lt;br /&gt;
	-- Breakeven Probability is given by (cut and uncut in g.p.)&lt;br /&gt;
	-- &lt;br /&gt;
	--   p0*cut - uncut = 0 &lt;br /&gt;
	-- -&amp;gt; p0 = uncut / cut&lt;br /&gt;
	--&lt;br /&gt;
	-- Define breakeven grand exchange ratios of cut and uncut alpha:&lt;br /&gt;
	-- &lt;br /&gt;
	--  alpha = cut / uncut = 1 / p0&lt;br /&gt;
	-- &lt;br /&gt;
	-- Solve for breakeven level:&lt;br /&gt;
	--&lt;br /&gt;
	--  level_0 = 1 + ( gamma - beta * alpha ) / ( alpha * r)&lt;br /&gt;
	--------------&lt;br /&gt;
	local alpha = cut/uncut -- Ratio of cut price to uncut price&lt;br /&gt;
	local breakeven_level = &amp;#039;beyond 99 (breakeven not possible)&amp;#039;&lt;br /&gt;
	if alpha &amp;gt; 1 then&lt;br /&gt;
	  local ell0  = 1 + ( gamma - beta * alpha ) / ( alpha * r )&lt;br /&gt;
	  breakeven_level = math.ceil(ell0)&lt;br /&gt;
	end&lt;br /&gt;
	return breakeven_level&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- {{GemBreakeven}} Access point&lt;br /&gt;
--&lt;br /&gt;
function p.breakeven_level(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local uncut = args[1] or args[&amp;#039;uncut&amp;#039;] or args.uncut or &amp;#039;1&amp;#039;&lt;br /&gt;
    local   cut = args[2] or args[&amp;#039;cut&amp;#039;]   or args.cut   or &amp;#039;1&amp;#039;&lt;br /&gt;
    local     r = args[3] or args[&amp;#039;r&amp;#039;]     or args.r     or &amp;#039;1&amp;#039;&lt;br /&gt;
    local  beta = args[4] or args[&amp;#039;beta&amp;#039;]  or args.beta  or &amp;#039;0&amp;#039;&lt;br /&gt;
    local gamma = args[5] or args[&amp;#039;gamma&amp;#039;] or args.gamma or &amp;#039;1&amp;#039;&lt;br /&gt;
    return breakeven_level(uncut,cut,r,beta,gamma)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- &lt;br /&gt;
-- Module access point&lt;br /&gt;
-- &lt;br /&gt;
function p._breakeven_level(uncut_,cut_,r_,beta_,gamma_)&lt;br /&gt;
	_uncut_ = tostring(uncut_)&lt;br /&gt;
      _cut_ = tostring(  cut_)&lt;br /&gt;
        _r_ = tostring(    r_)&lt;br /&gt;
     _beta_ = tostring( beta_)&lt;br /&gt;
    _gamma_ = tostring(gamma_)&lt;br /&gt;
	return breakeven_level(_uncut_,_cut_,_r_,_beta_,_gamma_)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>