.positions--table %h5 Positions %table.bordered %thead %tr %th   %th .status Status %br Expires on %br Strategy %th.ticker .a Stock %th.strikes .a outer_strike, inner_strike %th.begin_price .a Begin outer price, delta %th.max-loss Max Loss %th.max-gain Max Gain %th .end_price End Price, delta %th .net Net Amount (%) %th .breakeven Breakeven %th.should_rollp .a should_rollp %th.next_position .a next_symbol %br next_delta %br next_outcome -# wtf caching issue?! - positions.map &:id %tbody - positions.each_with_index do |position, idx| - pos = position - if idx > 0 - prev_position = positions[idx-1] - if prev_position && position.expires_on != prev_position.expires_on %tr %td{ colspan: 18 } -# %hr .h-50px %tr{ class: [ position.strategy.kind, position.strategy.long_or_short ] } %td.actions .flex-row = button_to 'x', position_path(position), method: :delete, data: { confirm: 'Are you sure?' } = link_to '[~]', edit_position_path(position) = link_to '[refresh]', refresh_position_path(pos) - if position.next_reasons.present? && position.should_rollp && position.should_rollp > 0.5 = button_to 'Roll', roll_position_path(position) - if position.next_reasons.present? .collapse-expand{ id: "ce-p-#{position.id}" } [Reasons] = render '/iro/positions/reasons', reasons: position.next_reasons %td.status.strategy.w-200px = position.status %br = position.expires_on.to_datetime.strftime("%b %d") [#{ ( position.expires_on.to_date - Time.now.to_date ).to_i } DTE] %br %i.fa.fa-compress.collapse-expand{ id: "ce-pos-reasons-#{position.id}" } #{position.strategy} = render '/iro/strategies/show', strategy: position.strategy %td.ticker = position.stock.ticker (#{position.quantity}) %br = pp_amount position.stock.last %td.strikes .long-or-short-item .outer-strike= pp_amount position.outer_strike .inner-strike= pp_amount position.inner_strike %td.begin_price .long-or-short-item .begin-outer-price = pp_amount position.begin_outer_price D #{pp_delta position.begin_outer_delta} .begin-inner-price = pp_amount position.begin_inner_price D #{pp_delta position.begin_inner_delta} %td .max-loss= pp_amount position.max_loss * pos.q, precision: 0 %td .max-gain= pp_amount position.max_gain * pos.q, precision: 0 .max-gainp -# = pp_percent( -1 * position.max_gain / position.max_loss ) rescue '-' # undef. for covered calls %td.end_price .long-or-short-item .end-outer-price = pp_amount position.end_outer_price D #{pp_delta position.end_outer_delta} .end-inner-price = pp_amount position.end_inner_price D #{pp_delta position.end_inner_delta} %td.net .a= pp_amount position.net_amount * pos.q, precision: 0 rescue '@TODO' .a #{pp_percent position.net_amount / position.max_gain rescue '@TODO'} %td.breakeven = pp_amount pos.breakeven rescue '@TODO' %td.should_rollp #{pp_percent position.should_rollp rescue '?'} %td.next_position.mini .a= position.next_symbol .a= position.next_delta .a = pp_amount position.next_mark \=> = pp_amount position.next_outcome * 100 * position.quantity rescue nil